首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >scikit学习MinMax标尺不缩放

scikit学习MinMax标尺不缩放
EN

Stack Overflow用户
提问于 2018-05-26 18:52:13
回答 1查看 1.7K关注 0票数 2

如果我有一个大数组的话,如何缩放MinMaxScaler的学习函数?因此,让我们定义以下内容

代码语言:javascript
复制
import numpy as np
from sklearn.preprocessing import MinMaxScaler

scaler = MinMaxScaler(feature_range=(0, 1))

让我们考虑以下数据集

代码语言:javascript
复制
Y_train # shape = (2358331,1)
X_train # shape = (2358331,302)

现在我可以使用以下方法来缩放我的Y_train

代码语言:javascript
复制
%%time
Y_train = scaler.fit_transform(Y_train)

很好,我得到了

代码语言:javascript
复制
CPU times: user 36.3 ms, sys: 104 ms, total: 141 ms
Wall time: 388 ms

但是,当我对X_train使用相同的命令时,执行时间似乎与列数不成线性关系。因此,我尝试使用一个循环来执行每个特性的定标器。

代码语言:javascript
复制
for i in range(X_train.shape[1]):
  scaled_feature = 
    scaler.fit_transform(X_train[:,i].reshape(X_train.shape[0],1))
  X_train[:,i] = scaled_feature.reshape(X_train.shape[0],)

但也是无穷无尽的。

我的问题是为什么会这样?你有别的办法解决这个问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-27 09:41:40

你的问题源于你在处理大量数据这一事实。

MinMaxScaler接受一个参数copy,默认情况下它是True。这意味着它会复制你的数据。而且你的数据是巨大的。保守地假设每个数据点都是32位整数,X_train大约是2.8G。所有这些都被注入内存并复制。由于痛击,您将陷入复制阶段。

你怎么减轻这个问题?

  1. copy=False调用构造函数。
  2. 如果这还不够完善,请查看numpy.memmap,它允许您访问存储在内存中的大型数据。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50546065

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档