万有斥力 发表于 2025-2-26 12:05:11

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

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:
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': ,
      'max_depth': ,
      'min_samples_split':
    }
    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数据集和随机森林模子为示例,从代码视角讲述怎样举行模子选择与调优。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: AI人工智能之呆板学习sklearn模子选择与调优