scikit-learn提供了一些标准的数据集,例如用于分类的 iris 和digits数据集,用于回归的boston house prices数据集。
在下文中,通过代码演示加载 iris 和 digits数据集。由于我电脑装的Anaconda,里面的是IPython2.7版本,若是python 3.5以上的,代码自行略微修改。
# -*- coding: utf-8 -*-
#从sklearn导入数据集
from sklearn import datasets
iris = datasets.load_iris()
digits = datasets.load_digits()
数据集是一个类似字典的对象,它保存所有数据和一些有关数据的元数据。该数据存储在 .data中,是一个 (n_sample, n_feature)数组。在监督学习问题中,多个变量存储在 .target中。其中,n_samole:样本数量,n_features:预测结果的数量。
例如,在digits是数据集中,digits.data可以根据这些t特征对digits数据样本进行分类:
print digits.data
[[ 0. 0. 5. ..., 0. 0. 0.]
[ 0. 0. 0. ..., 10. 0. 0.]
[ 0. 0. 0. ..., 16. 9. 0.]
...,
[ 0. 0. 1. ..., 6. 0. 0.]
[ 0. 0. 2. ..., 12. 0. 0.]
[ 0. 0. 10. ..., 12. 1. 0.]]
并且,digits.target给出了数据集的真实值,就是每个数字图案对应想预测的真实数字:
digits.target
array([0, 1, 2, ..., 8, 9, 8])
数据数组的形状 数据往往是一个二维数组,形如 (n_sample, n_feature),不管原始数据可能有其他形式。在digits数据集中,每个原始样本都是8*8的矩阵,如下
digits.images[0]
array([[ 0., 0., 5., 13., 9., 1., 0., 0.],
[ 0., 0., 13., 15., 10., 15., 5., 0.],
[ 0., 3., 15., 2., 0., 11., 8., 0.],
[ 0., 4., 12., 0., 0., 8., 8., 0.],
[ 0., 5., 8., 0., 0., 9., 8., 0.],
[ 0., 4., 11., 0., 1., 12., 7., 0.],
[ 0., 2., 14., 5., 10., 12., 0., 0.],
[ 0., 0., 6., 13., 10., 0., 0., 0.]])
后续会通过简单的例子来展示,如何从原始问题的数据通过scikit-learn学习转化为有用的数据。