Python初探——sklearn库中数据预处理函数fit_transform()和transform()的区别

Posted simpleDi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python初探——sklearn库中数据预处理函数fit_transform()和transform()的区别相关的知识,希望对你有一定的参考价值。

敲《Python机器学习及实践》上的code的时候,对于数据预处理中涉及到的fit_transform()函数和transform()函数之间的区别很模糊,查阅了很多资料,这里整理一下:

 

# 从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)

涉及到这两个函数的代码如下:

我们先来看一下这两个函数的API以及参数含义:
1、fit_transform()函数

即fit_transform()的作用就是先拟合数据,然后转化它将其转化为标准形式

2、transform()函数

即tranform()的作用是通过找中心和缩放等实现标准化

到了这里,我们似乎知道了两者的一些差别,就像名字上的不同,前者多了一个fit数据的步骤,那为什么在标准化数据的时候不使用fit_transform()函数呢?

原因如下:

为了数据标准化(使特征数据方差为1,均值为0),我们需要计算特征数据的均值μ和方差σ^2,再使用下面的公式进行归一化:

 

我们在训练集上调用fit_transform(),其实找到了均值μ和方差σ^2,即我们已经找到了转换规则(即方差和均值),我们把这个规则利用在训练集上,同样,我们可以直接将其运用到测试集上(甚至交叉验证集),所以在测试集上的处理,我们只需要标准化数据而不需要再次拟合数据。用一幅图展示如下:

   

作者:nana-li
来源:CSDN
原文:https://blog.csdn.net/quiet_girl/article/details/72517053
版权声明:本文为博主原创文章,转载请附上博文链接!

以上是关于Python初探——sklearn库中数据预处理函数fit_transform()和transform()的区别的主要内容,如果未能解决你的问题,请参考以下文章

在“Keras”分类中使用“sklearn”库中计算类权重函数问题(Python 3.8,仅在 VS 代码中)

在 sklearn 或任何 python 库中确定对非线性 SVM 回归贡献最大的特征

如何在 sklearn 中一次在多个列上应用预处理方法

Sklearn LinearSVC库中惩罚和损失参数的区别

1.1.3:sklearn库中的标准数据集及基本功能

DBSCAN 集群甚至无法处理 40k 数据,但使用 python 和 sklearn 处理 10k 数据