我有一个庞大的数据集,包含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>()
我该如何预防?
答案 0 :(得分:2)
不是标准比例的虚拟变量!
进行标准缩放可将连续变量转换为均值为0和标准偏差为1的变量。
由于您使用了One Hot编码,因此分类变量现在仅由1和0组成(如果该二进制变量存在,则为True,否则为1,否则为0):
我还可以补充一点,如果数据集太大,在以后的开发中可能会出现其他内存错误。 检查每个分类特征,并检查它们是否不是序数(可以订购它们),如果它们不是使用一个热编码器,而是将一个值替换为一个数字(相对于该顺序)。如果您使用的是大基数分类,则还可以使用哈希技巧。但是,以更一般的方式,我建议您寻找更好的方式来编码分类变量!
答案 1 :(得分:0)
也许您可以尝试分别缩放每一行?