我在Python中使用sklearn,我为网格搜索创建了多个Regressor,如:
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'])
但我的问题是我必须提取并分析最佳拟合模型的结果。不同的回归程序具有不同的参数,这些参数经过调整,因此当我为Linear Regression
和Lasso Regression
运行以下行时,它可以正常工作:
parameters =[prms[best_params[0].keys()[0]] for prms in best_params]
但是为具有多个参数的回归量提供错误,例如RandomForest Regressors,DecisionTree Regressors等。有没有办法为具有多个参数的回归量提取值?
答案 0 :(得分:4)
您需要检查best_params
中的密钥长度。这适用于任何类型的回归器,无论是单参数还是多参数:
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]