天天看点

sklearn官网学习入门二

摘要:

Scikit-learn在处理数据,生成学习模型时,通常要求采用的数据集是以2维数组表示的。

第一个坐标轴称为样本轴,表示样本编号0,1,2,3,…,n;

第二个坐标轴称之为特征值,表示特征编号0,1,2,…,k

于是,我们在处理非2D-array的数据集时,需要将其进行预处理,操作如下:

1. 加载digits数据集

from sklearn import datasets
digits = 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)作为参数的原因。