如果给定的数据在使用 R 或 Python 的范围(-1 到 1)内,如何以 (-3 ,-2,-1,0,1,2,3) 格式规范化数据?

Posted

技术标签:

【中文标题】如果给定的数据在使用 R 或 Python 的范围(-1 到 1)内,如何以 (-3 ,-2,-1,0,1,2,3) 格式规范化数据?【英文标题】:How can normalize the data in format (-3 ,-2,-1,0,1,2,3) if given data is in range (-1 to 1) using R or Python? 【发布时间】:2020-03-31 03:44:59 【问题描述】:

价值: 0.344 -0.124 0.880 0 0.910 -0.800

【问题讨论】:

我假设“值:...”是您的输入?您能否指定您希望相应的输出是什么? 是的,输入值。我想使用标准偏差将此输入标准化为 (-3, -2,-1, 0, 1, 2, 3) 【参考方案1】:

您可以尝试 R 中的cut() 函数将值划分为区间。

value <- c(0.344, -0.124, 0.880, 0, 0.910, -0.800)
value.normalized <- cut(
  x = value, breaks = seq(-1, 1, length.out = 8), 
  labels = -3:3, include.lowest = TRUE, right = TRUE
)

(value.normalized)
1  0  3  0  3  -3
Levels: -3 -2 -1 0 1 2 3

【讨论】:

cut()函数使用标准差公式进行归一化? 没有。 cut() 将值分解为您定义的间隔的箱。问题是:1.您没有提到在您的问题中使用标准偏差。 2.您提到了新箱的间隔(-3、-2、-1、0、1、2、3),而不是 -3,3 之间的实数,因为标准偏差可以。 3. 使用标准差并不能保证您的数字在 -1,1 范围内,这与您声称您的数字在 -1,1 范围内的说法相反。【参考方案2】:

您可以执行以下操作将任何数据标准化为给定比例:

>>> Data = [0.9, 0.2, 0.3, 0.4]
>>> lower, upper =-3, 3
>>> Data_norm = [lower + (upper - lower) * x for x in Data]
>>> Data_norm
[2.4000000000000004, -1.7999999999999998, -1.2000000000000002, -0.5999999999999996]

【讨论】:

是否使用标准差进行归一化? 不,这叫做范围映射。【参考方案3】:

使用sklearn.preprocessing.minmax_scale

In [1]: from sklearn.preprocessing import minmax_scale


In [2]: value = [0.344,-0.124,0.880,0,0.910,-0.800]


In [3]: in_range = [-1, 1]


In [4]: value_scaled = minmax_scale(value + in_range, feature_range=(-3,3))


In [5]: value_scaled[:-2]

Out[5]: array([ 1.032, -0.372,  2.64 ,  0.   ,  2.73 , -2.4  ])

【讨论】:

您好,感谢您的评论。第 5 行给出错误。我是 python 新手。 @Suru 如果你愿意,我可以帮你弄清楚如何解决你的错误。请详细说明您遇到的错误。

以上是关于如果给定的数据在使用 R 或 Python 的范围(-1 到 1)内,如何以 (-3 ,-2,-1,0,1,2,3) 格式规范化数据?的主要内容,如果未能解决你的问题,请参考以下文章

R树和R*树的范围搜索复杂度

如何检查位置是不是在给定范围内?

如何根据给定的行数范围从文本文件中分割数据

树状数组求逆序对

如何找到给定范围内除以给定数字时具有一定余数的值的数量?

Leetcode练习(Python):位运算类:第201题:数字范围按位与:给定范围 [m, n],其中 0 <= m <= n <= 2147483647,返回此范围内所有数字的按