手动归一化功能执行所需的时间太长

时间:2018-10-17 05:43:40

标签: python tensorflow machine-learning scikit-learn normalizing

我正在尝试手动实现标准化功能,而不是使用scikit Learn的功能。原因是,我需要手动定义最大和最小参数,而scikit learning不允许这种更改。

我成功地实现了此操作,以将0到1之间的值标准化。但是运行需要很长时间。

问题: 我还有另一种有效的方法吗?如何使执行速度更快。

下面显示的是我的代码:

scaled_train_data = scale(train_data)

def scale(data):
    for index, row in data.iterrows():
        X_std = (data.loc[index, "Close"] - 10) / (2000 - 10)
        data.loc[index, "Close"] = X_std

    return data

2000和10是我手动定义的属性,而不是采用数据集的最小值和最大值。

谢谢。

2 个答案:

答案 0 :(得分:2)

使用numpy矩阵。您也可以手动设置最小值和最大值。

import numpy as np
data = np.array(df)
_min = np.min(data, axis=0)
_max = np.max(data, axis=0)
normed_data = (data - _min) / (_max - _min)

答案 1 :(得分:1)

为什么循环?您可以使用

train_data['close'] = (train_data['close'] - 10)/(2000 - 10) 

利用矢量化numpy函数。当然,如果愿意,也可以将其放在函数中。

或者,如果要将比例缩放到线性范围,则可以使用http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.MinMaxScaler.html。这样做的好处是您可以保存它,然后以相同的方式重新缩放测试数据。