数据是机器学习的必备条件,输入数据的质量高低,是影响机器学习模型效果的决定性因素条件之一。对于机器学习的学习者而言,拥有一个数据集来练手是第一步。在scikit-learn中,提供了多种构建数据的方法
1. 简单数据集
在机器学习领域,有很多常用的数据集,在scikit-learn中,内置了这些常用数据集,通过对应的函数可以直接加载,对于回归算法而言,常用数据集的加载函数如下
1. load_boston()
2. load_diabetes()
3. load_linnerud()
对于分类算法而言,常用数据集的加载函数如下
1. load_iris()
2. load_digits()
3. load_wine()
4. load_breast_cancer()
以load_iris为例,具体的用法如下
代码语言:javascript复制>>> from sklearn.datasets import *
>>> data = load_iris()
>>> data['data']
array([[5.1, 3.5, 1.4, 0.2],
[4.9, 3. , 1.4, 0.2],
[4.7, 3.2, 1.3, 0.2],
[4.6, 3.1, 1.5, 0.2],
[5. , 3.6, 1.4, 0.2],
[5.4, 3.9, 1.7, 0.4],
...
)
>>> data['target']
array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2])e 00, 1.1930e 01, ..., 2.1000e 01, 3.9690e 02,
7.8800e 00]])
返回结果是一个类似字典的结构,data对应输入矩阵,每一行表示一个样本,每一列表示一个特征,target表示的是输入矩阵中的样本对应的标签。
也可以修改参数,分别返回data和taret两个数据,用法示意如下
代码语言:javascript复制>>> data, target = load_boston(return_X_y=True)
2. 真实数据集
这里的真实数据集也是经典的数据集之一,只不过数据量较大,所以没有内置在模块中,采用了从网络上下载的方式,对于回归算法而言,有以下加载函数
1. fetch_california_housing()
对于分类算法而言,有以下加载函数
1. fetch_olivetti_faces()
2. fetch_20newsgroups()
3. fetch_20newsgroups_vectorized()
4. fetch_lfw_people()
5. fetch_lfw_pairs()
6. fetch_covtype()
7. fetch_rcv1()
8. fetch_kddcup99()
具体用法示例如下
代码语言:javascript复制>>> data = fetch_olivetti_faces()
downloading Olivetti faces from https://ndownloader.figshare.com/files/5976027 to C:UsersDesktopscikit_learn_data
3. 模拟数据集
scikit-learn模块内置了许多随机函数来生成对应的模拟数据集,make_blobs可以生成符合正态分布的数据,用于聚类,用法如下
代码语言:javascript复制>>> x, y = make_blobs(n_samples=1500, n_features=2, centers=5)
>>> x
array([[ -0.17476007, -2.46118032],
[ -7.24974641, 0.92076097],
[ -6.80973566, 2.33981818],
...,
[ -8.53139709, 2.23953355],
[-10.26433682, -7.20290879],
[ -8.0502808 , 1.12071754]])
>>> y
array([4, 2, 2, ..., 2, 3, 2])
返回值是一个元组,第一个元素是输入矩阵,第二个元素是标签矩阵,对其数据进行可视化
代码语言:javascript复制>>> import matplotlib.pyplot as plt
>>> plt.scatter(x[:, 0], x[:, 1], marker='o', c=y, s=25, edgecolor='k')
<matplotlib.collections.PathCollection object at 0x1108E730>
>>> plt.show()
输出结果如下
除了该函数之外,还有一系列创建聚类数据集的函数,用法如下
代码语言:javascript复制>>> x, y = make_blobs(n_samples=100, n_features=2)
>>> x, y = make_gaussian_quantiles(n_samples=100, n_features=2, n_classes=3)
>>> x, y = make_hastie_10_2(n_samples=12000)
>>> x, y = make_multilabel_classification(n_samples=100, n_features=20, n_classes=5, n_labels=2)
针对分类算法,则采用make_classification函数,用法如下
代码语言:javascript复制>>> data = make_classification(n_samples=100, n_features=20, n_classes=2)
针对回归算法,则采用make_regression函数,用法如下
代码语言:javascript复制>>> x, y= make_regression(n_samples=100, n_features=100)
4. 其他数据集
针对openml.org这一开源的机器学习网站,提供了下载其数据集的函数,用法如下
代码语言:javascript复制>>> mice = fetch_openml(name='miceprotein', version=4)
对于没有数据集练手的初学者而言,这个数据集的构建功能真的是及时雨,可以让我们更加专注于下游数据处理,模型搭建和验证的学习中去。
·end·