Python Scikit Learn GridSearchCV在gensim LDA模型上失败

Python Scikit Learn GridSearchCV在gensim LDA模型上失败,python,scikit-learn,gensim,lda,gridsearchcv,Python,Scikit Learn,Gensim,Lda,Gridsearchcv,以下是创建模型的代码: import gensim NUM_TOPICS = 4 ldamodel = gensim.models.ldamodel.LdaModel(corpus,num_topics = NUM_TOPICS,id2word=dictionary,passes=100) ldamodel.save('model5.gensim') topics = ldamodel.print_topics(num_words=4) print(topics) 这是GridSearchC

以下是创建模型的代码:

import gensim
NUM_TOPICS = 4
ldamodel = gensim.models.ldamodel.LdaModel(corpus,num_topics = 
NUM_TOPICS,id2word=dictionary,passes=100)
ldamodel.save('model5.gensim')
topics = ldamodel.print_topics(num_words=4)
print(topics)
这是GridSearchCV的代码:

search_params = {'n_components': [4, 6, 8, 10, 20], 'learning_decay': [.5, .7, .9]}


# Init Grid Search Class
model = GridSearchCV(ldamodel, param_grid=search_params)

# Do the Grid Search
model.fit(data_vectorized)
这是输出:

*---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-108-1a35c49ac19e> in <module>
      9 
     10 # Do the Grid Search
---> 11 model.fit(data_vectorized)
~\AppData\Local\Continuum\anaconda3\lib\site-packages\sklearn\model_selection\_search.py in fit(self, X, y, groups, **fit_params)
    627 
    628         scorers, self.multimetric_ = _check_multimetric_scoring(
--> 629             self.estimator, scoring=self.scoring)
    630 
    631         if self.multimetric_:
~\AppData\Local\Continuum\anaconda3\lib\site-packages\sklearn\metrics\_scorer.py in _check_multimetric_scoring(estimator, scoring)
    471     if callable(scoring) or scoring is None or isinstance(scoring,
    472                                                           str):
--> 473         scorers = {"score": check_scoring(estimator, scoring=scoring)}
    474         return scorers, False
    475     else:
~\AppData\Local\Continuum\anaconda3\lib\site-packages\sklearn\metrics\_scorer.py in check_scoring(estimator, scoring, allow_none)
    399     if not hasattr(estimator, 'fit'):
    400         raise TypeError("estimator should be an estimator implementing "
--> 401                         "'fit' method, %r was passed" % estimator)
    402     if isinstance(scoring, str):
    403         return get_scorer(scoring)
TypeError: estimator should be an estimator implementing 'fit' method, <gensim.models.ldamodel.LdaModel object at 0x000002121E55D3C8> was passed*
*---------------------------------------------------------------------------
TypeError回溯(最近一次调用上次)
在里面
9
10#进行网格搜索
--->11模型拟合(数据矢量化)
~\AppData\Local\Continuum\anaconda3\lib\site packages\sklearn\model\u selection\\u search.py in fit(self、X、y、groups、**fit\u参数)
627
628名记分员,自我多重记分(
-->629自我评估,评分=自我评分)
630
631如果自多米制:
~\AppData\Local\Continuum\anaconda3\lib\site packages\sklearn\metrics\u scorer.py in\u check\u multimetric\u评分(估计器,评分)
471如果可调用(计分)或计分为无或不存在(计分),
472(str):
-->473名评分员={“评分”:检查评分(估计员,评分=评分)}
474名返场得分手,错
475其他:
检查评分中的~\AppData\Local\Continuum\anaconda3\lib\site packages\sklearn\metrics\\u scorer.py(估计器,评分,允许无)
399如果不是hasattr(估计器,“拟合”):
400 raise TypeError(“估计员应是实施的估计员”
-->401“‘拟合’方法,%r已通过”%estimator)
402如果存在(评分,str):
403返程记分员(记分)
TypeError:estimator应该是实现“拟合”方法的估计器,已通过*

您试图使用
scikit学习
包中的
GridSearchCV
对象,该包需要运行它的模型对象来实现某些方法(如错误消息中所示:
fit
方法)。由于
scikit learn
gensim
没有任何关系,因此您需要确保它们通过
fit
方法中的
gensim
培训兼容和封装

此外,在我看来,它似乎并没有使用您试图搜索的参数(
n_components
learning_decay
)。只能搜索模型使用的参数值