2017-10-16 169 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。它首先對所有分類器進行交叉驗證的預測。然後遍歷所有權重,選擇最佳組合,並使用預先計算的預測。