在构建具有文本和分类特征的模型时,什么时候执行train_test_split?

问题描述

我正在尝试训练一个结合了数字,分类和文本特征的模型。 我的问题是要向量化我的文本和分类特征,应该执行以下哪一项操作?

  1. 出于特征矢量化的目的,即使用traincvtest,我将数据分为vectorizor.fit(train)vectorizor.transform(cv)vectorizor.transform(test) / li>
  2. 在整个数据上使用vectorizor.fit transform

我的目标是hstack(以上所有功能)并应用 NaiveBayes 。我想我应该在此之前将数据拆分为train_test,以便为NB找到最佳的超参数。

请对此发表一些想法。我是数据科学的新手。

解决方法

如果您要为数据拟合诸如Imputer或Standard Scaler之类的数据,我建议在拆分后执行此操作,因为这样可以避免任何测试数据集泄漏到训练集中。但是,应该能够在整个数据集上安全地完成数据的格式化和简单转换,一键编码之类的事情,并且避免了一些额外的工作。

,

我认为您应该在整个数据上使用第二个选项,即vectorizer.fit_transform,因为如果您之前拆分过数据,则可能会发生某些正在测试的数据可能不在训练中的情况,因此在某些情况下,某些类可能无法识别