我已经使用朴素贝叶斯算法实现了 ML 模型,我想在其中实现增量学习。我面临的问题是当我训练我的模型时,它在预处理时生成 1500 个特征,然后在一个月后使用反馈机制,如果我想用可能包含一些新特征的新数据训练我的模型,可能少于或多于超过 1500(即我以前的数据集)如果我fit_transform用来获取新功能,那么我现有的功能集就会丢失。我一直在使用部分拟合,但部分拟合的问题是您需要与以前模型相同数量的特征。我如何让它循序渐进地学习?cv = CountVectorizer()X = cv.fit_transform(corpus).toarray() #replaces my older feature setclassifier = GaussianNB()classifier.partial_fit(X,y) #does not fit because the size of feature set count is not equal to previous feature set count
2 回答
一只名叫tom的猫
TA贡献1906条经验 获得超3个赞
你不能用CountVectorizer
. 您将需要修复partial_fit()
in的功能数量GaussianNB
。
现在您可以使用不同的预处理器(代替CountVectorizer
),它可以将输入(旧的和新的)映射到相同的特征空间。看看HashingVectorizer
scikit-learn 作者推荐在你提到的场景中使用哪个。初始化时,您需要指定所需的功能数量。在大多数情况下,默认值足以避免不同单词的哈希冲突。您可以尝试尝试不同的数字。尝试使用它并检查性能。如果不符合,CountVectorizer
那么您可以按照@AI_Learning 的建议进行操作,并在整个数据上创建一个新模型(旧+新)。
添加回答
举报
0/150
提交
取消