sklearn模块中fit_transform()函数和transform()函数之间的区别

转载 2018年04月15日 15:06:51

一.先说结论

   1. fit_transform()的作用就是先拟合数据,然后转化它将其转化为标准形式,一般应用在训练集中。

   2. tranform()的作用是通过找中心和缩放等实现标准化,一般用在测试集中。


二. 问题背景


对于数据预处理中涉及到的fit_transform()函数和transform()函数之间的区别很模糊,查阅了很多资料,这里整理一下:


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

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

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

1、fit_transform()函数


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

2、transform()函数


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


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

原因如下:

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


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


(图片来源:点击打开链接


参考原文链接地址:http://https://blog.csdn.net/quiet_girl/article/details/72517053

NLP:sklearn中fit、fit_transform、transform的区别

参考:http://blog.csdn.net/qq_35082030/article/details/70338654fit原义指的是安装、使适合的意思,其实有点train的含义但是和train不同...
  • LUFANGBO
  • LUFANGBO
  • 2018-02-11 09:33:27
  • 223

Sklearn TFIDF中文计算问题以及解决方法

我在使用sklearn中的ITIDF工具,想来这是在文本处理中常用的有个现成的工具一定是极好的。但是网上查了下代码试了下并没有得到跟他们一样的结果。现象是这样的,凡是输入的是中文就直接被忽略掉了,如果...
  • Tiffany_Li2015
  • Tiffany_Li2015
  • 2015-12-09 15:20:12
  • 4453

通俗地讲清楚fit_transform()和transform()的区别

网上抄来抄去都是一个意思, fit_transform是fit和transform的组合。  我们知道fit(x,y)在新手入门的例子中比较多,但是这里的fit_transform(x)的括号中只...
  • appleyuchi
  • appleyuchi
  • 2017-06-20 17:21:58
  • 8467

scikit-learn数据预处理fit_transform()与transform()的区别

scikit-learn中fit_transform()与transform()到底有什么区别?
  • anecdotegyb
  • anecdotegyb
  • 2017-07-09 04:21:12
  • 4340

sklearn 数据预处理1: StandardScaler

StandardScaler作用:去均值和方差归一化。且是针对每一个特征维度来做的,而不是针对样本。 【注:】 并不是所有的标准化都能给estimator带来好处。 “Stand...
  • u012609509
  • u012609509
  • 2017-11-16 19:44:08
  • 3043

机器学习中的数据预处理(sklearn preprocessing)

Standardization即标准化,尽量将数据转化为均值为零,方差为一的数据,形如标准正态分布(高斯分布)。实际中我们会忽略数据的分布情况,仅仅是通过改变均值来集中数据,然后将非连续特征除以他们的...
  • csmqq
  • csmqq
  • 2016-05-20 15:05:26
  • 23617

Sklearn数据预处理:scale, StandardScaler, MinMaxScaler, Normalizer

一、标准化去除均值和方差缩放:通过(X-X_mean)/std计算每个属性(每列),进而使所有数据聚集在0附近,方差为1.(1)、sklearn.preprocessing.scale() 直接将给...
  • u013402321
  • u013402321
  • 2018-01-12 14:09:19
  • 477

特征的转换_03-标准化,归一化,正则化

1.标准化StandardScaler1.1 概述我们知道,在训练模型的时候,要输入features,即因子,也叫特征。对于同一个特征,不同的样本中的取值可能会相差非常大,一些异常小或异常大的数据会误...
  • sinat_33761963
  • sinat_33761963
  • 2017-02-07 16:03:19
  • 3973

Skearn预处理StandardScaler出现 ValueError 的错误

在用sklearn做机器学习的时候,我们经常要对数据进行预处理,而又经常使用标准化预处理数据,但是,使用StandardScaler有可能会出现ValueError 的错误。具体的错误如下面所示: ...
  • llh_1178
  • llh_1178
  • 2018-01-10 15:17:57
  • 223

机器学习scikit-learn(一)

机器学习scikit-learn在数据分析过程中,我们经常会碰到各种各样的问题。如何获取外部数据?如何处理脏数据?如何处理缺失值?若有许多特征,我们减少特征?建立各种模型中算法的细节?到最后,面对多种...
  • u013393647
  • u013393647
  • 2015-08-15 14:38:16
  • 3029
收藏助手
不良信息举报
您举报文章:sklearn模块中fit_transform()函数和transform()函数之间的区别
举报原因:
原因补充:

(最多只允许输入30个字)