我使用大量数据训练了岭分类器,使用tfidf vecotrizer
来对数据进行矢量化,并且过去工作正常。但现在我正面临一个错误
'max_df对应于<文件比min_df'
数据存储在Mongodb中 我尝试了各种选项来解决它,最后当我删除Mongodb中只有1个文档(1条记录)的集合时,它正常工作并像往常一样完成了培训。
但我需要一个不需要删除记录的解决方案,因为我需要该记录。
另外,我不理解错误,因为它只在我的机器中。脚本在我的系统之前工作正常,即使这个记录存在于db中。脚本在其他系统中工作正常。
有人可以帮忙吗?
答案 0 :(得分:1)
该错误告诉您max_df
的值小于min_df
的值。
例如:
max_df = 0.7 # Removes terms with DF higher than the 70% of the documents
min_df = 5 # Terms must have DF >= 5 to be considered
,并假设您语料库中的文档总数为 7 ,因此max_df
现在为0.7 * 7 = 4.9,而min_df
仍然为5,则{{ 1}},并且永远不会发生,因为这意味着将考虑 0个词; DF永远不会低于4.9且高于5。
答案 1 :(得分:0)
max_df 的值应始终小于 min_df。该值应小于 0.9 或 0.009 或 0.0009。如果您的语料库具有巨大的价值,可能是数千、数百万或数十亿,那么这些将产生更多进动。
max_df = 0.9 #default from sklearn is 1.0
min_df = 10 #can be more or less to create a precission value
max_df 和 min_df 的值不应在附近。比如语料是1000,max_df是0.9,min_df是10,所以比较新的max_df是900,min_df是10那么max_df还是不小于min_df。
解决方案是 max_df 应该是 0.009 然后乘以 1000,所以新的 max_df 是 9 < min_df 是 10。那么这两者之间的差异是 1。我认为 tfidf 的结果可能是最佳的。
#Experiment 1:
max_df = 0.009
min_df = 10
#Experiment 2:
max_df = 0.09
min_df = 100