2016-05-05 1 views
2

Я хочу обучать PassiveAggressiveClassifier в режиме scikit-learn в онлайн-настройках.Правильный способ использования PassiveAggressiveClassifier в scikit-learn в онлайн-настройке

мне было интересно, если правильный способ создать экземпляр этого классификатор является

PA_I_online = PassiveAggressiveClassifier(warm_start=True) 

В соответствии с Документами

warm_start : bool, optional 
When set to True, reuse the solution of the previous call to fit as initialization, otherwise, just erase the previous solution. 

что и мне нужно будет в онлайн/дополнительных настроек - Продолжить обучение модель на следующей точке данных.

Но в example, он intiantiated в

'Passive-Aggressive': PassiveAggressiveClassifier() 

Аналогично в this code слишком

Примечание, согласно docs стоимости warm_start по умолчанию = False

Могу ли я что-то отсутствует ?

Мой полный код snipet для онлайн-обучения:

# Given X_train, y_train, X_test and y_test, labels 

PA_I_online = PassiveAggressiveClassifier(loss='hinge', warm_start=True) 

no_of_samples = len(X_train) 
no_of_classes= np.unique(labels) 

for i in range(no_of_samples): 
    #get the ith datapoint 
    X_i = X_train[i] 
    y_i = y_train[i] 

    #reshape it 
    X_i = X_i.reshape(1,300) 
    y_i = y_i.reshape(1,) 

    #consume data point 
    PA_I_online.partial_fit(X_i, y_i, no_of_classes) 

Crux: Для того, чтобы сделать обучение онлайн с помощью использования PassiveAggressiveClassifier() не так необходимо установить аргумент warm_start = True

ответ

1

Когда вы используете partial_fit(), модель не переинициализируется в любом случае. В документации говорится о методе fit(), который по умолчанию сбрасывает параметры модели и поезда с нуля. warm_start=True больше подходит для fit() метода.

this discussion Полезно для более подробной информации.