簡體   English   中英

隨機森林超參數調整scikit-learn使用GridSearchCV

[英]Random Forest hyperparameter tuning scikit-learn using GridSearchCV

我正在嘗試使用隨機森林來解決我的問題(下面是波士頓數據集的示例代碼,而不是我的數據)。 我打算使用GridSearchCV進行超參數調整,但不同參數的值范圍應該是多少? 我怎么知道我選擇的范圍是正確的?

我正在互聯網上閱讀它並且有人建議在第二次網格搜索中嘗試“放大”最佳值(例如,如果它是10則嘗試[5,20,50])。

這是正確的方法嗎? 我應該對隨機森林所需的所有參數使用這種方法嗎? 這種方法可能會錯過“好”的組合,對吧?

import numpy as np
from sklearn.grid_search import GridSearchCV
from sklearn.datasets import load_digits
from sklearn.ensemble import RandomForestRegressor
digits = load_boston()
X, y = dataset.data, dataset.target
model = RandomForestRegressor(random_state=30)
param_grid = { "n_estimators"      : [250, 300],
           "criterion"         : ["gini", "entropy"],
           "max_features"      : [3, 5],
           "max_depth"         : [10, 20],
           "min_samples_split" : [2, 4] ,
           "bootstrap": [True, False]}
grid_search = GridSearchCV(clf, param_grid, n_jobs=-1, cv=2)
grid_search.fit(X, y)
print grid_search.best_params_

粗到細實際上通常用於找到最佳參數。 您首先從各種參數開始,並在接近最佳結果時對其進行細化。

我找到了一個很棒的庫,它為scikit-learn, hyperopt-sklearn做了超參數優化。 它可以自動調整RandomForest或任何其他標准分類器。 您甚至可以同時自動調整和基准測試不同的分類器。

我建議你從這開始,因為它實現了不同的方案來獲得最佳參數:

隨機搜索

Parzen Estimators樹(TPE)

退火

高斯過程樹

編輯:

在回歸的情況下,您仍然需要斷言您的預測是否在測試集上是好的。

無論如何,從粗到精的方法仍然適用於任何估算器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM