什么是交叉验证?

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

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

基本思想是把将要调节的参数进行区间设置,然后进行组合训练,在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

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

更多推荐