机器学习基础14-算法调参(基于印第安糖尿病Pima数据集)

这篇具有很好参考价值的文章主要介绍了机器学习基础14-算法调参(基于印第安糖尿病Pima数据集)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

机器学习的模型都是参数化的,可以通过调参来提高模型的准确度。
模型有很多参数,如何找到最佳的参数组合,可以把它当作一个查询问题来处理,但是调整参数到何时为止呢?应该遵循偏差和方差协调的原则。

接下来将介绍在 scikit-learn 中设置机器学习模型最佳参数的方法。

1. 调整参数对机器学习算法的重要性。
2. 如何使用网格搜索优化参数?
3. 如何使用随机搜索优化参数?

机器学习算法调参

调整算法参数是采用机器学习解决问题的最后一个步骤,有时也被称为超参数优化。学会调参是进行机器学习项目的前提,但第一次遇到这些算法和模型时,肯定会被其大量的参数吓到。其实,参数可分为两种:一种是影响模型在训练集上的准确度或防止过拟合能力的参数;另一种是不影响这两者的参数。模型在样本总体上的准确度由其在训练集上的准确度及其防止过拟合的能力共同决定,所以在调参时主要针对第一种参数进行调整,最终达到的效果是:模型在训练集上的准确度和防止过拟合能力的大和谐。

下面将介绍两种自动寻找最优化参数的算法:
· 网格搜索优化参数。
· 随机搜索优化参数。

网格搜索优化参数

网格搜索优化参数是一种算法参数优化的方法。它是通过遍历已定义参数的列表,来评估算法的参数,从而找到最优参数。在scikit-learn中使用GridSearchCV来实现对参数的跟踪、调整与评估,从而找到最优参数。网格搜索优化参数适用于三四个(或更少)的超参数(当超参数的数量增加时,网格搜索的计算复杂度会呈现指数型增长,这时要换用随机搜索),由用户列出一个较小的超参数值域,这些超参数值域的笛卡尔集(排列组合)为一组组超参数。网格搜索算法使用每组超参数训练模型,并挑选验证集误差最小的超参数组合。下面的例子是展示如何使用 GridSearchCV 来调整脊回归(Ridge)的参数。GridSearchCV使用字典对象来指定需要调参的参数,可以同时对一个或多个参数进行调参。

代码如下:

import pandas as pd
from sklearn.linear_model import Ridge
from sklearn.model_selection import GridSearchCV

#数据预处理
path = 'D:\down\\archive\\diabetes.csv'
data = pd.read_csv(path)

#打印标签名称
print(data.columns)

#将数据转成数组
array = data.values
#分割数据,去掉最后一个标签
X = array[:, 0:8]

Y = array[:, 8]

model = Ridge()
#设置参数,进行网格搜索,寻找最优参数,这里只设置了一个参数,实际中可以设置多个参数,如下
param_grid = {'alpha': [1, 0.1, 0.01, 0.001, 0.0001]}
#网格搜索,找到最优参数,这里使用了10折交叉验证,可以自己设置,如5折交叉验证,这里使用了全部的数据,也可以自己设置
grid = GridSearchCV(estimator=model, param_grid=param_grid)

grid.fit(X, Y)

print("最优分数:%.3f" % grid.best_score_)
print("最优参数:", grid.best_estimator_.alpha)


param_grid是一个字典对象,以算法的参数名为key,需要遍历的参数值列表为value。在验证算法最优参数的网格搜索算法中,可以设定多个key:value对,同时查询多个参数的最优参数值。

执行结果如下:

最优分数:0.276
最优参数: 1

随机搜索优化参数

随机搜索优化参数是另一种对算法参数优化的方法。随机搜索优化参数通过固定次数的迭代,采用随机采样分布的方式搜索合适的参数。与网格搜索优化参数相比,随机搜索优化参数提供了一种更高效的解决方法(特别是在参数数量多的情况下),随机搜索优化参数为每个参数定义了一个分布函数,并在该空间中采样。在 scikit-learn 中通过RandomizedSearchCV类实现。

下面的例子是通过RandomizedSearchCV对脊回归算法的参数进行100次迭代,并从中选择最优的参数。

SciPy中的uniform是一个均匀随机采样函数,默认生成0与1之间的随机采样数值。在这里利用uniform对参数进行随机采样。

代码如下:

import pandas as pd
from scipy.stats import uniform
from sklearn.linear_model import Ridge

from sklearn.model_selection import GridSearchCV, RandomizedSearchCV

#数据预处理
path = 'D:\down\\archive\\diabetes.csv'
data = pd.read_csv(path)

#打印标签名称
print(data.columns)

#将数据转成数组
array = data.values
#分割数据,去掉最后一个标签
X = array[:, 0:8]

Y = array[:, 8]

model = Ridge()

param_grid = {'alpha': uniform()}

grid = RandomizedSearchCV(estimator=model, param_distributions=param_grid, n_iter=100, random_state=7)

grid.fit(X, Y)

print("最高得分:%.3f" % grid.best_score_)
print("最优参数:", grid.best_estimator_.alpha)

执行结果如下:

