标准缩放器和最小-最大缩放器的区别

35

MinMaxScaler()StandardScaler() 有什么区别?

mms = MinMaxScaler(feature_range = (0, 1))(用于机器学习模型)

sc = StandardScaler()(在另一个机器学习模型中使用标准缩放器而不是最小-最大缩放器)

4个回答

80

MinMaxScaler(feature_range = (0, 1)) 会将列中的每个值按比例转换到范围 [0,1] 内。将其作为第一次转换特征的缩放器选择,因为它将保留数据集的形状(没有失真)。

StandardScaler() 会将列中的每个值转换为围绕平均值为0和标准差为1的范围内,即通过减去平均值并除以标准差来归一化每个值。如果您知道数据分布是正态分布,请使用 StandardScaler。

如果存在异常值,请使用 RobustScaler()。或者您可以删除异常值并使用上述任意一个缩放器来进行转换(选择取决于数据是否呈正态分布)。

额外提示:如果在 train_test_split 之前使用缩放器,数据泄漏会发生。请在 train_test_split 之后使用缩放器。


2
刚刚找到了一篇好文章,讲解了这些缩放器 https://towardsdatascience.com/scale-standardize-or-normalize-with-scikit-learn-6ccc7d176a02 - perpetualstudent

33

来自ScikitLearn网站

StandardScaler移除均值并将数据缩放到单位方差。然而,异常值对于计算经验均值和标准差有影响,这缩小了特征值的范围,如下图左侧所示。请注意,由于每个特征上的异常值具有不同的大小,因此转换后的数据在每个特征上的分布非常不同:对于转换后的中位数收入特征,大部分数据位于[-2,4]范围内,而相同的数据则被压缩在更小的[-0.2,0.2]范围内的转换后的家庭数量。

因此,在存在异常值的情况下,StandardScaler不能保证平衡的特征比例。

MinMaxScaler重新调整数据集,使得所有特征值都在[0,1]范围内,如下图右侧所示。但是,这种缩放将所有正常值压缩在转换后家庭数量的狭窄范围[0,0.005]内。


7

许多机器学习算法在输入数字变量被缩放到标准范围后表现更好。 对数据进行缩放意味着它有助于将数据规范化到特定范围内。

当使用MinMaxScaler时,它也被称为归一化,它将所有值转换到(0到1)的范围内. 公式是 x = [(value - min)/(Max- Min)]

StandardScaler属于标准化,其值范围为(-3到+3) 公式是 z = [(x - x.mean)/Std_deviation]


如果您能解释为什么在输入变量被缩放时性能更好,那将是很有趣的。 - ado sar

4
在实施MinMaxScaler或Standard Scaler之前,您需要了解数据集的分布情况。
StandardScaler将数据集重新缩放为平均值为0,标准偏差为1。如果数据具有不同的比例,并且算法假设数据具有高斯分布,则标准化非常有用。
归一化或MinMaxScaler将数据集重新缩放,以使每个值都介于0和1之间。当数据具有不同比例且算法不对分布进行假设时,它非常有用。如果我们不知道数据的分布情况或知道分布不是高斯分布,则这是一种很好的技术。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接