贝叶斯

问题描述 投票:0回答:1

是否可以(如果可以的话)动态训练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)
python scikit-learn sklearn-pandas naivebayes
1个回答
2
投票

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所言

© www.soinside.com 2019 - 2024. All rights reserved.