我想在scikit-learn中以在线方式训练PassiveAggressiveClassifier。
我想知道实例化这个分类器的正确方法是否是
PA_I_online = PassiveAggressiveClassifier(warm_start=True)
根据文档
warm_start : bool, optional当设置为True时,使用上次调用fit的解决方案作为初始化,否则,仅擦除之前的解决方案。
这正是在线/增量设置中所需的 – 在下一个数据点上继续训练模型。
但在示例中,它被实例化为
'Passive-Aggressive': PassiveAggressiveClassifier()
同样在这个代码中也是如此
注意,根据文档,warm_start的默认值为False
我是不是遗漏了什么?
我的在线训练的完整代码片段是:
# 给定X_train, y_train, X_test和y_test, labelsPA_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): #获取第i个数据点 X_i = X_train[i] y_i = y_train[i] #重塑它 X_i = X_i.reshape(1,300) y_i = y_i.reshape(1,) #消费数据点 PA_I_online.partial_fit(X_i, y_i, no_of_classes)
关键:使用PassiveAggressiveClassifier()进行在线训练时,是不是必须设置参数warm_start=True
回答:
当你使用partial_fit()
时,模型在任何情况下都不会被重新初始化。文档中关于fit()
方法的说明,默认情况下会重置模型参数并从头开始训练。warm_start=True
更多是为fit()
方法设计的。
你可能会发现这个讨论对进一步了解很有帮助。