gpt4 book ai didi

machine-learning - 我可以同时对测试和训练数据使用 CountVectorizer 还是需要将其分开?

转载 作者:行者123 更新时间:2023-12-02 17:00:13 25 4
gpt4 key购买 nike

我目前有一个 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)

最佳答案

首先拆分训练集和测试集,然后只拟合训练集并转换测试集

如果反过来,你就是leaking information从测试集到训练集。这可能会导致过度拟合,这将使您的模型不能很好地泛化到新的、看不见的数据。

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

关于machine-learning - 我可以同时对测试和训练数据使用 CountVectorizer 还是需要将其分开?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54491953/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com