2013-03-01 3 views
1

Мне нужно обучить классификатор svm в sklearn. Размеры векторов признаков идут сотнями тысяч, и есть десятки тысяч таких векторов признаков. Однако каждый размер может быть 0, 1 или -1. Только около 100 отличных от нуля в каждом объекте. Любой эффективный способ предоставить информацию об объектных векторах в классификатор?Ошибка памяти Python - огромные входные данные Sklearn?

ответ

2

Мне нужно обучить классификатор svm в sklearn.

Вы имеете в виду sklearn.svm.SVC? Для высокоразмерных разреженных данных и многих образцов LinearSVC, LogisticRegression, PassiveAggressiveClassifier или SGDClassifier может быть намного быстрее, чтобы тренироваться для сопоставимой точности прогноза.

Размеры вектора признаков идут в lakhs, и есть десятки тысяч таких векторов признаков. Однако каждый размер может быть 0, 1 или -1. Только около 100 отличных от нуля в каждом объекте. Любой эффективный способ предоставить информацию об объектных векторах в классификатор?

Найти способ загрузки данных в виде матрицы scipy.sparse, которая не хранит нули в памяти. Посмотрите на documentation on feature extraction. Это даст вам инструменты для этого, в зависимости от характера представления исходных данных.

+0

Спасибо! Редкие матрицы работали блестяще. Однако классификатор занимает много времени, чтобы пройти подготовку. Какие-либо предложения? – user2115183

+0

Пожалуйста, откройте новый вопрос с подробностями: какой класс sklearn, какова форма данных, каков уровень разреженности, сколько целевых классов ... – ogrisel

+0

Обратите внимание, что согласно документации ваш массив должен быть c-смежным. Если вы работаете с Pandas DataFrame, вы, вероятно, работаете с f-смежными массивами. Это может привести к исключению памяти Python при запуске любого алгоритма scikit. – mjaskowski

Смежные вопросы