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的方法。
Here 是 fit()
和 fit_transform()
的基本文档。
你对工作的理解是正确的。测试时参数设置为tf-idf Vectorizer
。这些参数被存储并稍后用于转换测试数据。
- 训练数据 -
fit_transform()
- 测试数据-
transform()
如果您想查看内部工作原理,您应该查看 source code 同样的内容。
我正在使用以下代码:
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的方法。
Here 是 fit()
和 fit_transform()
的基本文档。
你对工作的理解是正确的。测试时参数设置为tf-idf Vectorizer
。这些参数被存储并稍后用于转换测试数据。
- 训练数据 -
fit_transform()
- 测试数据-
transform()
如果您想查看内部工作原理,您应该查看 source code 同样的内容。