TF-IDF 向量示例(帮助)

TF-IDF Vectors Example (HELP)

嘿,我做了 3 种不同的方法,但我无法决定哪种方法是使用 TF-IDF 的正确方法:

第一个代码确实适合并转换为 x_train 和 x_test 分别给出 (5000, 94462) (5000, 93007).

第二个代码同时使用训练和测试,我认为这是不正确的,因为 idf 仅根据训练文档计算,给出 (5000, 152800) (5000, 152800)。

第三个代码给出 (5000, 94462) (5000, 94462)。

对我来说,第三个代码是正确的,因为我只使用训练数据并根据它们转换测试数据。

from sklearn.feature_extraction.text import TfidfVectorizer
vectorizer = TfidfVectorizer()
xtrain_tfidf = vectorizer.fit_transform(x_train)
xtest_tfidf = vectorizer.fit_transform(x_test)
print(xtrain_tfidf.shape)
print(xtest_tfidf.shape)

from sklearn.feature_extraction.text import TfidfVectorizer
vectorizer = TfidfVectorizer()
vectorizer.fit(x_train+x_test)
xtrain_tfidf = vectorizer.transform(x_train)
xtest_tfidf = vectorizer.transform(x_test)
print(xtrain_tfidf.shape)
print(xtest_tfidf.shape)

from sklearn.feature_extraction.text import TfidfVectorizer
vect = TfidfVectorizer()
vect.fit(x_train)
x_test_vectorized = vect.transform(x_test)

正确的方法是fittransform==fit_transform你的训练数据和只有transform测试数据.


from sklearn.feature_extraction.text import TfidfVectorizer

vectorizer = TfidfVectorizer()
xtrain_tfidf = vectorizer.fit_transform(x_train)
xtest_tfidf = vectorizer.transform(x_test)
print(xtrain_tfidf.shape)
print(xtest_tfidf.shape)

从来没有fit_transform测试数据。