sklearn 简介
下载安装sklearn
pip install scikit-learn
# 或者
conda install scikit-learn
There is an open-source, commercially usable machine learning toolkit called scikit-learn. This toolkit contains implementations of many of the algorithms that you will work with in this course.
scikit-learn,又写作sklearn,是一个开源的基于python语言的非常强大的机器学习工具包。它通过NumPy, SciPy和Matplotlib等python数值计算的库实现高效的算法应用,包含了从数据预处理到训练模型的各个方面,涵盖了几乎所有主流机器学习算法。
sklearn估计器(Estimator)估计器通常包含以下几个方法:
fit(x,y) :传入数据以及标签即可训练模型,训练的时间和参数设置,数据集大小以及数据本身的特点有关
score(x,y)用于对模型的正确率进行评分(范围0-1)。但由于对在不同的问题下,评判模型优劣的的标准不限于简单的正确率,可能还包括召回率或者是查准率等其他的指标,特别是对于类别失衡的样本,准确率并不能很好的评估模型的优劣。
predict(x)用于对数据的预测,它接受输入,并输出预测标签,输出的格式为numpy数组。我们通常使用这个方法返回测试的结果,再将这个结果用于评估模型。
1、用于分类的估计器:
- sklearn.neighbors k-近邻算法
- sklearn.naive_bayes 贝叶斯
- sklearn.linear_model.LogisticRegression 逻辑回归
- sklearn.tree 决策树与随机森林
2、用于回归的估计器:
- sklearn.linear_model.LinearRegression 线性回归
- sklearn.linear_model.Ridge 岭回归
3、用于无监督学习的估计器
- sklearn.cluster.KMeans 聚类
sklearn转化器(Transformer)用于对数据的处理,例如标准化、降维以及特征选择等等:
fit(x,y) :该方法接受输入和标签,计算出数据变换的方式。
transform(x) :根据已经计算出的变换方式,返回对输入数据x变换后的结果(不改变x)
fit_transform(x,y) :该方法在计算出数据变换方式之后对输入x就地转换。
sklearn包含的数据集
参阅官方文档:https://scikit-learn.org/stable/datasets.html#datasets
- 自带的小数据集(Toy datasets):sklearn.datasets.load_name
- 真实世界中的数据集(Real world datasets):sklearn.datasets.make_name
- 生成的数据集(Generated datasets)
- 从外部加载数据集(Loading other datasets)
机翻如下:
Scikit-Learn加载的数据集通常具有类似的字典结构:
- DESCR键,描述数据集。
- data键,包含一个数组,每个实例为一行,每个特征为一列。
- target键,包含一个带有标签的数组。
下面详细展开。
1. 微型数据集 (Toy datasets)
scikit-learn comes with a few small standard datasets that do not require to download any file from some external website. scikit-learn附带了一些小型标准数据集,这些数据集不需要从外部网站下载任何文件。
鸢尾花数据集(分类模型) Iris database
The famous Iris database, first used by Sir R.A. Fisher. The dataset is taken from Fisher’s paper. Note that it’s the same as in R, but not as in the UCI Machine Learning Repository, which has two wrong data points.
著名的Iris数据库,由R.A.Fisher爵士首次使用。数据集取自Fisher的论文。请注意,它与R中的相同,但与UCI机器学习库中的不同,后者有两个错误的数据点。
This is perhaps the best known database to be found in the pattern recognition literature. Fisher’s paper is a classic in the field and is referenced frequently to this day. (See Duda & Hart, for example.) The data set contains 3 classes of 50 instances each, where each class refers to a type of iris plant. One class is linearly separable from the other 2; the latter are NOT linearly separable from each other.
这也许是模式识别文献中最著名的数据库。费舍尔的论文是该领域的经典,至今仍被频繁引用。(例如,参见Duda&Hart。)数据集包含3类,每类50个实例,其中每类都指一种鸢尾属植物。一个类与另一个2是线性可分离的;后者彼此不是线性可分离的。
鸢尾花数据集:
鸢尾花数据集:
特征:萼片长度(厘米)、萼片宽度(厘米)、花瓣长度(厘米)、花瓣宽度(厘米)
标签:鸢尾花-塞托萨setosa、虹膜花色versicolor、鸢尾花-维吉尼卡virginica
# 示例
from sklearn.datasets import load_iris
data = load_iris() #这是sklearn.utils.Bunch类型的值
# dict_keys(['data', 'target', 'frame', 'target_names', 'DESCR', 'feature_names', 'filename', 'data_module'])
print(data.keys())
#可以看到三类目标类型的名称为:['setosa', 'versicolor', 'virginica']
print(data.target_names)
#可以看到特征名称为:['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']
print(data.feature_names)
# 第一行特征数据[5.1 3.5 1.4 0.2]
print(data.data[0])
# 第一行特征数据对应的标签 0
print(data.target[0])
糖尿病数据集(回归模型) diabetes
Ten baseline variables, age, sex, body mass index, average blood pressure, and six blood serum measurements were obtained for each of n = 442 diabetes patients, as well as the response of interest, a quantitative measure of disease progression one year after baseline.
为n=442名糖尿病患者中的每一位患者获得了10个特征向量,即年龄、性别、体重指数、平均血压和6个血清测量值,以及感兴趣的反应,这是基线后一年疾病进展的定量测量值。
n_samples
(i.e. the sum of squares of each column totals 1).
注意:这10个特征中的每个特征都已经被处理成0均值,方差归一化的特征值。
from sklearn.datasets import load_diabetes # 导入库
diabetes = load_diabetes() # 导入糖尿病数据
# dict_keys(['data', 'target', 'frame', 'DESCR', 'feature_names', 'data_filename', 'target_filename', 'data_module'])
print(diabetes.keys())
# 特征名称:['age', 'sex', 'bmi', 'bp', 's1', 's2', 's3', 's4', 's5', 's6']
print(diabetes.feature_names)
# 第一个标签值:151
print(diabetes.target[0])
# 可以查看数据集描述
print(diabetes.DESCR)
其中 print(diabetes.DESCR)
的输出为:
手写数字识别的数据集(分类)
参阅:7.1.3. Optical recognition of handwritten digits dataset
Optical recognition of handwritten digits dataset
Data Set Characteristics:
:Number of Instances: 1797 :Number of Attributes: 64 :Attribute Information: 8x8 image of integer pixels in the range 0..16. :Missing Attribute Values: None :Creator: E. Alpaydin (alpaydin '@' boun.edu.tr) :Date: July; 1998
This is a copy of the test set of the UCI ML hand-written digits datasets https://archive.ics.uci.edu/ml/datasets/Optical+Recognition+of+Handwritten+Digits
The data set contains images of hand-written digits: 10 classes where each class refers to a digit.
from sklearn.datasets import load_digits
digits = load_digits()
print(digits.data.shape) # (1797, 64)
# 查看第一张图片
import matplotlib.pyplot as plt
plt.gray()
plt.matshow(digits.images[0])
plt.show()
体育锻炼模型(多输出回归) Linnerrud dataset
一个很小的数据集,记录锻炼(exercise )时, 生理(physiological )的变化。Linnerud数据集是一个多输出回归数据集。它由三个运动(数据)和三个生理(目标)变量组成,这些变量来自健身俱乐部的20名中年男性。数据集共包含20个样本,每个样本包含6个特征变量,这个数据较少使用。用于探索生理指标和运动状态之间的关系。
Linnerrud 数据集包含20个人的三项生理指标(体重,脉搏和腰围)以及三个相应的运动状态(静止,体前屈和跳跃)。该数据集可数据集中的变量已经经过标准化处理,并进行了均值中心化。该数据集最初由Linnerrud等人于1979年发布。 physiological - 包含3个生理变量的20个观测值的CSV文件: 体重,腰围和脉搏。 exercise - 包含3个运动变量的20个观测值的CSV文件: 引体向上,仰卧起坐和跳跃。
:Number of Instances: 20 :Number of Attributes: 3 :Missing Attribute Values: None
The Linnerud dataset is a multi-output regression dataset. It consists of three exercise (data) and three physiological (target) variables collected from twenty middle-aged men in a fitness club:
- physiological - CSV containing 20 observations on 3 physiological variables: Weight, Waist and Pulse.
- exercise - CSV containing 20 observations on 3 exercise variables: Chins, Situps and Jumps.
from sklearn.datasets import load_linnerud
data = load_linnerud()
葡萄酒识别数据集(多分类模型) Wine recognition dataset
葡萄酒识别数据集(Wine Recognition dataset)共178个样本,代表了三种不同葡萄酒(分别有59,71,48个样本),以及与之对应的13种不同的化学特征,这些化学特征包括酸度、灰分、酒精浓度等,适用于分类任务。
该数据集是由UCI机器学习库提供,并且已经被广泛用于分类和聚类任务,作为基准测试数据集之一。
from sklearn.datasets import load_wine
data = load_wine() #这是sklearn.utils.Bunch类型的值
print(data.DESCR) #查看详细信息
可以看到葡萄酒分类数据的详细信息如下:
威斯康辛州乳腺癌数据集 Breast cancer wisconsin (diagnostic) dataset
包含了威斯康辛州记录的569个病人的乳腺癌恶性/良性(1/0)类别型数据,以及与之对应的10个维度的生理指标数据,包括肿瘤大小、形状、密度等信息,适用于二分类问题。该数据集最初由 Dr. William H. Wolberg 在 1995 年发布。
569个样本,每个样本有10*3组数据,10组数据的均值,方差,最大值。
Classes | 2 |
---|---|
Samples per class | 212(M),357(B) |
Samples total | 569 |
Dimensionality | 30 |
Features | real, positive |
from sklearn.datasets import load_breast_cancer
cancer = load_breast_cancer()
2. 真实世界数据集 Real world datasets
scikit-learn 提供加载较大数据集的工具,并在必要时可以在线下载这些数据集,用datasets.fetch_xx()
加载。
加州房价数据集(回归) fetch_california_housing
加州房价数据集是一个广泛使用的机器学习数据集,用于预测加州不同地区房屋价格的中位数。该数据集包含了1990年加州的所有普查区域,共计20640个实例。每个实例包含了8个特征:人口中位数、房屋总数、卧室总数、年收入中位数、房屋价值中位数、海拔、纬度和经度。这些特征被用来预测该地区房屋价格的中位数。
该数据集来自1990年美国人口普查,每个人口普查区块组使用一行。街区小组是美国人口普查局发布样本数据的最小地理单位(街区小组通常人口为600至3,000人)。目标变量是加利福尼亚地区的房屋中位价,以美元的十万位($100,000)为单位。
该数据集广泛应用于机器学习领域,特别是在回归问题上。许多机器学习算法和模型都使用该数据集进行训练和测试,例如线性回归、决策树、随机森林、神经网络等。该数据集也经常用于教学和研究目的,因为它简单易懂,且包含了多种类型的特征和一个具有挑战性的回归任务。
一个家庭是居住在同一住所的人群。由于该数据集提供了每个家庭的平均房间数和卧室数,因此对于一些家庭较少、空房屋较多的区域,如度假村,这些列可能会取得意外大的值。
from sklearn.datasets import fetch_california_housing
mypath = 'D:\\mypath' #指定数据存储路径
house_data = fetch_california_housing(data_home= mypath)
print(dir(house_data)) #['DESCR', 'data', 'feature_names', 'frame', 'target', 'target_names']
print(house_data.DESCR) #查看详细信息
人脸识别数据集 Olivetti faces dataset
Olivetti faces dataset是一个经典的人脸识别数据集,包含40个人的400张人脸图像。每个人都有10张不同表情和面部变化的照片。这些图像是在不同的时间和不同的光照条件下拍摄的。图像被量化为256灰度级并存储为无符号的8位整数。加载程序会将这些值转换为[0,1]区间内的浮点值。该数据库的“类别标签”是从0到39的整数,表示被摄人物的身份。但是,每个类只有10个示例,相对较小。
类别数 |
40 |
样本总量 |
400 |
维度 |
4096 |
特征 |
实数,0到1之间 |
40个不同主题,每一个主题都有十张不同的图像。对于某些对象,图像是在不同的时间拍摄的,光线,面部表情(睁开/闭合的眼睛,微笑/不微笑)和面部细节(眼镜/不戴眼镜)均不同。所有图像都是在深色均匀背景下拍摄的,对象处于直立的,正面的位置(允许某些侧向移动)。
The original dataset consisted of 92 x 112, while the version available here consists of 64x64 images. When using these images, please give credit to AT&T Laboratories Cambridge. 原始数据集包含92 x 112,而这里的版本是64x64的图像。 能使用这些图像,请归功于AT&T剑桥实验室。
20类新闻文本 fetch_20newsgroups
fetch_20newsgroups()用于文本分类、文本挖据和信息检索研究的国际标准数据集之一。数据集收集了大约20,000左右的新闻组文档,均匀分为20个不同主题的新闻组集合。包含18000多篇新闻文章,一共涉及到20种话题,所以称作20newsgroups text dataset,分为两部分:训练集和测试集,通常用来做文本分类,均匀分为20个不同主题的新闻组集合。20newsgroups数据集是被用于文本分类、文本挖据和信息检索研究的国际标准数据集之一。
fetch_20newsgroups(data_home=None, # 文件下载的路径
subset='train', # 加载那一部分数据集 train/test
categories=None, # 选取哪一类数据集[类别列表],默认20类
shuffle=True, # 将数据集随机排序
random_state=42, # 随机数生成器
remove=(), # ('headers','footers','quotes') 去除部分文本
download_if_missing=True # 如果没有下载过,重新下载
)
news = fetch_20newsgroups(subset='all')
from sklearn.datasets import fetch_20newsgroups
lfw_news = fetch_20newsgroups()
print(dir(lfw_news))
print(lfw_news.DESCR)
类别数 |
20 |
样本总量 |
18846 |
维度 |
1 |
特征 |
文本数据 |
LFW 人脸数据集 The Labeled Faces in the Wild face recognition dataset
该数据集包含了超过 13,000 张人脸图像,每个图像都有一个标签指示该人的身份。该数据集最初由 Gary B. Huang, Vidit Jain 和 Erik Learned-Miller 在 2007 年发布。
每张图片均以一张脸为中心。典型的任务称为人脸验证:给定一对两张图片,二进制分类器必须预测这两个图片是否来自同一个人。另一种任务是“人脸验证”或“人脸识别”:给定未知人物的面部图片,通过参考先前看到的已识别人物图片库来识别人物姓名。人脸验证和人脸识别都是典型的任务,都是在一个经过训练的模型的输出上执行的。最流行的人脸检测模型称为Viola-Jones,在OpenCV库中实现。 该人脸检测器从各种网络中提取LFW人脸图片。
类别 |
5749 |
样本总数 |
13233 |
维度 |
5828 |
特征 |
实数,介于0和255之间 |
from sklearn.datasets import fetch_lfw_people
lfw_people = fetch_lfw_people()
print(dir(lfw_people))
print(lfw_people.DESCR)
根据输出的信息,我们可以看到:数据集大小超过了200MB,官方提供了两种加载方式
方式一:选取出数据集中单人照片超过70张的照片。用于人脸识别任务,多分类
from sklearn.datasets import fetch_lfw_people
lfw_people = fetch_lfw_people(min_faces_per_person=70, resize=0.4)
方式二:每个样本是一对照片,判断属于或不属于一个人。通常用于面部验证任务
from sklearn.datasets import fetch_lfw_pairs
lfw_pairs_train = fetch_lfw_pairs(subset='train')
森林覆盖类型数据集(分类) Forest covertypes
该数据集中的每个样本对应于美国30m×30m的森林斑块,是为了预测每个斑块的覆盖类型(即树木的主要树种)而收集的。有七个覆盖类型,这使其成为多类分类问题。每个样本都有54个特征,在数据集的首页上进行了介绍 。其中一些特征是布尔类型,而其他特征则是离散或连续的测量值。
类别数 |
7 |
样本总数 |
581012 |
维度 |
54 |
特征 |
整形数据 |
路透社语料第一卷(多分类问题) RCV1 dataset
路透社语料库第一卷(RCV1)是一个由路透社有限公司为研究目的提供的超过80万个手动分类的新闻报道的档案。用于文本分类和信息检索任务。这个数据集由路透社新闻的实时新闻和存档组成,每篇文章都被标记为与之相关的主题和一个或多个地理位置。RCV1数据集是一个多分类问题,其中类别是新闻主题的集合。这个数据集已经成为文本分类和信息检索领域中的一个基准数据集,被广泛使用来评估不同的算法和技术。
网络入侵检测数据集 fetch_kddcup99
The KDD Cup ‘99 dataset was created by processing the tcpdump portions of the 1998 DARPA Intrusion Detection System (IDS) Evaluation dataset, created by MIT Lincoln Lab.
KDD Cup'99数据集是通过处理1998年DARPA入侵检测系统(IDS)评估数据集的tcpdump部分创建的,该数据集由麻省理工学院林肯实验室创建。
KDD Cup数据集是一个用于数据挖掘竞赛的标准数据集,最初由KDD(Knowledge Discovery and Data Mining)国际会议创建。其中最著名的数据集是KDD Cup 1999,该数据集涵盖了一个模拟网络入侵的数据集,用于研究网络入侵检测方法。该数据集包括了24个属性特征,如源IP地址、目标IP地址、连接持续时间等。其中,大部分属性特征是离散的,少数属性特征是连续的。该数据集包含5百万个数据记录,其中大多数是正常连接,只有少数是恶意攻击连接。数据集已经成为网络入侵检测算法研究的标准数据集之一,被广泛应用于相关研究和应用领域。
关注一个参数:
sklearn.datasets.fetch_kddcup99(*, subset=None, data_home=None, shuffle=False, random_state=None, percent10=True, download_if_missing=True, return_X_y=False, as_frame=False)
Parameters: subset{‘SA’, ‘SF’, ‘http’, ‘smtp’}, default=None
To return the corresponding classical subsets of kddcup 99. If None, return the entire kddcup 99 dataset.
3.生成数据集 Generated datasets
scikit-learn还包括各种随机样本生成器 可用于构建大小和复杂性受控的人工数据集。
sklearn.datasets.make_blobs(n_samples=100, n_features=2, *, centers=None, cluster_std=1.0, center_box=(-10.0, 10.0), shuffle=True, random_state=None, return_centers=False)
sklearn.datasets.make_classification(n_samples=100, n_features=20, *, n_informative=2, n_redundant=2, n_repeated=0, n_classes=2, n_clusters_per_class=2, weights=None, flip_y=0.01, class_sep=1.0, hypercube=True, shift=0.0, scale=1.0, shuffle=True, random_state=None)
sklearn.datasets.make_gaussian_quantiles(*, mean=None, cov=1.0, n_samples=100, n_features=2, n_classes=3, shuffle=True, random_state=None)
参阅文档:
官方文档
scikit-learn中文社区
4.加载其他数据集 Loading other datasets
样本图片 Sample images
Scikit-learn还嵌入了一些示例 JPEG 图像,由它们的作者在知识共享许可下发布。这些图像可以用于测试算法和2维数据通道。
from sklearn.datasets import load_sample_images
dataset = load_sample_images()
print(len(dataset.images) ) # 2
first_img_data = dataset.images[0]
import matplotlib.pyplot as plt
print(first_img_data.shape) # (427, 640, 3)
print(first_img_data.dtype) # uint8
plt.imshow(first_img_data)
plt.show()
svmlight或libsvm格式的数据 Datasets in svmlight / libsvm format
数据集网址:https://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/
from sklearn.datasets import load_svmlight_file
X_train, y_train = load_svmlight_file("/path/to/train_dataset.txt")
从openml.org存储库下载数据集 Downloading datasets from the openml.org repository
openml.org 是一个用于机器学习数据和实验的公共存储库,它允许每个人上传开放的数据集,可以通过sklearn.datasets.fetch_openml()函数来从openml.org下载数据集。
For example, to download a dataset of gene expressions in mice brains:
from sklearn.datasets import fetch_openml
mice = fetch_openml(name='miceprotein', version=4, parser="auto")
从外部(本地csv文件等)加载数据
通过下面的程序可以了解 DataFrame
数据结构
数据处理分析库 pandas工具包
import pandas as pd
这里要重点谈一下 pd.read_csv
函数
#导入pandas库,并取别名为pd
import pandas as pd
#books.csv与项目不在同一文件夹下使用绝对路径,返回值是DataFrame数据结构
books = pd.read_csv('D:\\coder\\python_program\\Books.csv')
#查看books的行和列
print(books.shape)
#查看
print(list(books.columns))
print(books.head())
读入csv文件:
import pandas as pd
df = pd.read_csv('./data/mydata.csv') #默认把数据表中第一行作为列名称,读取完成后最左侧增加一列索引列
#展示读取到的数据,默认值为前五条
df.head()
df.head(10) #展示前10条数据
df.tail() #展示最后5条数据
df.info() #打印读取数据的基本信息:数据规模、列名称等
df.columns() #输出每一列表头名称
df.dtypes() #输出每一列数据的类型;object表示Python中的字符串
# 如果数据中有某列名称为'age'
data=df['age'] #获取该列数据
df = df.set_index('name') #指定name列数据作为索引列,而不是默认的数字索引
df.sum() #默认对每列进行求和,等同于df.sum(axis=0)
df.sum(axis = 1) #按行求和
#另有:均值df.mean()、中位数df.median()、df.max()、df.min()
df.describe() #按列计算,查看所有数据的统计结果:数据个数、均值、标准差、最值等
df.cov() #协方差矩阵
df.corr() #相关系数
参数名 | 功能以及含义 |
---|---|
filepath_or_buffer | 字符串。任何有效的字符串路径都可以,网址也行。 |
sep | 字符串,表示分隔符,默认为’,’ .。一个字符及以上都可以,注意如果是转义字符要加’’ |
delimiter | 字符串,sep的别名,默认None |
header | int或者int列表,默认由推断出来。这是用于规定列名的行号。 |
names | 类似于数组结构,选择性使用。这是要使用的列名称列表,与header共同使用。 |
index_col | 整数或者字符串或者整数/字符串列表。指定用作的行标签的列。 |
usecols | 列表,可用可不用。功能是返回列的子集。 |
squeeze | 布尔值,默认为False。如果解析的数据仅包含一列,则返回一个Series |
prefix | 字符串,选择性使用。没有标题时要添加到列号的前缀 |
mangle_dupe_cols | 布尔值,默认为True。重复的列将被指定为“ X”,“ X.1”,……“ X.N”,而不是“ X”……“ X”。如果列中的名称重复,则False将导致数据被覆盖。 |
dtype | 类型名称或者类型列的字典,选择性使用。数据或列的数据类型。 |
engine | {‘c’, ‘python’},选择性使用。要使用的解析器引擎。C引擎速度更快,而python引擎当前功能更完善。 |
converters | 字典,选择性使用。转换器,用于转换某些列中的值的函数的字典。键可以是整数或列标签。 |
true_value | 列表,选择性使用。视为True的值 |
false_values | 列表,选择性使用。视为False的值 |
skipinitialspace | 布尔值,默认为False。在定界符后跳过空格。 |
skiprows | 列表或者整数,选择性使用。在文件开始处要跳过的行号(索引为0)或要跳过的行数(整数)。 |
skipfooter | 整数,默认为0。要跳过的文件底部的行数(不支持engine =‘c’)。 |
nrows | 整数,选择性使用。要读取的文件行数。对于读取大文件很有用。 |
na_values | 标量,字符串,类似列表的字典,选择性使用。识别为NA / NaN的其他字符串。如果dict通过,则为特定的每列NA值。默认情况下,以下值解释为NaN:’’,’#N / A’,’#N / AN / A’,’#NA’,’-1.#IND’,’-1.#QNAN’, ‘-NaN’,’-nan’,‘1.#IND’,‘1.#QNAN’,’’,‘N / A’,‘NA’,‘NULL’,‘NaN’,‘n / a’,‘nan’,‘null’。 |
keep_default_na | 布尔值,默认为True。解析数据时是否包括默认的NaN值。 |
na_filter | 布尔值,默认为True。检测缺失值标记(空字符串和na_values的值)。请注意,如果将na_filter传递为False,则将忽略keep_default_na和 na_values参数。 |
verbose | 布尔值,默认为False。指示放置在非数字列中的NA值的数量。 |
skip_blank_lines | 布尔值,默认为True。如果为True,跳过空白行,并且不解释为NaN值。 |
parse_dates | 布尔值,整数列表,名称列表,列表或字典的列表。默认为False。功能是解析为时间。 |
infer_datetimes_format | 布尔值,默认为False。如果启用True和parse_dates,则pandas将尝试推断列中日期时间字符串的格式,并且如果可以推断出日期格式,就会切换到更快的解析它们的方法。 |
keep_date_col | 布尔值,默认为False。如果True和parse_dates指定合并多个列,则保留原始列。 |
date_parser | 函数,选择性使用。用于将字符串列序列转换为日期时间实例数组的函数。 |
dayfirst | 布尔值,默认为False。DD / MM格式的日期,国际和欧洲格式。 |
cache_dates | 布尔值,默认为True。如果为True,则使用唯一的转换日期缓存来应用datetime转换。 |
iterator | 布尔值,默认为False。返回TextFileReader对象以进行迭代或使用获取块 get_chunk()。 |
chunksize | 整数,选择性使用。返回TextFileReader对象以进行迭代。 |
compression | {‘infer’, ‘gzip’, ‘bz2’, ‘zip’, ‘xz’, None},默认为’infer’。用于对磁盘数据进行即时解压缩。设置为“无”将不进行解压缩。 |
thousands | 字符串,选择性使用。千位分隔符。 |
decimal | 字符串,默认为’.’。识别为小数点的字符(例如,对于欧洲数据,请使用“,”)。 |
lineterminator | 长度为1的字符串,选择性使用。用于将文件分成几行的字符。仅对C解析器有效。 |
quotechar | 长度为1的字符串,选择性使用。用于表示引用项目的开始和结束的字符。 |
quoting | 整数或者csv.QUOTE_ 实例,默认为0。每个csv.QUOTE_常量的控制字段引用行为。使用QUOTE_MINIMAL(0),QUOTE_ALL(1),QUOTE_NONNUMERIC(2)或QUOTE_NONE(3)中的一种。 |
doublequote | 布尔值,默认为True。如果指定quotechar而未使用引号QUOTE_NONE,则指示是否将一个字段内的两个连续的quotechar元素解释为单个quotechar元素。 |
escapechar | 长度为1的字符串,选择性使用。 一字符字符串,用于转义其他字符。 |
comment | 字符串,选择性使用。指示不应分析行的其余部分。如果在一行的开头找到该行,则将完全忽略该行。此参数必须是单个字符。 |
encoding | 字符串,选择性使用。读/写时用于UTF的编码(例如’utf-8’)。 |
dialect | 字符串或者csv.Dialect,选择性使用。如果提供的话,该参数将覆盖为以下参数的值(默认或不):delimiter, doublequote, escapechar, skipinitialspace, quotechar, and quoting。 |
error_bad_lines | 布尔值,默认为True。 默认情况下,具有太多字段的行(例如,带有太多逗号的csv行)将引发异常,并且不会返回任何DataFrame。如果为False,则这些“坏行”将从返回的DataFrame中删除。 |
warn_bad_lines | 布尔值,默认为True。如果error_bad_lines为False,而warn_bad_lines为True,则将为每个“坏行”输出警告。 |
delim_whiterspace | 布尔值,默认为False。指定是否将空格(例如或)用作分隔符。 |
low_memory | 布尔值,默认为True。在内部对文件进行分块处理,从而在解析时减少了内存使用。 |
memory_map | 布尔值,默认为False。如果为filepath_or_buffer提供了文件路径,则将文件对象直接映射到内存中,然后直接从那里访问数据。使用此选项可以提高性能,因为不再有任何I / O开销。 |
float_precision | 字符串,选择性使用。指定C引擎应将哪个转换器用于浮点值。 |
storage_option | 字典,选择性使用。解析特殊的URL。如果为该参数提供非fsspec URL,则会引发错误。 |
保存数据到csv
import pandas as pd
col_names = ['列名1', '列名称2', '列名称3' ]
df = pd.DataFrame(data=None,columns=col_names) # 得到空的DataFrame,但包含列名称
test_data1 = [1,2,3]
test_data2 = [4,5,6]
df.loc[1] = test_data1 # 1 为索引
df.loc[2] = test_data2
df.to_csv("test.csv")
数据集划分
将数据集划分为训练集和测试集
sklearn.model_selection.train_test_split(*arrays, test_size=None, train_size=None, random_state=None, shuffle=True, stratify=None)[source]
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
iris = load_iris()
x_train, x_test, y_train, y_test = train_test_split(iris.data, iris.target, random_state=22)
- x 数据集的特征值
- y 数据集的标签值
- test_size 测试集的大小,一般为float
- random_state 随机数种子,不同的种子会造成不同的随机采样结果。相同的种子采样结果相同。
- return 测试集,特征训练集特征值值,训练标签,测试标签(默认随机取)
- 只有当shuffle=True时,random_state才起作用或者说才有意义
另外可以参阅下面的表格:
好了,以上应该够用了!
参阅