机器学习——优化超参数(交叉验证)
机器学习——优化超参数(交叉验证)基本思想是把将要调节的参数进行区间设置,然后进行组合训练,在ShuffleSplit的作用是将训练数据进行分组,一部分做为训练集,另一部分做为验证集 ,首先用训练集对分类器进行训练,再利用验证集来测试达到一组测试训练得到,各组最后取平均值作为最后的结果,最终都训练完得到模型。
·
什么是交叉验证?
一种统计学上将数据样本切割成较小子集方法
优化超参数(交叉验证)基本思想是什么?
基本思想是把将要调节的参数进行区间设置,然后进行组合训练,在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_
结果:
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)