2017-09-13 8 views
2

のためのグリッド検索値を抽出し、私は次のようにグリッドを検索するために、複数の説明変数を作成しました:今は、私はPythonでsklearnを使用しています複数の説明変数

def randomFF_reg(): 
    params = {'n_estimators':[10,30,50],'max_features':['log2','sqrt']} 
    return RandomForestRegressor(),params 

def lasso_reg(): 
    params = {'alpha':[1e-1, 1, 10, 100]} 
    return linear_model.Lasso(),params 

次のように、私はGridSearchCV内部にこれらの関数を呼び出しています:

grid = GridSearchCV(lasso_reg()).fit(X, y) 
best_params =list(grid.cv_results_['params']) 

しかし、私の問題は、最適な適合モデルの結果を抽出して分析する必要があることです。

parameters =[prms[best_params[0].keys()[0]] for prms in best_params] 

をしかしなどランダムフォレスト回帰、DecisionTree説明変数のように複数のパラメータを持つ説明変数のエラーを与えるがいずれかである:異なった説明変数は、それが正常に動作し、私はLinear RegressionLasso Regressionために次の行を実行するときに調整されている異なるパラメータを持っています複数のパラメータを持つリグレッサの値を抽出する方法はありますか?

答えて

2

best_paramsのキーの長さを確認する必要があります。これは、単一のパラメータまたは複数のパラメータを持っているかどうかにかかわらず、どの種類のRegressorでも機能するはずです:

if len(best_params[0].keys())>1: 
     parameters = list(itertools.product(*best_params.values()[::-1])) 
    else: 
     parameters =[prms[best_params[0].keys()[0]] for prms in best_params] 
関連する問題