首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将log10-Data转换为1-11小数

将log10-Data转换为1-11小数
EN

Stack Overflow用户
提问于 2021-10-14 12:50:38
回答 1查看 24关注 0票数 1

我想将我的数据转换为1-11标度。首先,我获取原始数据并使用以下公式对其进行转换,该公式取自here

代码语言:javascript
复制
scale_min + float(x-data_min)*float(scale_max-scale_min)/(data_max-data_min)

然而,由于我的数据具有极端的异常值,这使得大多数数据中的差异不可能被看到。我想过取数据的log10,然后将这些值转换为我的1-11标度,然而,上面的公式不适用于负值,这可能发生在log10中。有没有其他方法可以将log10值映射到1-11范围?或者,是否有任何其他方法可以将具有极端异常值的数据映射到1-11范围内,使较小的值中的差异可感知,同时不会丢失任何信息?

我的值的一个例子是

代码语言:javascript
复制
[0.1, 10, 300, 500000]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-14 13:43:56

我看不出你的公式为什么不能处理负数。它是一个简单的仿射函数。

python中的示例:

代码语言:javascript
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69571035

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档