我可以同时在测试和训练数据上使用 CountVectorizer 还是需要拆分它



我目前有一个SVM模型,可以将文本分为两个不同的类。我目前正在使用CountVectorizer和TfidfTransformer来创建我的"词向量"。

问题是,我认为当我首先转换所有文本然后将其拆分时,我可能会以错误的顺序执行此操作。

我的问题是,如果我先做train_test_split,然后只对训练数据进行fit_transform,然后对测试数据进行转换,会有什么区别吗?

正确的方法是什么?

提前非常感谢,编码愉快!

count_vect = CountVectorizer(stop_words='english')
X_counts = count_vect.fit_transform(textList)
tfidf_transformer = TfidfTransformer()
X_tfidf = tfidf_transformer.fit_transform(X_counts)
X_train, X_test, y_train, y_test = train_test_split(X_tfidf, correctLabels, test_size=.33, random_state=17)

首先在训练集和测试集中拆分,然后仅适合训练集并转换测试集

如果反之,则会将信息从测试集泄漏到训练集。这可能会导致过度拟合,从而使模型无法很好地泛化到新的、看不见的数据。

测试

集的目标是测试模型在新数据上的表现。在文本分析的情况下,这可能意味着它以前从未见过的单词,并且对单词的重要性或单词出现的新分布一无所知。如果你第一次使用你的 CountVectorizerTfIdfTransformer ,您将不知道它是如何响应的:毕竟,变压器已经看到了所有数据。问题是:你认为你已经构建了一个具有出色性能的出色模型,但是当它投入生产时,准确性会低得多。

相关内容

  • 没有找到相关文章

最新更新