包含5000个元素的Python列表出现内存错误(一次编码)

时间:2018-09-05 00:42:12

标签: python out-of-memory one-hot-encoding

我正在通过对分类值使用一键编码对数据进行预处理来处理ML模型。我有30万行这样的内容:

['1901', array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0.]), array([0., 0., 0., ..., 0., 0., 0.]), '69.55', '9', '95.95', array([1.]), '8', '2000', array([0., 1., 0.]), array([1.]), array([0., 1.]), array([0., 1., 0., 0., 0., 0., 0., 0., 0., 0.]), '11.75', '7.0', '9.6791', '121', array([0., 1.]), array([0., 1., 0., 0.]), '0'], ['8451958', array([0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0.]), array([0., 0., 0., ..., 0., 0., 0.]), '99.55', '3', '2098.65', array([1.]), '8', '18', array([0., 1., 0.]), array([1.]), array([0., 1.]), array([0., 0., 1., 0., 0., 0., 0., 0., 0., 0.]), '13.24', '24.0', '7.81', '22033', array([0., 1.]), array([0., 0., 1., 0.]), '0']

其中数组是分类值的一键编码。

要训练我的模型,我必须使用以下代码扩展内部数组:

    new_label_x = []
    for j in range(len(label_x)):
        new_line = []
        for i in range(len(label_x[j])):
            if type(label_x[j][i]) is numpy.ndarray:
                for k in label_x[j][i]:
                    new_line.append(float(k))
            else:
                new_line.append(float(label_x[j][i]))

        new_label_x.append(new_line)

但是,出现内存错误的原因可能是我的numpy.ndarray中有一个包含5000个元素,而new_label_x却变得太大(长度= 5249)。解决此问题的最佳方法是什么?

0 个答案:

没有答案