什么是交叉验证?

一种统计学上将数据样本切割成较小子集方法

优化超参数(交叉验证)基本思想是什么?

基本思想是把将要调节的参数进行区间设置,然后进行组合训练,在ShuffleSplit的作用是将训练数据进行分组,一部分做为训练集,另一部分做为验证集 ,首先用训练集对分类器进行训练,再利用验证集来测试达到一组测试训练得到,各组最后取平均值作为最后的结果,最终都训练完得到模型。

例子:建立决策树回归模型时选择超参数。

(1)导包

from sklearn.tree import DecisionTreeRegressor
from sklearn.model_selection import GridSearchCV  ##遍历验证函数
from sklearn.model_selection import ShuffleSplit  #生成交叉验证集的函数调入

(2)优化超参数

model_Decision=DecisionTreeRegressor()
#超参数'max_depth'和'max_features'的可选最大值就是特征数
par_grid = {'max_depth': [10, 11, 12, 13],'max_features': [5,6,7,8,9,10,11]}  #组合28组
cv = ShuffleSplit(n_splits=10, test_size=0.3)   #给出10倍和0.3比例的交叉验证参数

参数说明:

就是将训练集数据再分成十份,从其中取0.7做训练集,0.3做验证集;再将10组的验证取平均;因此这个我们要进行280组。

完整代码:

model_Decision=DecisionTreeRegressor()
par_grid = {'max_depth': [10, 11, 12, 13],'max_features': [5,6,7,8,9,10,11]} 
cv = ShuffleSplit(n_splits=10, test_size=0.3)   
grid_search = GridSearchCV(model_Decision,param_grid=par_grid,cv=cv) 
grid_search.fit(X_train, y_train)
print('Best score:',grid_search.best_score_)
print('Best parameters:',grid_search.best_params_)
model=grid_search.best_estimator_

结果:

 

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