Spark-机器学习(3)回归学习之线性回归

在之前的文章中,我们了解我们的机器学习,了解我们spark机器学习中的特征提取和我们的tf-idf,word2vec算法。想了解的朋友可以查看这篇文章。同时,希望我的文章能帮助到你,如果觉得我的文章写的不错,请留下你宝贵的点赞,谢谢。

Spark-机器学习(2)特征工程之特征提取-CSDN博客文章浏览阅读2k次,点赞54次,收藏36次。今天的文章,我会带着大家一起了解我们的特征提取和我们的tf-idf,word2vec算法。希望大家能有所收获。同时,本篇文章为个人spark免费专栏的系列文章,有兴趣的可以收藏关注一下,谢谢。同时,希望我的文章能帮助到每一个正在学习的你们。也欢迎大家来我的文章下交流讨论,共同进步。https://blog.csdn.net/qq_49513817/article/details/137844271今天的文章,我们来学习我们回归中的线性回归,希望大家能有所收获。 

目录

一、线性回归

        什么是线性回归? 

        spark线性回归

二、示例代码

拓展-线性回归算法介绍及用法

1.算法

2.用法


一、线性回归

什么是线性回归? 

线性回归

线性回归研究是一种统计学上分析的方法,旨在确定两种或两种以上变量间相互依赖的定量关系。这种关系通常用一个线性方程来表示,其中一个或多个自变量(也称为解释变量或特征)与因变量(也称为响应变量或目标)之间的关系被假定为线性。

在线性回归模型中,因变量被假设为自变量通过一个线性组合加上一个常数项(截距)以及一个误差项(随机扰动)来影响。这个线性组合中的系数,也被称为回归系数,反映了各自变量对因变量的影响程度和方向。

线性回归研究通常包括以下步骤:

  1. 数据收集:收集包含自变量和因变量的数据集。

  2. 模型建立:根据收集的数据,建立线性回归模型。

  3. 参数估计:使用最小二乘法等方法来估计模型中的参数(回归系数和截距)。最小二乘法通过最小化预测值与实际值之间的平方误差和来找到最佳拟合的回归系数。

  4. 模型检验:对模型的拟合效果进行检验,包括检验回归系数的显著性(如t检验)以及模型整体的拟合优度(如R²值)。

  5. 预测与解释:利用拟合好的模型进行预测,并解释各自变量对因变量的影响。

线性回归研究在多个领域都有广泛应用,如经济预测、市场营销、医学、社会科学等。它提供了一种量化变量间关系的方法,并能通过统计检验来评估这种关系的可靠性。然而,线性回归的前提假设(如线性关系、误差项的独立性等)需要在实际应用中进行检验,以确保模型的适用性。如果数据不满足这些假设,可能需要使用其他类型的回归模型,如多项式回归、逻辑回归等。

spark线性回归

Spark线性回归是Apache Spark框架中实现线性回归分析的一种功能。线性回归是利用线性回归方程的最小平方函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析。在Spark中,线性回归模型可以通过最小二乘法等优化算法来估计模型的参数,从而建立自变量和因变量之间的线性关系。

Spark支持多种线性回归方法,包括普通线性回归(LinearRegression)、加L1正则化的线性回归(LassoRegression)以及加L2正则化的线性回归(RidgeRegression)。这些方法提供了灵活性和鲁棒性,以适应不同的数据和分析需求。

通过Spark线性回归,用户可以处理大规模数据集,并利用分布式计算能力来加速模型的训练和预测过程。这使得线性回归在大数据场景下更加高效和实用。

Spark线性回归是一种利用Apache Spark框架进行线性回归分析的方法,旨在从大规模数据集中发现变量之间的线性关系,并为预测和决策提供支持。

二、示例代码

