位置: IT常识 - 正文

【机器学习】9种回归算法及实例总结,建议学习收藏

编辑:rootadmin
【机器学习】9种回归算法及实例总结,建议学习收藏

推荐整理分享【机器学习】9种回归算法及实例总结,建议学习收藏,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

我相信很多人跟我一样,学习机器学习和数据科学的第一个算法是线性回归,它简单易懂。由于其功能有限,它不太可能成为工作中的最佳选择。大多数情况下,线性回归被用作基线模型来评估和比较研究中的新方法。

在处理实际问题时,你应该了解并尝试许多其他回归算法。一方面可以系统学习回归算法,另外一方面在面试中也常用到这些算法。在本文中,我们将通过使用 Scikit-learn 和 XGBoost 的动手实践来学习 9 种流行的回归算法。 喜欢本文记得收藏、关注、点赞。

【注】文末有技术交流群

结构如下:

线性回归多项式回归支持向量机回归决策树回归随机森林回归LASSO 回归Ridge 回归ElasticNet 回归XGBoost 回归推荐文章

李宏毅《机器学习》国语课程(2022)来了

有人把吴恩达老师的机器学习和深度学习做成了中文版

上瘾了,最近又给公司撸了一个可视化大屏(附源码)

如此优雅,4款 Python 自动数据分析神器真香啊

梳理半月有余,精心准备了17张知识思维导图,这次要讲清统计学

年终汇总:20份可视化大屏模板,直接套用真香(文末附源码)

线性回归

线性回归通常是人们学习机器学习和数据科学的第一个算法。线性回归是一种线性模型,它假设输入变量 (X) 和单个输出变量 (y) 之间存在线性关系。 一般来说,有两种情况:

单变量线性回归:它对单个输入变量(单个特征变量)和单个输出变量之间的关系进行建模。多变量线性回归(也称为多元线性回归):它对多个输入变量(多个特征变量)和单个输出变量之间的关系进行建模。

这个算法很常见,以至于 Scikit-learn 在 LinearRegression() 中内置了这个功能。 让我们创建一个 LinearRegression 对象并将其拟合到训练数据中:

from sklearn.linear_model import LinearRegression# Creating and Training the Modellinear_regressor = LinearRegression()linear_regressor.fit(X, y)

训练完成后,我们可以在 coef_ 属性中检查 LinearRegression 找到的系数参数:

linear_regressor.coef_array([[-0.15784473]])

现在采用该模型并为训练数据拟合一条线 关于线性回归的几个关键点:

快速且易于建模当要建模的关系不是非常复杂并且您没有大量数据时,它特别有用。非常直观的理解和解释。它对异常值非常敏感。多项式回归

当我们想要为非线性可分数据创建模型时,多项式回归是最受欢迎的选择之一。它类似于线性回归,但使用变量 X 和 y 之间的关系来找到绘制适合数据点的曲线的最佳方法。

对于多项式回归,一些自变量的幂大于 1。例如,我们可能会提出如下二次模型: Scikit-learn 的 PolynomialFeatures 内置了这种方法。 首先,我们需要生成一个由所有具有指定度数的多项式特征组成的特征矩阵:

from sklearn.preprocessing import PolynomialFeatures# We are simply generating the matrix for a quadratic modelpoly_reg = PolynomialFeatures(degree = 2)X_poly = poly_reg.fit_transform(X)

接下来,让我们创建一个LinearRegression 对象并将其拟合到我们刚刚生成的特征矩阵 X_poly 中。

# polynomial regression modelpoly_reg_model = LinearRegression()poly_reg_model.fit(X_poly, y)

现在采用该模型并为训练数据 X_plot 拟合一条线,如下所示:

关于多项式回归的几个关键点:

能够对非线性可分数据进行建模;线性回归不能做到这一点。一般来说,它更加灵活,可以对一些相当复杂的关系进行建模。完全控制特征变量的建模(要设置的指数)。需要精心设计。 需要一些数据知识才能选择最佳指数。如果指数选择不当,则容易过度拟合。支持向量机回归

