fit、transform、fit_transform的区别,为什么训练集用 fit_transform , 测试集用 transform

三个函数的使用具体解释,在数据预处理中的应用

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相当于fittransform的结合,
    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的时候,相当于训练集和测试集互相引入了信息,后来训练的网络很可能过拟合,准确率也虚高。
预处理时:

  1. 训练集 测试集提前分开,划分好;
  2. 训练集预处理时,保存好训练集的均值+方差,它的零均值化,标准化正常进行;
  3. 测试集利用刚保存的训练集的均值+方差进行零均值化,标准化;

PCA降维时:

  1. 预处理后的训练集 测试集依然分开;
  2. 用训练集进行PCA降维,得到投影矩阵P;
  3. 测试集利用刚训练集得到的投影矩阵P进行降维;
  • 0
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Systemd

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值