在整个数据集上或仅在训练数据上计算 TF-IDF?
Computing TF-IDF on the whole dataset or only on training data?
本书第七章"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.
同时 transform()
Transforms documents to document-term matrix.
在训练集上,您需要同时应用 fit()
和 transform()
(或者只应用 fit_transform()
,本质上加入了这两个操作),但是,在测试集上,您只需要 transform()
测试实例(即文档)。
请记住,训练集用于学习目的(学习是通过 fit()
实现的),而测试集用于评估训练的模型是否可以很好地泛化到新的 unseen 数据点。
更多详情可以参考文章fit() vs transform() vs fit_transform()
Author gives all text data before separating train and test to
function. Is it a true action or we must separate data first then
perform tfidf fit_transform on train and transform on test?
我认为这已经将有关测试集的一些信息泄漏到训练集中。
我倾向于始终遵循以下规则:在进行任何预处理之前,首先要做的是分离数据,创建一个保留集。
当我们谈论文本数据时,我们必须确保模型仅根据训练集的词汇进行训练,因为当我们在现实生活中部署模型时,它会遇到它从未遇到过的词之前见过,所以我们必须牢记这一点对测试集进行验证。
我们必须确保测试集中的新词不是模型词汇表的一部分。
因此我们必须在训练数据上使用 fit_transform 并在测试数据上进行转换。
如果您考虑进行交叉验证,那么您可以在所有折叠中使用此逻辑。
本书第七章"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.
同时 transform()
Transforms documents to document-term matrix.
在训练集上,您需要同时应用 fit()
和 transform()
(或者只应用 fit_transform()
,本质上加入了这两个操作),但是,在测试集上,您只需要 transform()
测试实例(即文档)。
请记住,训练集用于学习目的(学习是通过 fit()
实现的),而测试集用于评估训练的模型是否可以很好地泛化到新的 unseen 数据点。
更多详情可以参考文章fit() vs transform() vs fit_transform()
Author gives all text data before separating train and test to function. Is it a true action or we must separate data first then perform tfidf fit_transform on train and transform on test?
我认为这已经将有关测试集的一些信息泄漏到训练集中。
我倾向于始终遵循以下规则:在进行任何预处理之前,首先要做的是分离数据,创建一个保留集。
当我们谈论文本数据时,我们必须确保模型仅根据训练集的词汇进行训练,因为当我们在现实生活中部署模型时,它会遇到它从未遇到过的词之前见过,所以我们必须牢记这一点对测试集进行验证。
我们必须确保测试集中的新词不是模型词汇表的一部分。
因此我们必须在训练数据上使用 fit_transform 并在测试数据上进行转换。
如果您考虑进行交叉验证,那么您可以在所有折叠中使用此逻辑。