2016-08-11 4 views
2

Происхождение проблемы является общим:модель Sklearn Fit несколько раз

наличие большого количества железнодорожных данных, которое было зачитано на куски. Точка интереса состоит в том, чтобы последовательно разместить желаемую модель на наборе данных, сохраняя состояния предыдущего фитинга.

Есть ли какие-либо методы, кроме partial_fit(), чтобы соответствовать модели с использованием sklearn по разным данным? или есть ли какие-либо трюки, чтобы переписать код функции fit(), чтобы настроить его для этой проблемы? или возможно, что некоторые знают с pickle?

+1

Почему вы пытаетесь избежать 'partial_fit()'? – 0x60

+0

@ 0x60, возможно, потому что partial_fit работает только с подмножеством моделей. – miku

+0

точно, потому что диапазон доступных методов ограничен –

ответ

4

Существует причина, по которой некоторые модели выставляют partial_fit(), а другие нет. Каждая модель представляет собой другой алгоритм машинного обучения, и для многих из этих алгоритмов просто невозможно добавить элемент без пересчета модели с нуля.

Итак, если вам нужно поэтапно вставлять модели, выберите инкрементную модель с partial_fit(). Вы можете найти полный список на this documentation page.

В качестве альтернативы вы можете построить модель ансамбля. Создайте отдельный файл Classifier() или Regression() для каждого фрагмента данных, которые у вас есть. Затем, когда вам нужно что-то предсказать, вы можете просто

for classifier in classifiers: 
    votes[classifier.predict(X)] += 1 
prediction = numpy.argmax(votes) 

или, регрессоров

prediction = numpy.mean([regressor.predict(X) for regressor in regressors] 
+0

Да, это тот момент, о котором мне было интересно. Я понимаю, что некоторые из алгоритмов ML вряд ли можно переделать. Таким образом, нет другого способа иметь большую ОЗУ для методов без 'partial_fit()'? Я думал, что может быть способ сохранить подходящие результаты и сравнить его с результатами, достигнутыми после новой подгонки. –

+0

Я вижу. Бросил другую идею в ответ. – 0x60

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