三个函数的使用具体解释,在数据预处理中的应用
1、只涉及一组数据
-
fit(data) 对数据进行拟合,获得了数据的均值,最大最小,标准差等属性值
transform(data) 利用 fit(data) 获取到的属性对数据做预处理,如标准化,归一化,降维处理
from sklearn.decomposition import PCA
# 设置主成分为2
pca=PCA(n_components=2)
pca.fit(x_stand)
x_pca=pca.transform(x_stand)
-
fit_transform相当于fit和transform的结合,
fit_transform(data) 即先对数据做了fit(data),然后做transform(data) 处理
from sklearn.decomposition import PCA
# 设置主成分为2
pca=PCA(n_components=2)
x_pca=pca.fit_transform(x_stand)
2、对两组数据(如train,test)做相同的处理
(1)可以两组数据合并后再处理,照搬1的处理方法
(2)
from sklearn.decomposition import PCA
# 设置主成分为2
pca=PCA(n_components=2)
x_train_pca=pca.fit_transform(x_tain)
x_test_pca=pca.transform(x_test) ###
为什么训练集用 fit_transform , 测试集用 transform
(1)是拿train,test合并后的数据的属性值对所有数据做处理,(2)则是只用train的属性对train和test做处理,在实际数据处理中,推荐使用第二种处理方式,也就是都是利用训练集 train 得到的均值方差等数据对 test 数据集进行处理,第一种处理方式(训练集测试集合并处理)在把训练集和测试集放在一块PCA的时候,相当于训练集和测试集互相引入了信息,后来训练的网络很可能过拟合,准确率也虚高。
预处理时:
- 训练集 测试集提前分开,划分好;
- 训练集预处理时,保存好训练集的均值+方差,它的零均值化,标准化正常进行;
- 测试集利用刚保存的训练集的均值+方差进行零均值化,标准化;
PCA降维时:
- 预处理后的训练集 测试集依然分开;
- 用训练集进行PCA降维,得到投影矩阵P;
- 测试集利用刚训练集得到的投影矩阵P进行降维;