在《TensorFlow机器学习食谱》一书的第七章中,作者在预处理数据时使用了scikit-learn的fit_transform
函数来获取文本的tfidf
特征。在将数据分成训练集和测试集之前,作者将所有文本数据都输入到该函数中。这是一种正确的方法吗?还是我们应该先分离数据,然后在训练集上执行fit_transform
,在测试集上执行transform
?
回答:
根据scikit-learn的文档,fit()
用于
从训练集学习词汇表和idf。
另一方面,fit_transform()
用于
学习词汇表和idf,返回术语-文档矩阵。
而transform()
将文档转换为文档-术语矩阵。
在训练集上,你需要同时应用fit()
和transform()
(或者只用fit_transform()
,它本质上是这两个操作的结合),然而,在测试集上,你只需要对测试实例(即文档)执行transform()
。
请记住,训练集用于学习目的(通过fit()
实现学习),而测试集用于评估训练模型是否能很好地泛化到新的未见过的数据点上。
有关更多详细信息,您可以参考文章fit() vs transform() vs fit_transform()