最高得分:0.276
最优参数: 0.9779895119966027

调参是算法模型生成之前很重要的一步,上面介绍了两种选择最优参数的方法:网格搜索优化参数和随机搜索优化参数。

如果算法的参数少于三个,推荐使用网格搜索优化参数;如果需要优化的参数超过三个,推荐使用随机搜索优化参数。

下一节将介绍如何生成模型,以及如何保存和载入已生成的模型。文章来源地址https://www.toymoban.com/news/detail-689067.html

到了这里,关于机器学习基础14-算法调参(基于印第安糖尿病Pima数据集)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 机器学习中XGBoost算法调参技巧

    本文将详细解释XGBoost中十个最常用超参数的介绍,功能和值范围,及如何使用Optuna进行超参数调优。 对于XGBoost来说,默认的超参数是可以正常运行的,但是如果你想获得最佳的效果,那么就需要自行调整一些超参数来匹配你的数据,以下参数对于XGBoost非常重要: eta num_boos

    2024年02月11日
    浏览(40)
  • 机器学习基础10-审查回归算法(基于波士顿房价的数据集)

    上一节介绍了如何审查分类算法,并介绍了六种不同的分类算法,还 用同一个数据集按照相同的方式对它们做了审查,本章将用相同的方式对回归算法进行审查。 在本节将学到: 如何审查机器学习的回归算法。 如何审查四种线性分类算法。 如何审查三种非线性分类算法。

    2024年02月11日
    浏览(26)
  • 机器学习基础08-模型选择02-分类算法矩阵(基于Pima 数据集)

    算法评估矩阵(Algorithm Evaluation Metrics)用于评估机器学习算法在特定任务上的 性能 。不同的任务可能会使用不同的评估矩阵,因为每个任务的优劣衡量标准都不同。 分类问题或许是最常见的机器学习问题,并且有多种评估矩阵来评估 分类算法。以下几种用来评估分类算法

    2024年02月14日
    浏览(32)
  • 机器学习基础08-回归算法矩阵分析(基于波士顿房价(Boston House Price)数据集)

    回归算法通常涉及到使用矩阵来表示数据和模型参数。线性回归是最常见的回归算法之一,它可以用矩阵形式来表示。 考虑一个简单的线性回归模型: y = m x + b y = mx + b y = m x + b ,其中 y y y 是因变量, x x x 是自变量, m m m 是斜率, b b b 是截距。将这个模型表示成矩阵形式

    2024年02月14日
    浏览(33)
  • 机器学习模型调参

    1. 调参的目标 调参就是对模型的参数进行调整,以找到是模型性能最优的参数。调参的目标就是达到整体模型的偏差和方差的大和谐! 参数可分为两类:过程影响类参数和子模型影响类参数。 具体来说,过程影响类参数就是在子模型不变的前提下,调整“子模型数(n_esti

    2023年04月14日
    浏览(29)
  • 【Python机器学习】SVM——调参

    下面是支持向量机一个二维二分类数据集的训练结果:  决策边界用黑线表示,支持向量是尺寸比较大的点: 在这个例子里,SVM给出了非常平滑且线性的边界。 在上面的例子里,gamma参数用于控制高斯核的宽度,它决定了点与点之间“靠近”是指多大的距离,C参数是正则化

    2024年02月01日
    浏览(26)
  • 【Python机器学习】实验04(2) 机器学习应用实践--手动调参

    上一次练习中,我们采用逻辑回归并且应用到一个分类任务。 但是,我们用训练数据训练了模型,然后又用训练数据来测试模型,是否客观?接下来,我们仅对实验1的数据划分进行修改 需要改的地方为:下面红色部分给出了具体的修改。 1 训练数据数量将会变少 2 评估模型

    2024年02月15日
    浏览(38)
  • 机器学习基础07-模型选择01-利用scikit-learn 基于Pima 数据集对LogisticRegression算法进行评估

    选择合适的模型是机器学习和深度学习中非常重要的一步,它直接影响到模型的性能和泛化能力。 “所有模型都是坏的,但有些模型是有用的”。建立模型之后就要去评 估模型,确定模型是否有用。模型评估是模型开发过程中不可或缺的一部 分,有助于发现表达数据的最佳

    2024年02月14日
    浏览(24)
  • 【机器学习】模型调参工具:Hyperopt 使用指南

    在机器学习和数据科学领域,模型调参是一个不可避免的任务。为了提高模型的性能,通常需要调整不同的超参数。 常用的调参策略包括: 网格搜索(Grid Search) 在模型中尝试的每种可能的参数组合来工作,这意味着执行整个搜索将需要很长时间,而且计算成本可能会很高。

    2024年01月23日
    浏览(74)
  • 机器学习入门实例-加州房价预测-4(继续调参+评估)

    Randomized Search 如果需要尝试、调整的超参数只有有限几个,比如之前的例子,那只用grid search就够了;但如果超参数的搜索空间非常大,应该用RandomizedSearchCV。它有两个优点: 支持更大的参数范围 它可以更快找到最优的超参数组合。因为不是遍历所有组合,而是在指定的参数

    2023年04月18日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包