我想将我的数据转换为1-11标度。首先,我获取原始数据并使用以下公式对其进行转换,该公式取自here
scale_min + float(x-data_min)*float(scale_max-scale_min)/(data_max-data_min)然而,由于我的数据具有极端的异常值,这使得大多数数据中的差异不可能被看到。我想过取数据的log10,然后将这些值转换为我的1-11标度,然而,上面的公式不适用于负值,这可能发生在log10中。有没有其他方法可以将log10值映射到1-11范围?或者,是否有任何其他方法可以将具有极端异常值的数据映射到1-11范围内,使较小的值中的差异可感知,同时不会丢失任何信息?
我的值的一个例子是
[0.1, 10, 300, 500000]发布于 2021-10-14 13:43:56
我看不出你的公式为什么不能处理负数。它是一个简单的仿射函数。
python中的示例:
from math import log10
data = [0.1, 10, 300, 500000]
logdata = [log10(x) for x in data]
a = min(logdata)
b = max(logdata)
data1_11 = [1 + (y - a) * 10 / (b - a) for y in logdata]
print(data1_11)
# [1.0, 4.0, 6.2, 11.0]https://stackoverflow.com/questions/69571035
复制相似问题