Мини-пакетное обучение классификатора scikit-learn, где я предоставляю мини-пакеты

У меня очень большой набор данных, который не может быть загружен в память.

Я хочу использовать этот набор данных в качестве обучающего набора классификатора scikit-learn - например, LogisticRegression.

Есть ли возможность выполнить мини-пакетное обучение классификатора scikit-learn, где я предоставляю мини-пакеты?


person Ulderique Demoitre    schedule 25.10.2017    source источник


Ответы (2)


Я считаю, что некоторые классификаторы в sklearn имеют метод partial_fit. Этот метод позволяет передавать минипакеты данных классификатору, так что шаг градиентного спуска выполняется для каждого минипакета. Вы должны просто загрузить мини-пакет с диска, передать его partial_fit, освободить мини-пакет из памяти и повторить.

Если вы особенно заинтересованы в том, чтобы сделать это для логистической регрессии, вам следует использовать _ 4_, который можно настроить на использование логистической регрессии, когда loss = 'log'.

Вы просто передаете функции и метки своего мини-пакета в partial_fit так же, как вы использовали бы fit:

clf.partial_fit(X_minibatch, y_minibatch)

Обновление:

Недавно я наткнулся на dask-ml library , который упростил бы эту задачу, объединив массивы dask с partial_fit. Пример есть на связанной веб-странице.

person Angus Williams    schedule 25.10.2017
comment
Вы также можете частично уместить LogisticRegression экземпляр - person Robin; 16.01.2020

Взгляните на стратегии масштабирования, включенные в sklearn документацию: http://scikit-learn.org/stable/modules/scaling_strategies.html.

Здесь представлен хороший пример: http://scikit-learn.org/stable/auto_examples/applications/plot_out_of_core_classification.html

person elson serrao    schedule 25.10.2017