手动规范化功能执行时间过长
Manual normalization function taking too long to execute
我正在尝试手动实现规范化功能,而不是使用 scikit learn 的功能。原因是,我需要手动定义最大和最小参数,而 scikit learn 不允许这种更改。
我成功地实现了它以标准化 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 是我手动定义的属性,而不是取数据集的最小值和最大值。
提前致谢。
为什么循环?你可以只使用
train_data['close'] = (train_data['close'] - 10)/(2000 - 10)
使用向量化的 numpy 函数。当然,如果你愿意,你也可以把它放在一个函数中。
或者,如果您想重新缩放到线性范围,您可以使用 http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.MinMaxScaler.html。这样做的好处是你可以保存它,然后以相同的方式重新缩放测试数据。
使用 numpy 的 matrix.you 也可以手动设置最小值和最大值。
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)
我正在尝试手动实现规范化功能,而不是使用 scikit learn 的功能。原因是,我需要手动定义最大和最小参数,而 scikit learn 不允许这种更改。
我成功地实现了它以标准化 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 是我手动定义的属性,而不是取数据集的最小值和最大值。
提前致谢。
为什么循环?你可以只使用
train_data['close'] = (train_data['close'] - 10)/(2000 - 10)
使用向量化的 numpy 函数。当然,如果你愿意,你也可以把它放在一个函数中。
或者,如果您想重新缩放到线性范围,您可以使用 http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.MinMaxScaler.html。这样做的好处是你可以保存它,然后以相同的方式重新缩放测试数据。
使用 numpy 的 matrix.you 也可以手动设置最小值和最大值。
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)