问题遇到的现象和发生背景
我现在是在使用Python的sklearn做GBDT,现在主要遇到的问题是:使用交叉验证得到最优模型。但问题是我不知道怎么使用k折的交叉验证得到最优模型。因为k折的交叉验证是将数据分为k份数据,每个数据用于模型,但得到的k个模型怎样进行整合,或是怎样得到最优模型?
并且怎么使用随机搜索进行最优参数的选取?
我现在是在使用Python的sklearn做GBDT,现在主要遇到的问题是:使用交叉验证得到最优模型。但问题是我不知道怎么使用k折的交叉验证得到最优模型。因为k折的交叉验证是将数据分为k份数据,每个数据用于模型,但得到的k个模型怎样进行整合,或是怎样得到最优模型?
并且怎么使用随机搜索进行最优参数的选取?
如果你能接受调包的话,就是下面这样
我这里是以决策树模型为例的:
k折交叉验证
# 代码实现
from sklearn.model_selection import cross_val_score
acc = cross_val_score(model, X, y, cv=5)
# 5折交叉验证,默认是3折,这里没有设置scoring参数,所以是用默认的 'accuracy'(准确度)作为评估标准
print(acc)
# 5折交叉验证的均值
acc.mean()
网格搜索(需要自己输入参数)
import numpy as np
from sklearn.model_selection import GridSearchCV
# 指定参数范围,最大深度,特征选择标准,子节点往下分裂所需的最小样本数
parameters = {'max_depth':np.arange(5,14,2),
'criterion':['gini','entropy'],
'min_samples_split':np.arange(5,16,2)}
# 构建决策树模型
model = DecisionTreeClassifier()
# 网格搜索
grid_search = GridSearchCV(model,parameters,scoring='roc_auc',cv=5)
grid_search.fit(X_train,y_train)
# 输出参数的最优值
grid_search.best_params_