sklean中transform和fit_transform区别
在学习过程中看到在有的代码里,
from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
x_train = sc.fit_transform(x_train)
x_test = sc.transform(x_test)
训练集使用的是fit_transfrom.而测试集使用的是transform.不知道有什么区别,在此简单记录一下初步的理解.
两个参考链接
https://www.jianshu.com/p/2a635d9e894d
https://blog.youkuaiyun.com/Elvirangel/article/details/104516524
首先:
fit() 是用于计算训练数据的均值和方差的
transform()是用于将数据数据转换为标准正态分布.也就是对特征进行了缩放,便于后续的训练.有些特征不进行缩放可能在某些情况下有很大误差.
fit_transform就是以上两者的结合,先计算均值方差,然后进行标准化.
那么为什么训练集采用了fit_transform而测试集采用了transform呢?
大概意思就是说,因为在训练集调用了fit_transform这个方法后,sc中就含有了这个训练集的均值和方差,因此可以直接用这个均值和方差对测试集进行转换.
至于为什么可以用训练集的均值和方差对测试集进行转换,可以理解成它们两者本来就属于一个大的集合,而训练集和测试集是从这个大的集合中按照一定比例分割到的,只要数据集量够大,就可以当做训练集和测试集的均值和方差一样.