在sklearn SVM中使用gensim Random Projection

时间:2017-04-04 16:41:21

标签: scikit-learn tf-idf gensim

是否可以使用gensim随机投影在sklearn中训练SVM?
我需要使用gensim的tfidf实现,因为它更好地处理大输入,然后想把它放到我将训练我的SVM的随机投影中。我也很乐意将gensim生成的tfidf模型传递给sklearn并使用他们的随机投影,如果这样可以使事情变得更容易。
但到目前为止,我还没有找到办法让任何一个模型从gensim进入sklearn。

我尝试使用gensim.matutils.corpus2csc,但当然不起作用:TfidfModel和RpModel都不是corpi,所以现在我对接下来要尝试的内容毫无头绪。

1 个答案:

答案 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模型时需要注意的一点是,您仍然需要执行dictionarycorpus步骤。因此,您不必在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_traincorpus_test上拟合/预测您的模型。