max_df对应于岭分类器中的文件而不是min_df错误

时间:2016-10-03 09:26:37

标签: mongodb machine-learning tf-idf

我使用大量数据训练了岭分类器,使用tfidf vecotrizer来对数据进行矢量化,并且过去工作正常。但现在我正面临一个错误

  

'max_df对应于<文件比min_df'

数据存储在Mongodb中 我尝试了各种选项来解决它,最后当我删除Mongodb中只有1个文档(1条记录)的集合时,它正常工作并像往常一样完成了培训。

但我需要一个不需要删除记录的解决方案,因为我需要该记录。

另外,我不理解错误,因为它只在我的机器中。脚本在我的系统之前工作正常,即使这个记录存在于db中。脚本在其他系统中工作正常。

有人可以帮忙吗?

2 个答案:

答案 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