Инкрементно подходящая склеарн RandomForestClassifier - PullRequest
0 голосов
/ 12 марта 2019

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

согласование вызовов с новыми данными:

clf = RandomForestClassifier(n_estimators=100)
for i in customRange:
    get_data()
    clf.fit(new_train_data) #directly fitting new train data
    clf.predict(new_test_data)

Или единственное решение - сохранение истории данных поездов и подбор вызовов по всем историческим данным

clf = RandomForestClassifier(n_estimators=100)
global_train_data = new dict()
for i in customRange:
    get_data()
    global_train_data.append(new_train_data)  #Appending new train data 
    clf.fit(global_train_data) #Fitting on global train data
    clf.predict(new_test_data)

Моя цель состоит в том, чтобы эффективно обучать модели, поэтому я не хочу тратить время на повторное обучение моделей процессорного времени.

Я хочу подтвердить правильный подход, а также узнать, является ли этот подход согласованным во всех всехклассификаторы

1 Ответ

4 голосов
/ 12 марта 2019

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

То, что вы на самом деле ищете, это аргумент warm_start;из документов :

warm_start: bool, необязательно (по умолчанию = False)

Когда установлено значениеTrue, повторно использовать решение предыдущего вызова для подгонки и добавления дополнительных оценок в ансамбль, иначе просто подгонять целый новый лес.См. Глоссарий .

Итак, вы должны использовать свой 1-й подход со следующей модификацией:

clf = RandomForestClassifier(n_estimators=100, warm_start=True)

Это не обязательно согласуется во всех классификаторах (некоторые поставляются с методом partial_fit) - см., например, Можно ли постепенно обучать модели sklearn (например, SVM)? для SGDClasssifier;Вы должны всегда проверить соответствующую документацию.

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