当前位置: 首页 > java >正文

Day18_【机器学习—交叉验证与网格搜索】

一、 交叉验证 (Cross Validation)

  • 目的:更准确、可靠地评估模型性能,减少因单次数据划分带来的随机性偏差。
  • 核心思想(以K折交叉验证为例):
    1. 将训练数据平均分成K份
    2. 进行K轮训练和验证:每轮使用其中1份作为验证集其余K-1份作为训练集
    3. 计算K轮验证结果(如准确率)的平均值,作为模型的最终评估分数。
  • 关键点:它本身不提升模型性能,而是提供一个更可信的性能评估。

二、网格搜索 (Grid Search)

  • 目的:自动寻找模型的最优超参数组合(如KNN中的K值)。
  • 核心思想
    1. 定义一个包含多个超参数及其候选值的参数网格(字典)。
    2. 网格搜索会穷举所有可能的参数组合
    3. 每一个参数组合,都使用交叉验证来评估其性能。
    4. 选择交叉验证得分最高的参数组合作为最优超参数。
  • 关键点:它是超参数调优的自动化方法,通常与交叉验证紧密结合。

三、. 二者关系与整合 (GridSearchCV)

  • 协同工作:网格搜索利用交叉验证来评估每个超参数组合的性能,确保选出的“最优”参数是稳定可靠的。
  • API体现:在 scikit-learn 中,GridSearchCV 这一个API就整合了两者:
    • estimator:要调优的模型。
    • param_grid:超参数网格(字典)。
    • cv:指定交叉验证的折数。
  • 输出
    • best_params_:找到的最优超参数。
    • best_score_:最优参数在交叉验证下的平均得分。
    • best_estimator_:使用最优参数训练好的最终模型。

一句话总结交叉验证用于可靠评估模型,网格搜索利用交叉验证来自动寻找模型的最佳超参数,二者结合 (GridSearchCV) 是机器学习模型调优的标准流程。

四、在线数据集 鸢尾花案例

def model_precdit_evaluate():# 获取鸢尾花数据iris_data=load_iris()# 数据基本处理——数据分割为训练集和测试集x_train,x_test,y_train,y_test=train_test_split(iris_data.data,iris_data.target,test_size=0.2,random_state=22)#特征工程——特征列标准化transfer=StandardScaler()x_train=transfer.fit_transform(x_train)# 测试集不使用fit,目的就是 避免数据泄露,更详细来说是为了测试集的信息不应该影响模型效果,从而得到更准确的模型评估结果x_test=transfer.transform(x_test)#模型训练 分类处理es=KNeighborsClassifier()parm_dict={'n_neighbors':[i for i in range(1,20)]}es=GridSearchCV(es,parm_dict,cv=4)es.fit(x_train,y_train)# 打印最优的超参组合print(f"最优评分:{es.best_score_}")  # 最优组合的平均分print(f"最优超参组合:{es.best_params_}")  # 最优超参组合(供参考)print(f"最优的估计器对象:{es.best_estimator_}")  # 最优组合的模型对象print(f"具体交叉验证结果:{es.cv_results_}")  # 所有组合的 评估结果(过程)#模型预测y_predict=es.best_estimator_.predict(x_test)print("查看预测对比")print(y_test)print(y_predict)#模型评估print(f"预测精度:{accuracy_score(y_test,y_predict)}")
if __name__ == '__main__':model_precdit_evaluate()

http://www.xdnf.cn/news/19292.html

相关文章:

  • 【ROS2】ROS2 基础学习教程 、movelt学习
  • PostgreSQL 数据库灾备要点与举例说明**
  • Spring Data Redis 的使用方法
  • 电子战:多功能雷达工作模式识别
  • [光学原理与应用-339]:ZEMAX - Spot Diagram(点列图)是评估光学系统成像质量的核心工具,它通过几何光线追迹直观展示像差对成像的影响。
  • 模拟实现STL中的list容器
  • 行内元素块元素
  • Coze源码分析-API授权-添加新令牌-后端源码
  • mysql权限user表赋权操作修改
  • 【大语言模型 30】指令微调数据工程:高质量数据集构建
  • 计算机算术7-浮点基础知识
  • 面试tips--MyBatis--<where> where 1=1 的区别
  • Burgan Bank Türkiye 如何借助 Elastic 改造可观测性和安全性
  • 【LeetCode 热题 100】62. 不同路径——(解法四)组合数学
  • Scikit-learn Python机器学习 - Scikit-learn加载数据集
  • 49.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--扩展功能--集成网关--Refit跨服务调用
  • Photoshop - Ps Camera Raw 滤镜
  • 爱普生L3255打印机故障记录
  • 算法(②排序算法)
  • 在word以及latex中引用zotero中的参考文献
  • JVM架构图是怎样的?
  • Python - 机器学习:从 “教电脑认东西” 到 “让机器自己学规律”
  • 第7.5节:awk语言 switch 语句
  • Kubernetes 部署与发布完全指南:从 Pod 到高级发布策略
  • Ruoyi-vue-plus-5.x第一篇Sa-Token权限认证体系深度解析:1.3 权限控制与注解使用
  • Python爬虫实战:构建Widgets 小组件数据采集和分析系统
  • c++--线程休眠/sleep
  • springboot提前注册bean
  • react组件
  • 【深度学习新浪潮】有没有什么方法可以将照片变成线描稿,比如日式漫画的那种?