import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.ml.regression.LinearRegression
import org.apache.spark.ml.feature.VectorAssembler
import org.apache.spark.ml.evaluation.RegressionEvaluator
import org.apache.spark.sql.SparkSession
object p4 {def main(args: Array[String]): Unit = {val conf = new SparkConf().setMaster("local").setAppName("ppp")val sc = new SparkContext(conf)val spark = SparkSession.builder().appName("SimpleLinearRegression").getOrCreate()import spark.implicits._// 假设这里有一些数据,例如:(1.0, 2.0, 3.0), (2.0, 3.0, 5.0), ...// 这里我们使用一些随机数据作为示例val data = sc.parallelize(Seq((1.0, 2.0, 3.0),(2.0, 3.0, 5.0),(3.0, 4.0, 7.0))).toDF("feature1", "feature2", "label")// 使用VectorAssembler将所有特征转换为一个特征向量val assembler = new VectorAssembler().setInputCols(Array("feature1", "feature2")).setOutputCol("features")val output = assembler.transform(data)// 分割数据集为训练集和测试集val Array(trainingData, testData) = output.randomSplit(Array(0.7, 0.3))// 创建线性回归模型val lr = new LinearRegression().setMaxIter(10).setRegParam(0.3).setElasticNetParam(0.8)// 在训练集上训练模型val lrModel = lr.fit(trainingData)// 在测试集上进行预测val predictions = lrModel.transform(testData)// 选择(预测值, 真实值)并计算测试误差val evaluator = new RegressionEvaluator().setLabelCol("label").setPredictionCol("prediction").setMetricName("mse")val mse = evaluator.evaluate(predictions)println(s"Root-mean-square error = $mse")}
}

代码首先创建了一个SparkContext和一个SparkSession对象,然后创建了一个包含三个字段(feature1feature2label)的DataFrame,其中feature1feature2是特征,label是目标变量。

然后,代码使用VectorAssemblerfeature1feature2合并成一个特征向量,接着将数据集分割为训练集和测试集。

接下来,代码创建了一个线性回归模型,设置了最大迭代次数、正则化参数和弹性网络混合参数,然后在训练集上训练了这个模型。 

最后,代码在测试集上进行了预测,并使用RegressionEvaluator计算了均方误差(MSE)。

运行代码

 我们成功得到了我们的均方根误差(Root-mean-square Error,简称RMSE)

RMSE 的值越小,说明模型的预测性能越好,即模型的预测值与实际观测值之间的差异越小。相反,RMSE 的值越大,则模型的预测性能越差。

RMSE 对于大的误差非常敏感,因此它可以有效地揭示模型在预测大误差时的性能。

拓展-线性回归算法介绍及用法

1.算法

  • 最小二乘法(Ordinary Least Squares)

    • 描述:最基础的线性回归方法,通过最小化预测值与实际值之间的平方误差来求解回归系数。
    • 特点:计算速度快,但当数据量大或特征多时可能不太稳定。
  • 梯度下降法(Gradient Descent)

    • 描述:通过迭代的方式逐步调整回归系数,以最小化损失函数。
    • 变种
      • 批量梯度下降(Batch Gradient Descent):每次迭代使用所有数据点来更新系数。
      • 随机梯度下降(Stochastic Gradient Descent):每次迭代只使用一个数据点来更新系数,速度更快,适用于大数据集。
    • 特点:灵活,可以通过调整学习率和迭代次数来控制收敛速度和精度。
  • 正则化方法

