有关StandardScaler的transform和fit_transform方法

96
抬头看月亮
2018.09.10 18:21* 字数 691

啊,我终于开始写machine learning 相关的博文啦
背景:
StandardScaler类是一个用来讲数据进行归一化和标准化的类。
所谓归一化和标准化,即应用下列公式:
X=(x-\mu)/\sigma
使得新的X数据集方差为1,均值为0

问题一:
StandardScaler类中transform和fit_transform方法有什么区别?

答:fit_transform方法是fit和transform的结合,fit_transform(X_train) 意思是找出X_train的\mu\sigma,并应用在X_train上。
这时对于X_test,我们就可以直接使用transform方法。因为此时StandardScaler已经保存了X_train的
\mu\sigma

问题二:
为什么可以用训练集的\mu\sigma 来transform 测试集的数据X_test?

答:我们家大王说,“机器学习中有很多假设,这里假设了训练集的样本采样足够充分”。我觉得颇有道理。

最后再补充下几种归一化方法的区别:

作者:代码律动
链接:https://www.zhihu.com/question/60490799/answer/388715802
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

Zero-mean normalization
公式:X=(x-\mu)/\sigma
这就是均值方差归一化,这样处理后的数据将符合标准正太分布,常用在一些通过距离得出相似度的聚类算法中,比如 K-means。

Min-max normalization
公式: X=(x-Xmin)/(Xmax-Xmin)
min-max 归一化的手段是一种线性的归一化方法,它的特点是不会对数据分布产生影响。不过如果你的数据的最大最小值不是稳定的话,你的结果可能因此变得不稳定。min-max 归一化在图像处理上非常常用,因为大部分的像素值范围是 [0, 255]。

Non-linear normaliztions
非线性的归一化函数包含 log,exp,arctan, sigmoid等等。用非线性归一化的函数取决于你的输入数据范围以及你期望的输出范围。比如 log() 函数在 [0, 1] 区间上有很强的区分度,arctan() 可以接收任意实数病转化到[-\pi/2,\pi/2]
区间,sigmoid 接收任意实数并映射到 (0, 1)。

Length-one normalization
公式: X=x/\Vert x \Vert
将特征转为单位向量的形式,可以剔除特征的强度的影响。这种处理用在不考虑向量大小而需要考虑向量方向的问题中,比如在一些文本情感的分类中,我们可能并不需要知道情感表达的强弱,而只要知道情感的类型,比如开心,生气等等。

吭哧吭哧机器学习
Gupao