在本书《TensorFlow Machine Learning Cookbook》的第七章中,作者在预处理数据时使用了scikit-learn的fit_transform
函数来获取tfidf
特征用于训练的文本。作者将所有文本数据提供给函数,然后将其分为训练和测试。这是一个真实的操作,还是我们必须先分离数据,然后在训练中执行 fit_transform
并在测试中执行 transform
?
最佳答案
根据 scikit-learn 的文档,使用 fit()
是为了
Learn vocabulary and idf from training set.
另一方面,使用 fit_transform()
是为了
Learn vocabulary and idf, return term-document matrix.
同时变换()
Transforms documents to document-term matrix.
在训练集上,您需要应用 fit()
和 transform()
(或者只是 fit_transform()
,本质上将两者结合起来操作),但是,在测试集上,您只需要 transform()
测试实例(即文档)。
请记住,训练集用于学习目的(学习是通过 fit()
实现的),而测试集用于评估训练后的模型是否可以很好地推广到新的未见过的模型数据点。
更多详情可以引用文章fit() vs transform() vs fit_transform()
关于python - 在整个数据集上计算 TF-IDF 还是仅在训练数据上计算 TF-IDF?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47778403/