    • 描述:为了防止过拟合,可以在损失函数中加入正则化项。
    • 类型
      • Lasso回归(L1正则化):使用L1范数作为正则化项,有助于产生稀疏模型。
      • Ridge回归(L2正则化):使用L2范数作为正则化项,有助于稳定模型。
      • ElasticNet回归:结合L1和L2正则化,提供了更多的灵活性。

2.用法

方法/算法关键字描述使用场景示例代码关键字/片段
最小二乘法 (Ordinary Least Squares)通过最小化预测值与实际值之间的平方误差来求解回归系数。基础线性回归场景,当数据量和特征数量适中时。LinearRegression().fit(training)
批量梯度下降 (Batch Gradient Descent)使用所有数据点来计算梯度并更新回归系数,每次迭代都会遍历整个数据集。数据集较小,或需要精确求解的场景。LinearRegression().setMaxIter(10).setRegParam(0.3).fit(training)
随机梯度下降 (Stochastic Gradient Descent)每次迭代只使用一个数据点来计算梯度并更新系数,适用于大数据集。大规模数据集,需要快速迭代更新的场景。LinearRegression().setSolver("sgd").setMaxIter(100).fit(training)
Lasso回归 (L1正则化)在损失函数中加入L1正则化项,有助于产生稀疏模型,适用于特征选择。需要进行特征选择,或希望模型具有稀疏性的场景。LinearRegression().setElasticNetParam(1.0).fit(training)
Ridge回归 (L2正则化)在损失函数中加入L2正则化项,有助于稳定模型,防止过拟合。数据集存在噪声或特征间存在相关性,需要稳定模型的场景。LinearRegression().setRegParam(0.3).fit(training)
ElasticNet回归结合L1和L2正则化,提供了更多的灵活性,可以根据数据和需求调整正则化强度。需要平衡特征选择和模型稳定性的场景。LinearRegression().setElasticNetParam(0.8).fit(training)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/314640.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从头开始构建自己的 GPT 大型语言模型

图片来源: Tatev Aslanyan 一、说明 我们将使用 PyTorch 从头开始构建生成式 AI、大型语言模型——包括嵌入、位置编码、多头自注意、残差连接、层归一化,Baby GPT 是一个探索性项目,旨在逐步构建类似 GPT 的语言模型。在这个项目中&#xff…

java 学习一

jdk下载地址 配置环境变量

网络安全实训Day24(End)

写在前面 并没有完整上完四个星期,老师已经趁着清明节假期的东风跑掉了。可以很明显地看出这次持续了“四个星期”实训的知识体系并不完整,内容也只能算是一次基础的“复习”。更多的内容还是靠自己继续自学吧。 网络空间安全实训-渗透测试 文件包含攻击…

机器人系统开发ros2-基础实践01-学会自定义一个机器人动作aciton实体类

您之前在了解操作教程中了解了action 。与其他通信类型及其各自的接口(主题/消息和服务/srv)一样,您也可以在包中自定义操作。本教程向您展示如何定义和构建可与您将在下一个教程中编写的action服务器和action 客户端一起使用的操作。 需要理…

RabbitMQ发布确认和消息回退(6)

概念 发布确认原理 生产者将信道设置成 confirm 模式,一旦信道进入 confirm 模式,所有在该信道上面发布的消息都将会被指派一个唯一的 ID(从 1 开始),一旦消息被投递到所有匹配的队列之后,broker就会发送一个确认给生产者(包含消…

GDPU 竞赛技能实践 天码行空9

1. 埃式筛法 求区间[2, n]内所有的素数对 💖 Main.java import java.util.Scanner;public class Main {static int N (int) 1e8, cnt 0;static int[] p new int[N];static boolean[] st new boolean[N];public static void main(String[] args){Scanner sc …

(mac)Promethues监控之mysqld_exporter(MySQL监控)

搭建Mysqld_exporterPrometheusGrafana监控系统 普罗米修斯是后端数据监控平台,通过Mysqld_exporter收集mysql数据,Grafana将数据用图形的方式展示出来 前提:已安装grafana和promethues 1.下载安装Mysql (1)启动MySQL…

一个联合均值与方差模型的R包——dglm

目录 一、引言二、包的安装与载入三、模拟例子3.1 数据生成3.2 数据查看3.3 模型估计参数 一、引言 在 R 语言中,dglm 包是用于拟合双参数广义线性模型(Double Generalized Linear Models,简称 DGLMs)的一个工具。这类模型允许同…

工厂高温如何降温?

工厂高温降温的方法有多种,以下是一些常见且有效的策略: 使用风扇或工业大风扇:风扇能够加速空气流动,使人体表面的汗液蒸发速度加快,从而带走更多的热量,实现降温效果。工业大风扇是小型风扇的升级产物&a…

go语言实现简单登陆返回token样例

目录 1、代码实现样例: 2、postman调用,获取登陆后的token: 1、代码实现样例: package mainimport ("net/http""time""github.com/dgrijalva/jwt-go""github.com/gin-gonic/gin" )var …

【网络编程】网络编程中的基本概念及Java实现UDP、TCP客户端服务器程序(万字博文)

系列文章目录 【网络通信基础】网络中的常见基本概念 【网络编程】网络编程中的基本概念及Java实现UDP、TCP客户端服务器程序(万字博文) 【网络原理】UDP协议的报文结构 及 校验和字段的错误检测机制(CRC算法、MD5算法) 文章目…

密码学 | 承诺:绑定性 + 隐藏性

🥑原文:承诺方案(Commitment)学习笔记 🥑写在前面: 本文属搬运博客,自己留存学习。本文只会讲承诺的两个安全属性,不会再讲解承诺的定义。 正文 承诺方案需要满足两个安全属性&…

C++笔记:C++中的重载

重载的概念 一.函数重载 代码演示例子&#xff1a; #include<iostream> using namespace std;//函数名相同&#xff0c;在是每个函数的参数不相同 void output(int x) {printf("output int : %d\n", x);return ; }void output(long long x) {printf("outp…

手撕netty源码(一)- NioEventLoopGroup

文章目录 前言一、NIO 与 netty二、NioEventLoopGroup 对象的创建过程2.1 创建流程图2.2 EventExecutorChooser 的创建 前言 processOn文档跳转 本文是手撕netty源码系列的开篇文章&#xff0c;会先介绍一下netty对NIO关键代码的封装位置&#xff0c;主要介绍 NioEventLoopGro…

浅谈叉车车载电脑的市场现状

叉车的起源 叉车源于美国&#xff0c;兴于日本&#xff0c;虽然中国起步较晚&#xff0c;但是近些年来发展迅速。叉车又称叉式装载车&#xff0c;是对于成件托盘类货物进行装卸、堆垛和短距离运输&#xff0c;实现重物搬运作业的轮式工业车辆。 叉车的分类 叉车分为以上六大类…

OpenWrt上的docker容器无法访问外网解决

容器里能ping通OpenWrt的管理地址和wan口地址&#xff0c;但ping外网别的ip或域名就无法访问 简单修改设置就可以&#xff1a; Luci>网络>防火墙>转发&#xff1a;接受 ->保存应用

【Web】DASCTF X GFCTF 2024|四月开启第一局 题解(全)

目录 EasySignin cool_index SuiteCRM web1234 法一、条件竞争(没成功) 法二、session反序列化 EasySignin 先随便注册个账号登录&#xff0c;然后拿bp抓包改密码(username改成admin) 然后admin / 1234567登录 康好康的图片功能可以打SSRF&#xff0c;不能直接读本地文…

Hive安装部署

Apache Hive是一个基于Hadoop分布式文件系统、使用MapReduce算法执行大规模离线数据分析的数据仓库&#xff0c;本文主要描述Hive的安装部署。 如上所示&#xff0c;Hive总体应用架构图&#xff0c;其中&#xff0c;Hive基于HBase或者使用Hadoop分布式文件系统执行MapReduce的分…

Zephyr sensor子系统学习

一、背景 2023年7月份nRF Connect SDK 2.4.0最新版本&#xff0c;使用的Zephyr V3.3版本。从Zephyr 3.5版本在子系统中加入了sensing子系统。 现在最新的nRF Connect SDK 2.6.0 release支持v3.5.99-ncs1&#xff0c;已经支持sensing子系统 nRF52840现在官方支持两个传感器de…

yudao-cloud微服务系统系统模块+后台管理系统成功运行

&#x1f339;作者主页&#xff1a;青花锁 &#x1f339;简介&#xff1a;Java领域优质创作者&#x1f3c6;、Java微服务架构公号作者&#x1f604; &#x1f339;简历模板、学习资料、面试题库、技术互助 &#x1f339;文末获取联系方式 &#x1f4dd; 系列文章目录 第一章 芋…