【发布时间】:2021-05-03 20:36:13
【问题描述】:
我正在使用 UCI 机器学习银行数据集进行数据预处理。URL 我使用 Max-Min Normalization 方法对数据进行规范化。
据我所知,此方法将数据范围重新调整为 [0,1]。
原始数据的样子
应用数据规范化后
df.duration = df.duration.apply(lambda v:((v df.duration.min())/df.duration.max()-df.duration.min()))
现在数据看起来像
在对持续时间列进行标准化后,所有数据都变为负数。但是根据 Max-Min 归一化数据应该在 (0,1) 之间。因此,哪种归一化可以提供更好的性能?
我很困惑,因为我观看了this video 以获取知识。根据 0,1 之间的视频时长列。然而,当我在我的机器上运行相同的代码时,我得到了一些不同的东西。
【问题讨论】:
-
根据公式,MinMax 缩放需要从元素中减去 Min 值,但您要减去 Mean 值。这可能是您得到负值的原因。
-
我编辑我的代码和输出。输出与之前相同。我得到了 (-) 值。
-
只是为了确保您运行的代码是准确的吗?它在 v 和 df.duration.min() 和 df.duration.max() 之间缺少一个减号 - df.duration.min() 没有在括号内组合在一起,这意味着你从 v 中减去 Min 值,然后除以 max ,以及从结果中减去最小值。这也会导致负值。
-
谢谢。有用。基本上问题与括号有关。当我将 df.duration.max() - df.duration.min() 分组时效果很好。
-
我不确定您是要结束这个问题还是让我输入一个答案让您接受,这样问题就结束了,因为我觉得这个问题基本上源于错字(这就是我在 cmets 中澄清事情而不是发布答案的原因)?
标签: python pandas normalization scaling