所以,我有一个看起来像这样的分类器
clf = VotingClassifier(estimators=[ ('nn', MLPClassifier()), ('gboost', GradientBoostingClassifier()), ('lr', LogisticRegression()), ], voting='soft')
我想调整每个估计器的超参数。
有没有办法调整这些分类器的“组合”?谢谢
回答:
你可以使用GridSearchCV来做到这一点,但需要稍作修改。在参数字典中,不要直接指定属性,你需要使用VotingClassifier对象中分类器的键,后跟__
,然后是属性本身。
看看这个例子
from sklearn.linear_model import LogisticRegressionfrom sklearn.svm import SVCfrom sklearn.ensemble import VotingClassifierfrom sklearn.model_selection import GridSearchCVX = np.array([[-1.0, -1.0], [-1.2, -1.4], [-3.4, -2.2], [1.1, 1.2],[-1.0, -1.0], [-1.2, -1.4], [-3.4, -2.2], [1.1, 1.2]])y = np.array([1, 1, 2, 2,1, 1, 2, 2])eclf = VotingClassifier(estimators=[ ('svm', SVC(probability=True)), ('lr', LogisticRegression()), ], voting='soft')#使用分类器的键,后跟__和属性params = {'lr__C': [1.0, 100.0], 'svm__C': [2,3,4],}grid = GridSearchCV(estimator=eclf, param_grid=params, cv=2)grid.fit(X,y)print (grid.best_params_)#{'lr__C': 1.0, 'svm__C': 2}