简单介绍

fit(): Method calculates the parameters μ and σ and saves them as internal objects. 解释:简单来说,就是求得训练集X的均值,方差,最大值,最小值,这些训练集X固有的属性。

transform(): Method using these calculated parameters apply the transformation to a particular dataset. 解释:在fit的基础上,进行标准化,降维,归一化等操作(看具体用的是哪个工具,如PCA,StandardScaler等)。作用是通过找中心和缩放等实现标准化

fit_transform(): joins the fit() and transform() method for transformation of dataset. 解释:fit_transform是fit和transform的组合,既包括了训练又包含了转换。对部分数据先拟合fit,找到该part的整体指标,如均值、方差、最大值最小值等等(根据具体转换的目的),然后对该trainData进行转换transform,从而实现数据的标准化、归一化等等。

transform()和fit_transform()二者的功能都是对数据进行某种统一处理(比如标准化~N(0,1),将数据缩放(映射)到某个固定区间,归一化,正则化等)

fit(),transform()和fit_transform() - 图1

延申

归一化(normalisatoon)发生了什么

image.png
image.png

为什么需要对数值型的特征做归一化(normalization)?

为了消除数据特征之间的量纲影响,我们需要对特征进行归一化处理,使得不同指标之间具有可比性。
举例:身高体重,体重的数量级比身高大,轻微变化却因为其单位(斤)的影响会比身高变化显得很显著,所以要将这两个变量放在相同的数量级比较;

常用的归一化方法
线性函数归一化(最大最小值归一化)、零均值归一化。

哪些算法必须归一化/标准化
实际应用中,通过梯度下降法求解模型的通常需要归一化,包括线性回归、逻辑回归、支持向量机、神经网络等。
决策树模型不要要归一化,看的是信息增益比。
fit(),transform()和fit_transform() - 图4fit(),transform()和fit_transform() - 图5
归一化之后变得不再崎岖,迭代次数变少,减小梯度下降算法的过程,从而加速模型的生成

归一化公式
线性函数将原始数据线性化的方法转换到[0,1]的范围,实现对原始数据的等比例缩放。
1.规范化处理(最大最小值归一化)公式如下:
fit(),transform()和fit_transform() - 图6
其中Xnorm为归一化后的数据,X为原始数据,Xmax、Xmin分别为原始数据集的最大值和最小值。
问题:对异常值十分灵敏,异常值容易造成偏差 如何寻找异常值

2.mean normalization
Take a feature xi, Replace it by (xi - mean)/max, So your values all have an average of about 0
fit(),transform()和fit_transform() - 图7

3.正规化处理(Z-score标准化)
给予原始数据的均值μ(mean)和标准差σ(standard deviation)进行数据的标准化
image.png

为什么只对训练集做fit_transform,对测试集只做transform?

机器学习假设,训练集和测试集的每个样本都是从同一分布中抽样得到的(即测试集归一化的均值和标准偏差应该来源于训练集),所以在训练集中fit之后在测试集就不能再fit了。要不然二者可能不是同一分布模型,预测效果会很糟糕。