【问题标题】:Does scikit's cross_val_predict calculates tfidf anew for each fold?scikit 的 cross_val_predict 是否为每个折叠重新计算 tfidf?
【发布时间】:2019-01-18 11:46:48
【问题描述】:

我已经训练了一个这样的分类器:

text_clf = Pipeline([('vect', CountVectorizer()),('tfidf', TfidfTransformer()),('clf', clf),])  

y_predicted=cross_validation.cross_val_predict(text_clf, X, y, cv=3, n_jobs=3, verbose=2)

由于我使用的是带有 tfidf-statistics 的管道对象,因此我想知道 tfidf 值是针对每个折叠重新计算,还是在整个数据集上计算并且每个折叠使用相同的值。

【问题讨论】:

  • 管道的每个组件都会为每个折叠重新计算。
  • 你怎么知道的?文档中是否提到过,因为我找不到它:(
  • 我明白你的意思,但即使在文档中,有些东西也被认为过于简单,无法明确提及;做相反的事情(即计算整个数据集中的 tf-idf 值并将其用于 CV)将完全违反 CV 和管道的 核心思想 ...我相信可以确认此案正如我通过挖掘源代码所说的那样,但我非常怀疑它是否值得大惊小怪......
  • 这就是我问这个问题的原因 :) 我只是想确保 scikit 以正确的方式做到这一点。谢谢!请把它作为答案发布

标签: python machine-learning scikit-learn cross-validation tf-idf


【解决方案1】:

管道的每个组件在交叉验证 (CV) 期间为每个折叠重新计算。做相反的事情(即计算整个数据集中的 tf-idf 值并在 CV 期间将这些值用于其余管道组件)将完全违反 CV 和管道的核心思想

文档中是否提到过,因为我找不到它

确实不是;重点是,即使在文档中,有些东西也被认为过于基本,无法明确地提及

【讨论】:

    猜你喜欢
    • 2017-05-18
    • 2021-01-01
    • 2017-12-18
    • 1970-01-01
    • 1970-01-01
    • 2016-12-29
    • 2018-05-13
    • 1970-01-01
    • 2015-10-22
    相关资源
    最近更新 更多