sklearn.preprocessing中standardscaler和Normalizer之间的区别

rb1*_*992 23 statistics machine-learning scikit-learn

sklearn.preprocessing模块中standardscaler和normalizer有什么区别?不要两者做同样的事情吗?即使用偏差去除均值和比例?

小智 28

Normalizer文档:

具有至少一个非零分量的每个样本(即数据矩阵的每一行)与其他样本独立地重新缩放,使得其范数(l1或l2)等于1.

StandardScaler

通过删除均值和缩放到单位方差来标准化特征

换句话说,Normalizer按行方式和StandardScaler 列方式.Normalizer不会通过偏差移除均值和比例,而是将整行缩放到单位范数.


vin*_*lcy 8

Ben的这个可视化文章帮助说明了这个想法.

StandardScaler假定您的数据在每个功能中正常分布.通过"删除平均值并缩放到单位方差",您可以在图片中看到它们具有相同的"比例",无论其原始值如何.


Arj*_*jun 6

StandardScaler() 通过去除均值并缩放至单位方差来标准化特征(例如人员数据的特征,即身高、体重)。

(单位方差:单位方差是指随着样本量趋于无穷大,样本的标准差和方差都趋向于1。)

Normalizer() 重新缩放每个样本。例如,独立调整每家公司的股价。

有些股票比其他股票贵。为了解决这个问题,我们将其标准化。标准化器将分别将每家公司的股价转换为相对比例。


Ada*_*son 6

除了通过@vincentlcy查看指教这个文章,现在有在Scikit-了解文档的例子在这里。一个重要的区别是Normalizer()应用于每个样本(即行)而不是列。这可能仅适用于符合其对每列中类似数据类型的假设的某些数据集。


小智 5

主要区别在于标准标量应用于列,而规范化器应用于行,因此请确保在规范化数据之前重塑数据。