在整个数据集上还是仅在训练数据上计算TF-IDF?

ker*_*mat 9 nlp machine-learning tf-idf scikit-learn tensorflow

在本书“ TensorFlow机器学习指南”的第七章中,作者在数据预处理中使用fit_transformscikit-learn的tfidf功能来获取文本的特征进行训练。作者将所有文本数据提供给函数,然后再将其分为训练和测试。这是真的吗?还是我们必须先分离数据,然后再进行fit_transform训练和transform测试?

Gio*_*ous 8

我还没有读过这本书,也不确定这是否是本书中的错误,但是我会给我2美分。

根据scikit-learn的文档,fit()用于

从培训集中学习词汇和IDF。

另一方面,fit_transform()用于

学习词汇表和IDF,返回术语文档矩阵。

transform()

将文档转换为文档术语矩阵。

在训练集上,您需要同时应用fit()transform()(或仅fit_transform()将这两个操作基本结合在一起),但是,在测试集上,您仅需要对transform()测试实例(即文档)进行应用。

请记住,训练集用于学习目的(通过学习来实现fit()),而测试集用于评估训练后的模型是否可以很好地推广到新的看不见的数据点。

  • 是的,确实如此,我们不应该在训练中使用测试数据。如果我们对所有数据集进行 fit_transform ,则意味着我们在训练级别使用测试数据。这两种方式得到的词汇也不同。 (3认同)