支持向量机在分类问题中是众所周知的。SVM 在回归中的使用称为支持向量回归(SVR)。Scikit-learn在 SVR()中内置了这种方法。

在拟合 SVR 模型之前,通常最好的做法是执行特征缩放,以便每个特征具有相似的重要性。 首先,让我们使用 StandardScaler() 执行特征缩放:

from sklearn.svm import SVRfrom sklearn.preprocessing import StandardScaler# Performing feature scalingscaled_X = StandardScaler()scaled_y = StandardScaler()scaled_X = scaled_X.fit_transform(X)scaled_y = scaled_y.fit_transform(y)

接下来,我们创建一个 SVR 对象,内核设置为“rbf”,伽马设置为“auto”。 之后,我们调用 fit() 使其适合缩放的训练数据:

svr_regressor = SVR(kernel='rbf', gamma='auto')svr_regressor.fit(scaled_X, scaled_y.ravel())【机器学习】9种回归算法及实例总结,建议学习收藏

现在采用该模型并为训练数据 scaled_X 拟合一条线,如下所示: 关于支持向量回归的几个关键点

它对异常值具有鲁棒性,并且在高维空间中有效它具有出色的泛化能力(能够正确适应新的、以前看不见的数据)如果特征数量远大于样本数量,则容易过拟合决策树回归

决策树是一种用于分类和回归的非参数监督学习方法。目标是创建一个模型,通过学习从数据特征推断出的简单决策规则来预测目标变量的值。 一棵树可以看作是一个分段常数近似。

决策树回归也很常见,以至于 Scikit-learn 将它内置在 DecisionTreeRegressor 中,可以在没有特征缩放的情况下创建 DecisionTreeRegressor 对象,如下所示:

from sklearn.tree import DecisionTreeRegressortree_regressor = DecisionTreeRegressor(random_state = 0)tree_regressor.fit(X, y)

现在采用该模型并将其拟合到训练数据中: 关于决策树的几个关键点:

易于理解和解释。树可以可视化。适用于分类值和连续值使用 DT(即预测数据)的成本与用于训练树的数据点数量成对数决策树的预测既不平滑也不连续(如上图所示为分段常数近似)随机森林回归

随机森林回归基本上与决策树回归非常相似。 它是一个元估计器,可以在数据集的各种子样本上拟合多个决策树,并使用平均来提高预测准确性和控制过拟合。

随机森林回归器在回归中可能会或可能不会比决策树表现更好(虽然它通常在分类中表现更好),因为树构造算法本质上存在微妙的过拟合 - 欠拟合权衡。

随机森林回归很常见,以至于 Scikit-learn 将它内置在 RandomForestRegressor 中。 首先,我们需要创建一个具有指定数量的估计器的 RandomForestRegressor 对象,如下所示:

from sklearn.ensemble import RandomForestRegressorforest_regressor = RandomForestRegressor( n_estimators = 300, random_state = 0)forest_regressor.fit(X, y.ravel())

现在采用该模型并将其拟合到训练数据中: 关于随机森林回归的几点:

减少决策树中的过度拟合并提高准确性它也适用于分类值和连续值需要大量计算能力和资源,因为它适合许多决策树来组合它们的输出LASSO 回归

LASSO 回归是使用收缩的线性回归的变体。收缩是将数据值收缩到中心点作为平均值的过程。这种类型的回归非常适合显示重度多重共线性(特征相互之间高度相关)的模型。

Scikit-learn 内置在 LassoCV 中。

from sklearn.linear_model import LassoCVlasso = LassoCV()lasso.fit(X, y.ravel())

关于 Lasso 回归的几点:

它最常用于消除自动变量和选择特征。它非常适合显示重度多重共线性(特征相互之间高度相关)的模型。LASSO 回归利用 L1 正则化LASSO 回归被认为比 Ridge 更好,因为它只选择了一些特征并将其他特征的系数降低到零。岭回归

