我正在使用GridSearchCV和管道来对一些文本文档进行分类。以下是代码片段:
clf = Pipeline([('vect', TfidfVectorizer()), ('clf', SVC())])
parameters = {'vect__ngram_range' : [(1,2)], 'vect__min_df' : [2], 'vect__stop_words' : ['english'],
'vect__lowercase' : [True], 'vect__norm' : ['l2'], 'vect__analyzer' : ['word'], 'vect__binary' : [True],
'clf__kernel' : ['rbf'], 'clf__C' : [100], 'clf__gamma' : [0.01], 'clf__probability' : [True]}
grid_search = GridSearchCV(clf, parameters, n_jobs = -2, refit = True, cv = 10)
grid_search.fit(corpus, labels)
我的问题是,在使用
grid_search.predict_proba(new_doc)
时,想要通过grid_search.classes_
查看概率对应的类别,但是出现了以下错误:我错过了什么?我以为如果管道中的最后一个“步骤”是分类器,则GridSearchCV的返回值也是分类器。因此可以使用该分类器的属性,例如classes_。AttributeError: 'GridSearchCV'对象没有属性'classes_'。
grid_search.best_estimator_
是一个Pipeline对象,但我仍然可以获得grid_search.best_estimator_.classes_
。 不过,我正在使用开发版本。或者,您可以使用steps
属性访问管道的每个步骤:dict(grid_search.best_estimator_.steps)["clf"].classes_
应该适用于您。 - ldirer