AI人工智能之呆板学习sklearn模子选择与调优

打印 上一主题 下一主题

主题 869|帖子 869|积分 2607

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、引入数据集

  1. from sklearn.model_selection import cross_val_score, GridSearchCV
  2. from sklearn.datasets import load_iris
  3. from sklearn.ensemble import RandomForestClassifier
  4. # 加载示例数据
  5. iris = load_iris()
  6. X = iris.data
  7. 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。
  1. # 示例: 我们从机器学习库中,选择一个模型,进行交叉验证,这里选择的是 随机森林模型
  2. def learn_cross_val_score():
  3.     # 初始化模型 - 随机森林分类器
  4.     model = RandomForestClassifier()
  5.     scores = cross_val_score(estimator=model, X=X, y=y, cv=5, scoring=None)
  6.     print("Cross-validation scores:", scores)  # 每次得分
  7.     print("Mean cross-validation score:", scores.mean())  # 平均分
  8. learn_cross_val_score()
复制代码
运行上述代码,您将得到如下输出:
  1. Cross-validation scores: [0.96666667 0.96666667 0.93333333 0.96666667 1.        ]
  2. Mean cross-validation score: 0.9666666666666668
复制代码
3.4、举行超参数优化,寻找最好的参数组合 - GridSearchCV

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


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

本篇以iris数据集和随机森林模子为示例,从代码视角讲述怎样举行模子选择与调优。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

万有斥力

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表