Я пытаюсь обучить алгоритм OneVsRest, в котором он получает матрицу tf-idf (называемую x_train), которая имеет такую форму:
<3323504x900282 разреженная матрица типа '' с 119378243 сохраненными элементами вСжатый формат разреженной строки>
и y_train, представляющий собой список списков (длиной 3323499). Каждый участник имеет 5 ярлыков (максимум). Итак, y_train выглядит так:
[['mysql', 'triggers'], ['mercurial', 'rebase'], ['c #', '.net'], ...]
Когда я выполняю этот код:
ovr_clf = OneVsRestClassifier(SVC(gamma="auto", random_state=42))
ovr_clf.fit(x_train, y_train)
, я получаю следующее сообщение:
ValueError: Вы выглядите какиспользование устаревшего представления данных с несколькими метками. Последовательности последовательностей больше не поддерживаются;используйте вместо этого двоичный массив или разреженную матрицу - преобразователь MultiLabelBinarizer может преобразовать в этот формат.
После попытки выполнить MultiLabelBinarizer, например так:
mlb = MultiLabelBinarizer()
mlb.fit_transform(y_train)
Я получаю сообщение:
MemoryError Traceback (последний последний вызов) в 1 mlb = MultiLabelBinarizer () ----> 2 mlb.fit_transform (y_train)
D: \ Anaconda3\ lib \ site-packages \ sklearn \ preprocessing \ label.py в fit_transform (self, y) 884 885, если не self.sparse_output: -> 886 yt = yt.toarray () 887 888 вернуть yt
D: \ Anaconda3 \ lib \ site-packages \ scipy \ sparse \ressed.py в toarray (self, order, out) 960, если out равен None, а order равен None: 961 order = self._swap ('cf') [0] -> 962 out = self._process_toarray_args (order, out) 963, если нет (out.flags.c_contiguous или out.flags.f_contiguous): 964 повысить ValueError («Выходной массив должен быть C или F непрерывным»)
D: \ Anaconda3 \ lib \ site-packages \ scipy \ sparse \ base.py в _process_toarray_args (self, order, out) 1185вернуть 1186 иначе: -> 1187 вернуть np.zeros (self.shape, dtype = self.dtype, order = order) 1188 1189
MemoryError:
Я предполагаю, что этопроисходит потому, что не хватает памяти. Есть ли способ сделать это частично, чтобы мне не хватило памяти?