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

  • 相关阅读:
    同步 异步 阻塞 非阻塞深入理解
    TCP的三次握手四次挥手
    dom事件
    Vue 无痕 刷新页面
    事件冒泡 捕获 事件流
    gulp
    懒加载
    Object.prototype.toString.call() 判断某个对象属于哪种内置类型 type instanceof Object.prototype.toString.call 区别
    css sass less
    node module.exports exports
  • 原文地址:https://www.cnblogs.com/simpleDi/p/9949292.html
Copyright © 2011-2022 走看看