机器学习——优化超参数(交叉验证)
机器学习——优化超参数(交叉验证)基本思想是把将要调节的参数进行区间设置,然后进行组合训练,在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_
结果:

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。
更多推荐
所有评论(0)