sklearn官网学习入门二

来源:互联网 发布:外交部流氓回答知乎 编辑:程序博客网 时间:2024/06/05 17:28

摘要:
Scikit-learn在处理数据,生成学习模型时,通常要求采用的数据集是以2维数组表示的。
第一个坐标轴称为样本轴,表示样本编号0,1,2,3,…,n;
第二个坐标轴称之为特征值,表示特征编号0,1,2,…,k
于是,我们在处理非2D-array的数据集时,需要将其进行预处理,操作如下:


1. 加载digits数据集

from sklearn import datasetsdigits = datasets.load_digits()print(digits.images.shape)

1.1 输出:

(1797, 8, 8) #显然这是一个三维的数据集,由1797个(8,8)的数组构成

2. reshape操作,修改数据集的维度

# 重点说明一下reshape这个函数# 1 reshape()不会改变原数据集的结构,于是我们需要用另一个对象来保存修改后的新数据集# 2 data.size,这是数据集的一个属性,描述了数据集中,元素的总个数# 3 reshape()操作的就是划分数据集,其data.size是不会改变的,reshape的参数就是(a1,a2,a3,...,an),a1*a2*...*an = data.size不变# 4 在只有一个维度的个数未知的情况下,可以用-1来缺省,如reshape(100,-1),reshape(10,10,-1)data = digits.images.reshape((digits.images.shape[0], -1))print(data.shape)

2.1 输出

(1797, 64) #转变成了一个二维的数据集,由1797个长度为64的向量构成

小结:在不破坏原数据集samples和features完整性的前提下,我们在reshape的时候,应当保证shape[0]即样本个数不变,这也是此处用(digits.images.shape[0], -1)作为参数的原因。