sklearn库中fit_transform()和transform()的区别

fit_transform()和transform()是sklearn库中常用的数据预处理函数,在《Python机器学习及实践》一书中,涉及到这两个函数的代码如下:

# 从sklearn.preprocessing导入StandardScaler
from sklearn.preprocessing import StandardScaler
# 标准化数据,保证每个维度的特征数据方差为1,均值为0,使得预测结果不会被某些维度过大的特征值而主导
ss = StandardScaler()
# fit_transform(),先拟合数据,再标准化数据 
X_train = ss.fit_transform(X_train)
# transform(),标准化数据 
X_test = ss.transform(X_test)

问题1: 为什么对训练集和测试集使用不同函数进行数据预处理?
问题2: fit_transform()和transform()两者存在什么差别?

官方文档中对这两个函数的说明:

1. fit_transform:
fit_transform
Fit to data, then transform it,即fit_transform()的功能就是对数据先进行拟合处理,然后再将其进行标准化。

2. transform():
transform
Perform standardization by centering and scaling,即transform()的功能是对数据进行标准化。

由此可知,两者的差别在于fit_transform()函数中多了一个步骤,即对数据进行fit处理。那么为什么需要进行fit处理?这是因为数据归一化的过程中,需要计算出数据的均值和方差,而这个过程函数fit()能够实现。

也就是说,当我们在训练集上调用fit_transform(),对训练数据进行先拟合后标准化的处理时,此时我们已经得到数据的均值和方差,这一操作接下来不用重复执行,因此我们在测试集上只需要调用transform(),对测试数据进行标准化的处理。数据处理过程如下图所示:
在这里插入图片描述

总结一下上述三种函数:

  1. fit(X[,y]):计算待标准化数据的均值和方差等参数。
  2. fit_transform(X[,y]):对数据先进行拟合,然后标准化。
  3. transform(X[, y, copy]):对数据进行标准化,与fit_transform(X[,y])的结果是一样的。
    在这里插入图片描述

参考文献:官方文档

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值