AI人工智能之机器学习sklearn模型选择与调优

ops/2025/2/26 14:08:19/

1、概要

  本篇学习AI人工智能机器学习sklearn的模型选择与调优,以iris数据集和随机森林模型为示例,从代码层面讲述如何进行模型选择与调优。

2、模型选择与调优 - 简介

模型选择与调优是机器学习流程中的关键步骤,涉及选择合适的模型、调整模型参数以及优化模型性能。

本篇的知识点:

交叉验证

  • 交叉验证是一种统计分析方法,通过将数据集分割成多个小子集来进行模型评估,其中每个子集轮流作为验证集,其余的作为训练集。
  • 这种方法可以减少模型评估的方差,提供模型性能的稳健估计,并且有助于避免过拟合
  • cross_val_score 是 scikit-learn 库中的一个函数,用于进行交叉验证。

超参数优化

  • 超参数优化是寻找使模型性能最优的超参数组合的过程。
  • Grid Search和Randomized Search是常用的超参数优化方法
  • GridSearchCV 在参数空间较大时可能会非常耗时,因为它会尝试所有可能的参数组合。
  • 在这种情况下,可以考虑使用更高效的搜索方法,如随机搜索(RandomizedSearchCV)。

3、模型选择

3.1、安装依赖

python安装机器学习库: pip install scikit-learn

3.2、引入数据集
from sklearn.model_selection import cross_val_score, GridSearchCV
from sklearn.datasets import load_iris
from sklearn.ensemble import RandomForestClassifier# 加载示例数据
iris = load_iris()
X = iris.data
y = iris.target
3.3、选择模型,进行交叉验证 - cross_val_score

使用K折交叉验证评估模型

cross_val_score 函数参数说明:

  • estimator: 用于交叉验证的模型估计器。
  • X: 特征数据集。
  • y: 目标数据集。
  • cv: 交叉验证的折数,可以是整数或交叉验证迭代器。
    • (cv=5)意味着数据集被分成 5 个大小相等的子集,模型会被训练 5 次,每次使用不同的验证集,其余作为训练集。
    • 函数返回一个数组,包含了每次交叉验证的得分
  • scoring: 用于模型评估的得分策略。
    • 通过改变 scoring 参数,可以指定不同的评估指标,如准确率(accuracy)、精确率(precision)、召回率(recall)等
  • n_jobs: 并行作业数,-1 表示使用所有CPU。
# 示例: 我们从机器学习库中,选择一个模型,进行交叉验证,这里选择的是 随机森林模型
def learn_cross_val_score():# 初始化模型 - 随机森林分类器model = RandomForestClassifier()scores = cross_val_score(estimator=model, X=X, y=y, cv=5, scoring=None)print("Cross-validation scores:", scores)  # 每次得分print("Mean cross-validation score:", scores.mean())  # 平均分
learn_cross_val_score()

运行上述代码,您将得到如下输出:

Cross-validation scores: [0.96666667 0.96666667 0.93333333 0.96666667 1.        ]
Mean cross-validation score: 0.9666666666666668
3.4、进行超参数优化,寻找最好的参数组合 - GridSearchCV

使用网格搜索寻找最好的参数组合
GridSearchCV搜索函数参数说明:

  • estimator: 要调优的模型估计器。
  • param_grid: 参数网格,它是一个字典,其中键是模型的参数名称,值是参数的候选值列表。
  • cv: 交叉验证的折数,可以是整数或交叉验证迭代器。
  • scoring: 用于评估模型性能的评分策略。
  • n_jobs: 并行作业数,-1 表示使用所有 CPU。
  • verbose: 控制输出信息的详细程度。
# 示例: 我们从机器学习库中,选择一个模型,进行超参数优化,这里选择的是 随机森林模型
def learn_GridSearchCV():# 初始化模型 - 随机森林分类器model = RandomForestClassifier()# 定义参数网格param_grid = {'n_estimators': [10, 50, 100],'max_depth': [None, 10, 20, 30],'min_samples_split': [2, 5, 10]}grid_search = GridSearchCV(estimator=model, param_grid=param_grid, cv=5)# 执行网格搜索# GridSearchCV会遍历 param_grid 中所有参数组合,对每一种组合使用 cv指定的交叉验证方法来评估模型性能。# 最终,它会返回在交叉验证中平均性能最好的参数组合。grid_search.fit(X, y)print("Best parameters found: ", grid_search.best_params_)  # 输出最佳参数    print("Best score: ", grid_search.best_score_)  # 输出最佳分数learn_GridSearchCV()

运行上述代码,您将得到如下输出:

Best parameters found:  {'max_depth': None, 'min_samples_split': 2, 'n_estimators': 10}
Best score:  0.9666666666666668

4、 总结

本篇以iris数据集和随机森林模型为示例,从代码视角讲述如何进行模型选择与调优。


http://www.ppmy.cn/ops/161427.html

相关文章

C++:dfs,bfs各两则

1.木棒 167. 木棒 - AcWing题库 乔治拿来一组等长的木棒,将它们随机地砍断,使得每一节木棍的长度都不超过 5050 个长度单位。 然后他又想把这些木棍恢复到为裁截前的状态,但忘记了初始时有多少木棒以及木棒的初始长度。 请你设计一个程序…

网页五子棋——项目测试

目录 测试用例设计 功能测试 注册功能测试 正常注册 异常注册 登录功能测试 正常登录 异常登录 匹配功能测试 对战功能测试 自动化测试 引入依赖 Utils 注册测试 登录测试 匹配测试 RunTest 界面测试 性能测试 总结 测试用例设计 在本篇文章中,…

冯诺依曼体系结构 ──── linux第8课

目录 冯诺依曼体系结构 关于冯诺依曼,必须强调几点: 冯诺依曼体系结构 我们常见的计算机,如笔记本。我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系 输入单元:包括键盘, 鼠标,网卡,扫…

7.grafana的内存和CPU同时在一个表中的调整

如图所示,当CPU和内存同在一个表的时候,左y轴只显示内存单位,那么我们就需要让右y轴显示CPU单位百分之 1. 在axes 中显示左y轴和右y轴 2. 在左y轴单位选择bytes,右y轴单选选择百分比 3. 选择Series overrides,开始填…

uniapp写的h5跳转小程序

使用场景: 我们对接第三方支付的时候,对方只提供了原生小程序id和appid,由我们的app和h5平台跳转至小程序。 遇到的问题: app跳转本地正常,线上报错如下 解决办法: 需要去微信开放平台申请应用appid 易…

【Python爬虫(69)】解锁游戏数据宝藏:Python爬虫实战攻略

【Python爬虫】专栏简介:本专栏是 Python 爬虫领域的集大成之作,共 100 章节。从 Python 基础语法、爬虫入门知识讲起,深入探讨反爬虫、多线程、分布式等进阶技术。以大量实例为支撑,覆盖网页、图片、音频等各类数据爬取&#xff…

axios、axios二次封装、api解耦

本文章主要讲解项目中axios的封装问题,这一块知识点是必须拿下的。 目录 一、axios基础使用 1、下载axios 2、引入axios 3、使用axios发送请求 4、举例 二、axios二次封装【必须掌握,公司里必用到】 1、为什么要进行二次封装? 2、二…

AR技术下的电商:虚拟试穿/试用/试戴成新风尚

随着科技的日新月异,增强现实(AR)技术正悄然改变着我们的生活,尤其在电子商务领域,AR技术的融入正掀起一场前所未有的变革。那么,AR技术究竟是何方神圣?它在电商领域又展现出了哪些非凡的应用呢…