tfidf 将测试数据拟合到训练数据后如何进行转换?

How does tfidf transform test data after being fitted to train data?

我正在使用以下代码:

pipeline = Pipeline([('vect', 
                      TfidfVectorizer( ngram_range=(1,2),
                                       stop_words="english", 
                                       sublinear_tf=True ,
                                       use_idf=True, 
                                       norm='l2' )),
                     ('reduce_dim',
                      SelectPercentile(f_classif, 90)),
                     ('clf', 
                      SVC(kernel='linear',C=1.0, 
                          probability=True, max_iter=70000, 
                          class_weight='balanced'))])

model = pipeline.fit(X_train,y_train)
model.predict(X_test)

x=vectorizer.fit_transform(X_train_text)
y=vectorizer.transform(X_test_text)

据我了解,pipeline.fit() 将 tfidf 拟合到训练数据,当在 X_test 上调用 model.predict() 时,它仅根据拟合的训练数据进行 tfidf 转换。

由于 tf idf 通过获取文档和语料库中的单词频率来工作,我想知道 .fit_transform.transform 函数下面发生了什么。

1) 非常接近您的问题,您可以在这里找到:What is the difference between TfidfVectorizer.fit_transfrom and tfidf.transform?

2)tfidf变换是在fit-transform内部完成的,predict这里不对应tfidf vectorizer,因为它没有这个功能,是SVC的方法。

Herefit()fit_transform() 的基本文档。

你对工作的理解是正确的。测试时参数设置为tf-idf Vectorizer。这些参数被存储并稍后用于转换测试数据。

  • 训练数据 - fit_transform()
  • 测试数据-transform()

如果您想查看内部工作原理,您应该查看 source code 同样的内容。