我需要经常使用新的训练数据更新我训练过的模型,而不想再次进行整个训练,那么如何使用一些现有的库和ML算法使其适合增量学习?理想情况下,我想看一个NLTK贝叶斯或scikit贝叶斯的例子。这里有一些答案,说这很难,但我相信会有一些图书馆允许我们这样做:
model.update(新-trainingdata)
不重复整个数据?
答案 0 :(得分:2)
在scikit-learn中,您可以使用MultinomialNB,GaussianNB和BernoulliNB中提供的partial_fit()
函数逐步使您的模型适合批量数据。当您处理如此多的数据时,这非常有用,以至于您无法在内存中同时处理所有数据。
显示其可能如何工作的示例如下:
from sklearn.naive_bayes import GaussianNB
import numpy as np
import pandas as pd
X = np.array([[1],[0],[2],[3],[4],[5],[1],[2],[3],[1],[3]])
Y = np.array([1,1,1,1,1,0,0,0,0,1,1])
all_classes = np.array([0,1])
clf = GaussianNB()
print clf.partial_fit(X, Y, classes=all_classes).class_count_
print clf.partial_fit(X,Y, classes=all_classes).class_count_
产量
[ 4. 7.]
[ 8. 14.]
这是有道理的,因为分类器会看到4 0和7 1两次。