【问题标题】:Decimal Point Normalization in PythonPython中的小数点归一化
【发布时间】:2018-10-24 14:48:27
【问题描述】:

我正在尝试对我的数据应用规范化,并且我已经尝试了使用 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

【问题讨论】:

  • 您需要帮助哪一部分?问题可以分为三个任务:读取数据(从 .csv 文件?)、应用规范化、重写数据。
  • 我想对数据或因变量应用标准化。我打算计算每列中找到的数字的最大长度并使用该数字(c)提高到 10 的幂,然后用这个 10^c 缩放列中的所有原始数字以实现小数点标准化值。
  • 这是在 Pandas 中的吗?
  • 我更喜欢python中的这个,不确定pandas如何提供帮助,但也许,我可能需要将数字转换为字符串以获得列中最大绝对值的长度,如下所示:c = df[x].map(len).max() df[x] = df[x]/10**c

标签: python-3.x


【解决方案1】:

感谢你们提出的问题让我更清楚地思考我的问题并将其分解为步骤。我已经找到了解决方案。这是我的解决方案的样子:

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

我希望这个解决方案看起来不错!

【讨论】:

    猜你喜欢
    • 2015-02-28
    • 2017-12-05
    • 2013-07-03
    • 2010-11-23
    • 2018-11-17
    • 2018-12-28
    • 2017-08-31
    • 2021-06-06
    相关资源
    最近更新 更多