请告诉我以下情况下是否有合适的量化方法(最好在python中实现)?
存在一个输入范围,其中大多数值距离平均值在+-2 std内,而存在一些巨大的异常值。例:[1,2,3,4,5,1000]将其量化到输出范围(例如0-255)将导致精度损失,因为巨大的异常值1000(1,2,3,4,5都将变为0)。
然而,重要的是要保持精度的值在几个std内的平均值。
丢弃异常值或用NaN替换它们是不可接受的。它们应该以某种形式保存下来。粗略地说,使用上面的例子,量化的输出应该类似于[1,2,3,4,5,255]
非常感谢您的意见。
我能想到两个答案。
- 你写了"巨大的异常值"。"离群值"一词表明,这个数字并不真正符合数据。如果你确实有证据表明这个观察结果不具有代表性(比如因为测量设备暂时损坏),那么我会忽略这个观察结果。
- 或者,可能会出现如此高的值,因为该变量可以真正跨越大范围的结果(例如,样本中有Elon Musk的收入变量)。在这种情况下我认为转换的输入,说先看数字的对数。这将把列表[1,2,3,4,5,1000]转换为[0,0.69,1.10,1.39,1.61,6.91]。
然而,无论选择1还是2,最好还是比较有和没有这个异常值的结果。你真的想避免你的结论是由这个单一的观察驱动的。