在本书的第七章“TensorFlow机器学习手册”中,作者在预处理数据中使用fit_transform
scikit-learn功能来获取tfidf
文本的训练功能。作者将所有文本数据分配给函数,然后将其分为训练和测试。这是一个真正的行动还是我们必须首先分离数据,然后在火车和fit_transform
上进行tfidf transform
测试?
我没有读过这本书,我不确定这本书是否真的是一个错误,但我会给出2美分。
根据scikit-learn的文档,fit()
用于
从训练集中学习词汇和idf。
另一方面,fit_transform()
用于
学习词汇和idf,返回术语 - 文档矩阵。
而transform()
将文档转换为文档术语矩阵。
在训练集上你需要应用fit()
和transform()
(或者只是fit_transform()
基本上加入两个操作)但是,在测试集上你只需要transform()
测试实例(即文档)。
请记住,训练集用于学习目的(学习是通过fit()
实现的),而测试集用于评估训练的模型是否可以很好地推广到新的看不见的数据点。
作者在分离列车和测试功能之前给出所有文本数据。这是一个真正的行动还是我们必须首先分离数据然后在火车上执行tfidf fit_transform并在测试中进行转换?
我认为这已经将有关测试集的一些信息泄漏到训练集中。
我倾向于始终遵循以下规则:在进行任何预处理之前,首先要做的是分离数据,创建一个保持集。