3.2.2 scikit-learn中的数据集

scikit-learn是Python中进行数据挖掘和建模中常用的机器学习工具包。scikit-learn的datasets模块主要提供了一些导入、在线下载及本地生成数据集的方法。模块的主要函数如表3-4所示,将在3.3节中讲解。

表3-4 datasets模块主要函数

自带数据集的datasets模块里包含自带数据集,使用load_*加载即可,使用示例如下所示。


from sklearn.datasets import load_iris
data = load_iris()
# 查看数据描述
print(data.DESCR)
X = data.data
y = data.target

自带数据集的基本信息如表3-5所示。

表3-5 scikit-learn自带数据集

在线下载数据集的datasets模块包含在线下载数据集的方法,调用fetch_*接口从网络下载,示例如下所示。


from sklearn.datasets import fetch_20newsgroups
newsgroups_train = fetch_20newsgroups(subset='train')
newsgroups_test = fetch_20newsgroups(subset='test')

注意,fetch_*接口由于需要从国外网址下载数据,速度可能很慢!在线下载数据集的基本信息如表3-6所示。

表3-6 scikit-learn在线下载数据集

scikit-learn包括用于以svmlight/libsvm格式加载数据集的实函数。在这种格式中,每一行都采用表格,此格式特别适用于稀疏数据集。在该模块中,使用SciPy稀疏CSR矩阵,并使用numpy数组,示例如下。svmlight/libsvm格式的公共数据集可以从网上下载[1]


from  sklearn.datasets  import  load_svmlight_file 
X_train , y_train  =  load_svmlight_file ("/ path / to / train_dataset.txt " )newsgroups_test = fetch_20newsgroups(subset='test')

openml.org是机器学习数据和实验的公共存储库,允许每个人上传开放数据集。sklearn.datasets能够从存储库下载数据集。示例如下:


from sklearn.datasets import fetch_openml
mice = fetch_openml(name='miceprotein', version=4)
print(mice.DESCR) 
mice.url

更多数据集信息描述请查看官网[2]。下面对自带数据集序号1、2、3的数据集做简单的介绍,读者也可以使用data.DESCR,查看其英文描述。

(1)波士顿房价数据

这个数据集包含了506处波士顿不同地理位置的房产的房价数据(因变量),房屋以及房屋周围的详细信息(自变量),其中包含城镇犯罪率、一氧化氮浓度、住宅平均房间数等13个维度的数据,波士顿房价数据集能够应用到回归问题上。波士顿房价数据集与属性描述如下所示。

·CRIM:城镇人均犯罪率。

·ZN:住宅用地超过25000平方英尺的比例。

·INDUS:城镇非零售商用土地的比例。

·CHAS:查理斯河空变量(如果边界是河流,则为1;否则为0)。

·NOX:一氧化氮浓度。

·RM:住宅平均房间数。

·AGE:1940年之前建成的自用房屋比例。

·DIS:到波士顿五个中心区域的加权距离。

·RAD:辐射性公路的接近指数。

·TAX:每10000美元的全值财产税率。

·PTRATIO:城镇师生比例。

·MEDV:自住房的平均房价,以千美元计。

(2)鸢尾花数据集

鸢尾花数据集是一个非常经典的数据集,著名的统计学家Fisher在研究判别分析问题时收集了一些关于鸢尾花的数据,包含了150个鸢尾花样本,对应3种鸢尾花,各50个样本,以及它们各自对应的4种关于外形的数据(自变量)。该数据集可用于多分类问题,测量数据如下所示。

·sepal length(cm):萼片长度。

·sepal width(cm):萼片宽度。

·petal length(cm):花瓣长度。

·petal width(cm):花瓣宽度。

类别共分为三类:Iris Setosa、Iris Versicolour和Iris Virginica。

(3)手写数字数据集

这个数据集是结构化数据的经典数据,共有1797个样本,每个样本有64个元素,对应一个8×8像素点组成的矩阵,矩阵中值的范围是0~16,代表颜色的深度,控制每一个像素的黑白浓淡,所以每个样本还原到矩阵后代表一个手写体数字。

[1] https://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets

[2] https://www.openml.org/search?type=data