2017-10-16 69 views
1

我努力做到以下几点:如何调整权重值分级(Sklearn)

vc = VotingClassifier(estimators=[('gbc',GradientBoostingClassifier()), 
         ('rf',RandomForestClassifier()),('svc',SVC(probability=True))], 
         voting='soft',n_jobs=-1) 

params = {'weights':[[1,2,3],[2,1,3],[3,2,1]]} 
grid_Search = GridSearchCV(param_grid = params, estimator=vc) 
grid_Search.fit(X_new,y) 
print(grid_Search.best_Score_) 

在此,我想调整参数weights。如果我使用GridSearchCV,则需要很长时间。因为它需要适合每次迭代的模型。我猜,这不是必需的。更好的方法是使用prefit,用于SelectModelFrom函数sklearn.model_selection

有没有其他的选择,或者我误解了一些东西?

+0

GridSearchCV会根据提供的'cv'将数据分成列车和测试,然后在测试数据上得分。既然您不想重新估算估算值,您希望他们获得哪些数据:火车,测试或所有数据? –

+0

如果我执行GridSearchCV,它将为我指定的每个'weight_list'创建模型。但是我想实现的是对于我所给的所有重量使用相同的模型。我想使用'prefit',但在GridSeachCV中没有选择'prefit' –

+0

@VivekKumar我已经编辑了问题代码以获得更好的解释。请看看。 –

回答

0

The following code(在我的回购)会做到这一点。

它包含一个类VotingClassifierCV。它首先对所有分类器进行交叉验证的预测。然后遍历所有权重,选择最佳组合,并使用预先计算的预测。