如何在python中使用朴素贝叶斯算法实现增量学习?

我已经使用朴素贝叶斯算法实现了 ML 模型,我想在其中实现增量学习。我面临的问题是当我训练我的模型时,它在预处理时生成 1500 个特征,然后在一个月后使用反馈机制,如果我想用可能包含一些新特征的新数据训练我的模型,可能少于或多于超过 1500(即我以前的数据集)如果我fit_transform用来获取新功能,那么我现有的功能集就会丢失。


我一直在使用部分拟合,但部分拟合的问题是您需要与以前模型相同数量的特征。我如何让它循序渐进地学习?


cv = CountVectorizer()


X = cv.fit_transform(corpus).toarray() #replaces my older feature set


classifier = GaussianNB()


classifier.partial_fit(X,y) 

#does not fit because the size of feature set count is not equal to previous feature set count


慕森王
浏览 258回答 2
2回答

一只名叫tom的猫

你不能用CountVectorizer. 您将需要修复partial_fit()in的功能数量GaussianNB。现在您可以使用不同的预处理器(代替CountVectorizer),它可以将输入(旧的和新的)映射到相同的特征空间。看看HashingVectorizerscikit-learn 作者推荐在你提到的场景中使用哪个。初始化时,您需要指定所需的功能数量。在大多数情况下,默认值足以避免不同单词的哈希冲突。您可以尝试尝试不同的数字。尝试使用它并检查性能。如果不符合,CountVectorizer那么您可以按照@AI_Learning 的建议进行操作,并在整个数据上创建一个新模型(旧+新)。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python