Ошибка памяти со списками Python, содержащими 5000 элементов (горячее кодирование) - PullRequest
0 голосов
/ 05 сентября 2018

Я работаю над моделью ML, предварительно обрабатывая данные, используя горячее кодирование для категориальных значений. У меня 300 000 строк примерно так:

['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). Как лучше всего подойти к этому?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...