机器学习之GridSearchCV模型调参

背景

大部分机器学习模型都会有很多参数,不同的参数组合会产生不同的效果 ,如果模型数据量不是很大,也就是说运行时间不是很长,可以考虑使用GridSearchCV这个工具包自动选择输入参数中的最优组合。注意:在实际应用中,可能会遇到很大数据量,模型运行特别费计算资源和时间,这个时候用GridSearchCV可能会成本太高,需要对模型了解深入一点或者积累更多的实战经验,最后进行手动调参。

代码

本人在用GridSearchCV和XGB的时候遇到过一些技术问题,譬如pipelineGridSearchCV的配合使用问题,直接贴代码:

# pipeline
XGB_pipeline = make_pipeline(SimpleImputer(), XGBRegressor())

# 要调参数
para_grid = {'xgbregressor__learning_rate': [0.01,0.1,0.5],'xgbregressor__n_estimators':[100,500,1000]}
grid = GridSearchCV(estimator=XGB_pipeline, param_grid = para_grid,cv=5)
grid.fit(X_train, y_train)

# 输出最佳参数组合
print (grid.best_params_)

输出:

{‘xgbregressor__learning_rate’: 0.01, ‘xgbregressor__n_estimators’: 1000}

注意:
1、要调参数为dict格式,参数名前需要加小写的XGBRegressor和双下划线也就是xgbregressor__
2、每次不要放太多参数,否则运行时间会很长,最好对所调参数有一定了解,甚至可以阅读相应已发表paper
3、GridSearchCV中的参数cv表示cross validation,cross validation对小数据量样本比适用,能充分利用所有的数据进行训练。相当于做了一次cross_val_score

你可能感兴趣的:(数据分析与机器学习)