• 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
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    求链表的倒数第k个节点
    打印蛇形矩阵
    数组元素前移问题(今日头条笔试题)
    单链表的节点内数据值的删除问题(携程网笔试题)
    子树判断问题(百度笔试题)
    求链表的第一个公共节点问题(好未来笔试题)
    正则表达式常用总结
    正则表达式start(),end(),group()方法
    test、exec、match区别
    matches()方法
  • 原文地址:https://www.cnblogs.com/simpleDi/p/9949292.html
Copyright © 2020-2023  润新知