Python中的小数点归一化

时间:2018-10-24 14:48:27

标签: python-3.x

我正在尝试对数据进行归一化,并且尝试了使用sklearn软件包的常规缩放技术来满足此类需求。但是,我希望实现一种称为“十进制缩放”的东西。

我在此research paper中读到了它,看起来像是一种可以改善神经网络回归结果的技术。据我了解,这是我认为需要做的-

  • 假定属性X的范围是-4856到28。X的最大绝对值为4856
  • 要通过十进制缩放进行归一化,我需要将每个值除以10000(c = 4)。在这种情况下,−4856变为-0.4856,而28变为0.0028。
  • 因此对于所有值:新值=旧值/ 10 ^ c

我该如何在Python中将其重现为函数以规范数据集中的所有功能(按列)?

Input:
A      B    C
30    90    75
56   168    140
28    84        70
369  1107   922.5
485  1455   1212.5
4856 14568  12140
40    120   100
56    168   140
45    135   112.5
78    234   195
899  2697   2247.5

Output:
A       B       C
0.003   0.0009  0.0075
0.0056  0.00168 0.014
0.0028  0.00084 0.007
0.0369  0.01107 0.09225
0.0485  0.01455 0.12125
0.4856  0.14568 1.214
0.004   0.0012  0.01
0.0056  0.00168 0.014
0.0045  0.00135 0.01125
0.0078  0.00234 0.0195
0.0899  0.02697 0.22475

1 个答案:

答案 0 :(得分:0)

谢谢你们提出的问题,这使我更加清楚地思考我的问题并将其分解为若干步骤。我已经解决了。这是我的解决方案的样子:

def Dec_scale(df):
    for x in df:
        p = df[x].max()
        q = len(str(abs(p)))
        df[x] = df[x]/10**q 

我希望这个解决方案看起来令人满意!