手动实现的归一化函数执行时间过长

我尝试手动实现一个归一化函数,而不是使用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。这样做的好处是你可以保存它,然后以相同的方式重新缩放测试数据。

Related Posts

为什么我们在K-means聚类方法中使用kmeans.fit函数?

我在一个视频中使用K-means聚类技术,但我不明白为…

如何获取Keras中ImageDataGenerator的.flow_from_directory函数扫描的类名?

我想制作一个用户友好的GUI图像分类器,用户只需指向数…

如何查看每个词的tf-idf得分

我试图了解文档中每个词的tf-idf得分。然而,它只返…

如何修复 ‘ValueError: Found input variables with inconsistent numbers of samples: [32979, 21602]’?

我在制作一个用于情感分析的逻辑回归模型时遇到了这个问题…

如何向神经网络输入两个不同大小的输入?

我想向神经网络输入两个数据集。第一个数据集(元素)具有…

逻辑回归与机器学习有何关联

我们正在开会讨论聘请一位我们信任的顾问来做机器学习。一…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注