小知识点分析-----fit_transform和transform的区别

关于fit_transform和transform的区别 记住这句话,以下皆废话

就是这句:
fit_transform实现了数据的标准化,保证每个维度的特征数据方差为1,均值为0
transform就不用再重新实现一次了
所以,先用 fit_transform
再用 transform

注意:两者搭配使用,减轻计算负担,两者不可互换

以下不用看了 如果想知道更多 又很闲 请继续 下滑
博主不保证你能知道更多 但能保证费电

  1. fit_transform是fit和transform的组合。

  2. fit(x,y)传两个参数的是有监督学习的算法,fit(x)传一个参数的是无监督学习的算法,比如降维、特征提取、标准化。
    机器学习的算法可以分为:
    监督学习:特征值+目标值
    回归问题:目标值是连续的
    分类问题:目标值是离散的
    无监督学习: 特征值
    半监督学习:有特征值,但是一部分数据有目标值,其他数据没有目标值
    强化学习型:根据动态数据
    主要关注四个元素:agent,environment, action, reward

  3. fit和transform没有任何关系,之所以出来这么个函数名,仅仅是为了写代码方便,所以会发现transform()和fit_transform()的运行结果是一样的。

注意:运行结果一模一样不代表这两个函数可以互相替换,绝对不可以!transform函数是一定可以替换为fit_transform函数的,fit_transform函数不能替换为transform函数!

4…从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和transform的区别
    即fit_transform()的作用就是先拟合数据,然后转化它将其转化为标准形式。

  2. transform()函数小知识点分析-----fit_transform和transform的区别
    即tranform()的作用是通过找中心和缩放等实现标准化。

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

原因如下:

为了数据归一化(使特征数据方差为1,均值为0),我们需要计算特征数据的均值μ和方差σ^2,再使用下面的公式进行归一化:
小知识点分析-----fit_transform和transform的区别
我们在训练集上调用fit_transform(),其实找到了均值μ和方差σ^2,即我们已经找到了转换规则,我们把这个规则利用在训练集上,同样,我们可以直接将其运用到测试集上(甚至交叉验证集),所以在测试集上的处理,我们只需要标准化数据而不需要再次拟合数据。用一幅图展示如下:
小知识点分析-----fit_transform和transform的区别