是否可以使用gensim随机投影在sklearn中训练SVM?
我需要使用gensim
的tfidf实现,因为它更好地处理大输入,然后想把它放到我将训练我的SVM的随机投影中。我也很乐意将gensim
生成的tfidf模型传递给sklearn
并使用他们的随机投影,如果这样可以使事情变得更容易。
但到目前为止,我还没有找到办法让任何一个模型从gensim进入sklearn。
我尝试使用gensim.matutils.corpus2csc
,但当然不起作用:TfidfModel和RpModel都不是corpi,所以现在我对接下来要尝试的内容毫无头绪。
答案 0 :(得分:1)
由于Chinmaya Pancholi(see post here)提供了很棒的gensim
贡献,现在非常容易。
只需从`gensim:
导入sklearn
包装器
from gensim.sklearn_api import RpTransformer
然后,您可以像使用任何其他sklearn分类器一样使用模型进行分析:
model = RpTransformer(num_topics=2)
clf = svm.SVC()
pipe = Pipeline([('features', model,), ('classifier', clf)])
pipe.fit(X_train, y_train)
使用gensim
模型时需要注意的一点是,您仍然需要执行dictionary
和corpus
步骤。因此,您不必在X_train
上拟合模型,而是必须按照以下方式执行操作:
dictionary = Dictionary(X_train)
corpus_train = [dictionary.doc2bow(text) for text in X_train]
corpus_test = [dictionary.doc2bow(text) for text in X_test]
然后在corpus_train
或corpus_test
上拟合/预测您的模型。