岭回归与 LASSO 回归非常相似,因为这两种技术都使用了收缩。 Ridge 和 LASSO 回归都非常适合显示重度多重共线性(特征相互之间高度相关)的模型。 它们之间的主要区别在于 Ridge 使用 L2 正则化,这意味着没有一个系数会像 LASSO 回归中那样变为零(而是接近零)。

Scikit-learn 内置在 RidgeCV 中。

from sklearn.linear_model import RidgeCVridge = RidgeCV()ridge.fit(X, y)

关于岭回归的几点:

它非常适合显示重度多重共线性(特征相互之间高度相关)的模型。岭回归使用 L2 正则化。 贡献较小的特征将具有接近于零的系数。由于 L2 正则化的性质,岭回归被认为比 LASSO 更差ElasticNet 回归

ElasticNet 是另一个使用 L1 和 L2 正则化训练的线性回归模型。它是 Lasso 和 Ridge 回归技术的混合体,因此它也非常适合显示重度多重共线性(特征相互之间高度相关)的模型。

在 Lasso 和 Ridge 之间进行权衡的一个实际优势是它允许 Elastic-Net 在旋转下继承 Ridge 的一些稳定性。Scikit-learn 内置在 ElasticNetCV 中。

from sklearn.linear_model import ElasticNetCVelasticNet = ElasticNetCV()elasticNet.fit(X, y.ravel())

XGBoost 回归

XGBoost 是梯度提升算法的一种高效且有效的实现。梯度提升是指一类可用于分类或回归问题的集成机器学习算法。

XGBoost 是一个开源库,最初由 Chen Tianqi Chen 在其 2016 年题为“XGBoost: A Scalable Tree Boosting System”的论文中开发。 该算法被设计为在计算上既高效又高效。

第一步是安装 XGBoost 库(如果尚未安装)

pip install xgboost

可以通过创建 XGBRegressor 的实例来定义 XGBoost 模型:

from xgboost import XGBRegressor# create an xgboost regression modelmodel = XGBRegressor( n_estimators=1000, max_depth=7, eta=0.1, subsample=0.7, colsample_bytree=0.8,)model.fit(X, y)n_estimators:集成中树的数量,通常会增加,直到看不到进一步的改进。max_depth:每棵树的最大深度,通常值在 1 到 10 之间。eta:用于加权每个模型的学习率,通常设置为较小的值,例如 0.3、0.1、0.01 或更小。subsample:每棵树中使用的样本数,设置为 0 和 1 之间的值,通常为 1.0 以使用所有样本。colsample_bytree:每棵树中使用的特征(列)数,设置为 0 到 1 之间的值,通常为 1.0 以使用所有特征。

关于 XGBoost 的几点:

XGBoost 在稀疏和非结构化数据上表现不佳。该算法被设计为计算效率和高效,但是对于大型数据集的训练时间仍然相当长它对异常值很敏感结论

在本文中,我们介绍了 9 种流行的回归算法,并使用 Scikit-learn 和 XGBoost 进行了动手实践。最好将它们放在您的工具箱中,这样您就可以尝试不同的算法并为实际问题找到最佳回归模型。

技术交流

欢迎转载、收藏、有所收获点赞支持一下!

目前开通了技术交流群,群友已超过2000人,添加时最好的备注方式为:来源+兴趣方向,方便找到志同道合的朋友

方式①、发送如下图片至微信,长按识别,后台回复:加群;方式②、添加微信号:dkl88191,备注:来自CSDN方式③、微信搜索公众号:Python学习与数据挖掘,后台回复:加群

本文链接地址:https://www.jiuchutong.com/zhishi/300117.html 转载请保留说明!

上一篇:AcWing - 蓝桥杯集训每日一题(DAY 1——DAY 5)(蓝桥杯咋样)

