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

2024-06-17 19:43:46 发布

您现在位置:Python中文网/ 问答频道 /正文

价值: 0.344 -0.124 0.880 0 0.910 -0.800美元


Tags: 价值
3条回答

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

>>> 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]

使用^{}

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  ])

您可以尝试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

相关问题 更多 >