2017-09-13 1 views
2

ich sklearn in Python verwende, und ich habe mehrere Regressoren für Grid Search wie geschaffen:Extract Grid Search Werte für mehrere Regressoren

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 

Nun, ich diese Funktionen innerhalb GridSearchCV nenne wie folgt:

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

Aber mein Problem ist, dass ich die Ergebnisse des am besten angepassten Modells extrahieren und analysieren muss. Verschiedene Regressoren haben unterschiedliche Parameter, die so angepasst werden, wenn ich die folgende Zeile für Linear Regression laufen und Lasso Regression es richtig funktioniert:

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

Aber einen Fehler geben für Regressoren mit mehreren Parametern wie Random Regressoren, DecisionTree Regressoren usw. Gibt es eine Möglichkeit, Werte für Regressoren mit mehreren Parametern zu extrahieren?

Antwort

2

Sie müssen die Länge der Schlüssel in der best_params überprüfen. Dies sollte für jeden Regressor-Typ funktionieren, unabhängig davon, ob er einen einzelnen Parameter oder mehrere Parameter hat:

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]