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数据集和随机森林模子为示例,从代码视角讲述怎样举行模子选择与调优。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |