使用scikit-learn构建数据集

2021-01-25 10:51:24 浏览数 (1)

数据是机器学习的必备条件,输入数据的质量高低,是影响机器学习模型效果的决定性因素条件之一。对于机器学习的学习者而言,拥有一个数据集来练手是第一步。在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·

0 人点赞