是否可以(如果可以的话)动态训练sklearn MultinomialNB Classifier?
我希望这个(不工作)。
x_train, x_test, y_train, y_test = tts(features, labels, test_size=0.2)
clf = MultinomialNB()
for i in range(len(x_train)):
clf.fit([x_train[i]], [y_train[i]])
preds = clf.predict(x_test)
和这个(工作正常)有类似的结果。
x_train, x_test, y_train, y_test = tts(features, labels, test_size=0.2)
clf = MultinomialNB()
clf.fit(x_train, y_train)
preds = clf.predict(x_test)
Scikit-learn 支持多种算法的增量学习,包括 MultinomialNB。查看文档 此处
你需要使用的方法是 partial_fit()
而不是 fit()
,所以你的例子代码会是这样的。
x_train, x_test, y_train, y_test = tts(features, labels, test_size=0.2)
clf = MultinomialNB()
for i in range(len(x_train)):
if i == 0:
clf.partial_fit([x_train[i]], [y_train[I]], classes=numpy.unique(y_train))
else:
clf.partial_fit([x_train[i]], [y_train[I]])
preds = clf.predict(x_test)
编辑:添加 classes
争论 partial_fit
如@BobWazowski所言