Python:sklearn库中,数据预处理函数fit_transform()及transform()的区别

本文参考
1.Python: sklearn库中数据预处理函数fit_transform()和transform()的区别
2.scikit-learn数据预处理fit_transform()与transform()的区别

问题背景

看到100-Days-Of_ML_Code中的一段代码,发现scikit-learn中的fit_transform()与transform(),不太清楚其中的区别,在网上找了一些资料,记录一下。

#数据拆分
from sklearn.model_selection import train_test_split
X_train, X_test, Y_train, Y_test = train_test_split( X , Y , test_size = 0.2, random_state = 0)
#数据标准化(特征量化)
from sklearn.preprocessing import StandardScaler
sc_X = StandardScaler()
X_train = sc_X.fit_transform(X_train)
X_test = sc_X.transform(X_test)

可以看到该代码片段中对训练数据集先用了fit_transform()函数,然后对测试数据集使用了transform()函数。

一 查看函数API及参数含义

1.fit_transform()函数

在这里插入图片描述fit_transform():拟合数据,然后转化为标准形式

2.transform()函数

在这里插入图片描述transform():通过找中心和缩放等实现标准化

二 辨析两个函数之间的差别

  1. fit_transform(X_train)对训练数据集先拟合fit,找到该训练数据集的整体指标,如均值、方差、最大值最小值等等(根据具体转换的目的),然后对该训练数据集进行转换transform,从而实现数据的标准化、归一化等等。
  2. 根据对之前训练数据集fit的整体指标,对测试数据集使用同样的均值、方差、最大最小值等指标进行转换transform(X_test),从而保证X_train、X_test处理方式相同。
  3. 必须先用fit_transform(X_train),之后再transform(X_test)
  4. 如果直接transform(X_train),程序会报错; 如果fit_transfrom(X_test)后,使用fit_transform(X_test)而不用transform(X_test),虽然也能归一化,但是两个结果不是在同一个“标准”下的,具有明显差异。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章