我正在使用以下代码:
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适合火车数据,并且在model.predict()
上调用X_test
时,它只会基于拟合的火车数据进行tfidf变换。
由于tf idf通过获取文档和语料库中单词的出现频率而起作用,所以我想知道.fit_transform
和.transform
函数的底层会发生什么。
答案 0 :(得分:1)
1)非常接近您的问题,您可以在这里找到:What is the difference between TfidfVectorizer.fit_transfrom and tfidf.transform?
2)tfidf转换是在fit-transform
内部完成的,predict
在这里不对应于tfidf矢量化器,因为它不具有这种功能,它是SVC的方法。
答案 1 :(得分:1)
Here是fit()
和fit_transform()
的基本文档。
您对工作的理解是正确的。测试时,为tf-idf Vectorizer
设置参数。这些参数将存储起来,以后用于转换测试数据。
fit_transform()
transform()
如果要查看内部工作原理,则应该同样查看source code。