将 log10-Data 转换为 1-11 比例

Convert log10-Data to a 1-11 scale

我想将我的数据转换为 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]

我看不出为什么你的公式不能使用负数。这是一个简单的仿射函数。

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]