Python:使用StandardScaler运行fit_transform时出现内存错误

时间:2019-01-17 11:19:25

标签: python-3.x scikit-learn jupyter-notebook

我有一个庞大的数据集,包含300多个列,由于90%的列本质上是分类的,因此我决定对它们进行一次热编码,从而得到形状数据集(466557,1778)。我正在尝试使用以下方法缩放此数据:

from sklearn import preprocessing as p
scaler = p.StandardScaler()
df_ss = scaler.fit_transform(df)

但是,我遇到内存错误。

MemoryError            Traceback (most recent call last)
<ipython-input-92-d766bc7d2870> in <module>()

我该如何预防?

2 个答案:

答案 0 :(得分:2)

不是标准比例的虚拟变量! 进行标准缩放可将连续变量转换为均值为0和标准偏差为1的变量。
由于您使用了One Hot编码,因此分类变量现在仅由1和0组成(如果该二进制变量存在,则为True,否则为1,否则为0):

我还可以补充一点,如果数据集太大,在以后的开发中可能会出现其他内存错误。 检查每个分类特征,并检查它们是否不是序数(可以订购它们),如果它们不是使用一个热编码器,而是将一个值替换为一个数字(相对于该顺序)。如果您使用的是大基数分类,则还可以使用哈希技巧。但是,以更一般的方式,我建议您寻找更好的方式来编码分类变量!

答案 1 :(得分:0)

也许您可以尝试分别缩放每一行?