Python 手动标准化功能执行时间过长

Python 手动标准化功能执行时间过长,python,tensorflow,machine-learning,scikit-learn,normalizing,Python,Tensorflow,Machine Learning,Scikit Learn,Normalizing,我试图手动实现一个规范化函数,而不是使用scikit learn的函数。原因是,我需要手动定义最大和最小参数,scikit learn不允许这种更改 我成功地实现了这一点,以规范化0和1之间的值。但这需要很长时间才能完成 问题:还有其他有效的方法吗?如何使其执行更快。 下面是我的代码: scaled_train_data = scale(train_data) def scale(data): for index, row in data.iterrows(): X_s

我试图手动实现一个规范化函数,而不是使用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函数。当然,如果您愿意,也可以将其放入函数中


或者,如果要重新缩放到线性范围,可以使用。这样做的好处是,您可以保存它,然后以相同的方式重新缩放测试数据。

为什么循环?你可以用

train_data['close'] = (train_data['close'] - 10)/(2000 - 10) 
使用矢量化的numpy函数。当然,如果您愿意,也可以将其放入函数中


或者,如果要重新缩放到线性范围,可以使用。这样做的好处是,您可以保存它,然后以相同的方式重新缩放测试数据。

使用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)

使用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)

谢谢你,成功了。MinMAxScaler的问题是我不想在数据列中获得最小值和最大值。我想输入一个手动广义值。scikit learn自动获取列的最小值和最大值,并将其标准化。如果我错了,请纠正我。这就是为什么我想手动执行此操作。好的,您可以添加要缩放到的范围,例如:
sklearn.preprocessing.MinMaxScaler(feature\u range=-1,3))
。我不知道你是如何选择数字2000和10的,但是如果你选择它们来缩放到一个特定的范围,你可以使用这个选项。据我所知,这是真的,你不能输入这些(可能是因为它已经是一个像上面一样的一行了)。谢谢你,它成功了。MinMAxScaler的问题是我不想在数据列中获得最小值和最大值。我想输入一个手动广义值。scikit learn自动获取列的最小值和最大值,并将其标准化。如果我错了,请纠正我。这就是为什么我想手动执行此操作。好的,您可以添加要缩放到的范围,例如:
sklearn.preprocessing.MinMaxScaler(feature\u range=-1,3))
。我不知道你是如何选择数字2000和10的,但是如果你选择它们来缩放到一个特定的范围,你可以使用这个选项。据我所知,这是真的,你不能输入这些(可能是因为它已经是一个像上面那样的一行了)。对于循环和计算每列的X_std来说,分别需要很长的时间。对于循环和计算每列的X_std来说,分别需要很长的时间。