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