下一篇:AttributeError: cannot assign module before Module.__init__() call

  • 最简单的网店推广方式(网上店铺推荐)

    最简单的网店推广方式(网上店铺推荐)

  • 荣耀50怎么下载来电铃声(荣耀50怎么下载软件)

    荣耀50怎么下载来电铃声(荣耀50怎么下载软件)

  • 苹果手表设置里键盘在哪(苹果手表设置里没有通用)

    苹果手表设置里键盘在哪(苹果手表设置里没有通用)

  • 苹果11新增的功能(苹果11的新功能介绍在哪里)

    苹果11新增的功能(苹果11的新功能介绍在哪里)

  • iphonex闹钟铃声怎么设置(iphonex闹钟声音)

    iphonex闹钟铃声怎么设置(iphonex闹钟声音)

  • 抖音怎么直播点赞(抖音怎么直播点歌)

    抖音怎么直播点赞(抖音怎么直播点歌)

  • 华为手机怎么添加水印到照片(华为手机怎么添加天气预报到桌面)

    华为手机怎么添加水印到照片(华为手机怎么添加天气预报到桌面)

  • 外置独立声卡怎么安装(外置声卡设置教程)

    外置独立声卡怎么安装(外置声卡设置教程)

  • 兼容性检查器怎么回事(兼容性检查器怎么解决word)

    兼容性检查器怎么回事(兼容性检查器怎么解决word)

  • iPhoneXR如何区分1卡2卡(iphonexr版本区分)

    iPhoneXR如何区分1卡2卡(iphonexr版本区分)

  • 抖音认证信息是什么意思(抖音认证信息是什么)

    抖音认证信息是什么意思(抖音认证信息是什么)

  • 华为荣耀10可不可以录屏(华为荣耀10可不可以投屏)

    华为荣耀10可不可以录屏(华为荣耀10可不可以投屏)

  • mtp是什么驱动程序(mtp driver)

    mtp是什么驱动程序(mtp driver)

  • 7p的电池可以用在8p吗(7p的电池用了快6年了)

    7p的电池可以用在8p吗(7p的电池用了快6年了)

  • vivonex35g是双模吗(vivonex35g是双卡双待吗)

    vivonex35g是双模吗(vivonex35g是双卡双待吗)

  • 淘宝怎么看自己几颗星(淘宝怎么看自己的评价五星截图)

    淘宝怎么看自己几颗星(淘宝怎么看自己的评价五星截图)

  • 毒可以用花呗支付吗(毒可以用支付宝支付吗)

    毒可以用花呗支付吗(毒可以用支付宝支付吗)

  • 快手观众怎么与主播连麦(快手观众怎么与别人聊天)

    快手观众怎么与主播连麦(快手观众怎么与别人聊天)

  • 拼多多代付退款钱会退到那个账户上(拼多多代付退款后钱退到哪里)

    拼多多代付退款钱会退到那个账户上(拼多多代付退款后钱退到哪里)

  • 港版iphonexs支持电信吗(港版iphonexs支持nfc吗)

    港版iphonexs支持电信吗(港版iphonexs支持nfc吗)

  • 闲鱼的钱怎么提现(闲鱼的钱怎么提现到支付宝)

    闲鱼的钱怎么提现(闲鱼的钱怎么提现到支付宝)

  • vivoz3和oppok1对比(vivoz3i和oppok3哪个好)

    vivoz3和oppok1对比(vivoz3i和oppok3哪个好)

  • Win10系统不显示移动硬盘该如何解决(windos10不显示桌面)

    Win10系统不显示移动硬盘该如何解决(windos10不显示桌面)

  • 鸟瞰兰萨罗特岛的La Geria葡萄园,西班牙加那利群岛 (© Orbon Alija/Getty Images)(兰萨罗特岛的地理位置)

    鸟瞰兰萨罗特岛的La Geria葡萄园,西班牙加那利群岛 (© Orbon Alija/Getty Images)(兰萨罗特岛的地理位置)

  • Vue实现角色权限动态路由详细教程,在vue-admin-template基础上修改,附免费完整项目代码(vue角色管理)

    Vue实现角色权限动态路由详细教程,在vue-admin-template基础上修改,附免费完整项目代码(vue角色管理)

  • YOLO v5 代码精读(3)YOLO网络结构(yolov5 test.py)

    YOLO v5 代码精读(3)YOLO网络结构(yolov5 test.py)

  • 一个前端大佬的十年回顾 | 漫画前端的前世今生(前端大佬都有谁)

    一个前端大佬的十年回顾 | 漫画前端的前世今生(前端大佬都有谁)

  • 手把手,完整的从0搭建vite-vue3-ts项目框架:配置less+svg+pinia+vant+axios(手把手的教)

    手把手,完整的从0搭建vite-vue3-ts项目框架:配置less+svg+pinia+vant+axios(手把手的教)

  • 小微企业免税销售额填含税还是不含税
  • 企业所得税季度申报表A类
  • 视同内销补税的财务处理
  • 财务报表提示未审计
  • 应纳税额减征额包括哪些内容
  • 幼儿园收取生活费通知
  • 预收物业费如何填报申报表
  • 已认证的红字发票怎么退
  • 多层股权结构设计控制法
  • 增值税发票收款人和复核人可以一个人吗
  • 离线开票时间超限怎么办 发票都已经报送
  • 公司从事房地产有什么好名字
  • 应扣缴税额是什么意思
  • 购买办公桌椅属于什么费用
  • 公司集体活动的目的与意义
  • 进项税期末有余额吗
  • 科目余额表借贷方余额不一致
  • 公积金提取条件
  • 存货发出记账成本最高
  • 购房专票可以抵扣进项税吗为什么
  • 期末留抵税额退税额
  • 收到生育津贴会计分录
  • win10开机黑屏几秒
  • linux deepin怎么样
  • 已经提完折旧的设备改造
  • win10 多屏协同
  • win11怎么查看win的产品密钥
  • 暂存款账务处理
  • 公司基本户可以异地开户吗
  • ssm算前后端分离吗
  • vue3 element ui
  • 前端工程搭建
  • 有关厉元朗的小说
  • 印花税的相关问题
  • 公司注册资金多长时间可提出来
  • 企业利润分配的通常去向包括
  • 在建工程减值准备是否可以转回
  • 进项税和销项税月末怎么结转
  • 永续债利息可以扣除嘛
  • 帝国cms导航站模板
  • 浅谈php设计模式的理解
  • 运输发票怎么做账
  • 在建工程过程中取得收入怎么入账
  • 公司账户转钱到私人账户要扣税吗
  • 小规模企业每月收入多少可以不纳税
  • 合同不交印花税怎么处理
  • 工伤报销计入什么科目
  • 政府工会经费计入什么科目
  • 短期借款利息是期间费用吗
  • 税金及附加包括哪些科目
  • 资产减值损失怎么计提
  • 纸巾的发票可以抵扣进项税吗
  • 低值易耗品和物料用品的区别
  • 违约金罚款计入什么科目
  • 物流公司账务处理流程及方法
  • 公司账本需要保留几年
  • jdbc连接mysql数据库步骤
  • windows vista界面
  • mac开机后蓝屏没反应
  • 今后64位Win10 Mobile将是未来重点
  • centos配置yum
  • win7数据保护
  • Linux系统怎么用命令行打开软件
  • linux那么多命令怎么记
  • perl 正则表达式 保留原有字符
  • 微信小程序实现微信支付
  • 文件上传的三个条件
  • github比较火的项目
  • 阿里云一键建站
  • 文章标题用几号字体
  • linux批量修改文件时间
  • js判断上传图片宽高大小
  • shell脚本cut -d
  • 使用ngView配合AngularJS应用实现动画效果的方法
  • fw开发
  • JavaScript+html5 canvas制作的百花齐放效果完整实例
  • 盐城合作医疗在手机上怎么交
  • 上海嘉定南翔房子
  • 注销税务登记存货如何处理
  • 土地的几种类型
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设