数据是机器学习的必备条件,输入数据的质量高低,是影响机器学习模型效果的决定性因素条件之一。对于机器学习的学习者而言,拥有一个数据集来练手是第一步。在scikit-learn中,提供了多种构建数据的方法 在机器学习领域,有很多常用的数据集,在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为例,具体的用法如下 >>> 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两个数据,用法示意如下 >>> 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() 具体用法示例如下 >>> data = fetch_olivetti_faces() downloading Olivetti faces from https://ndownloader.figshare.com/files/5976027 to C:\Users\Desktop\scikit_learn_data 3. 模拟数据集 scikit-learn模块内置了许多随机函数来生成对应的模拟数据集,make_blobs可以生成符合正态分布的数据,用于聚类,用法如下 >>> 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]) 返回值是一个元组,第一个元素是输入矩阵,第二个元素是标签矩阵,对其数据进行可视化
>>> 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() 输出结果如下 除了该函数之外,还有一系列创建聚类数据集的函数,用法如下 >>> 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函数,用法如下
>>> data = make_classification(n_samples=100, n_features=20, n_classes=2) 针对回归算法,则采用make_regression函数,用法如下 >>> x, y= make_regression(n_samples=100, n_features=100) 4. 其他数据集 针对openml.org这一开源的机器学习网站,提供了下载其数据集的函数,用法如下
>>> mice = fetch_openml(name='miceprotein', version=4) 对于没有数据集练手的初学者而言,这个数据集的构建功能真的是及时雨,可以让我们更加专注于下游数据处理,模型搭建和验证的学习中去。
|