Spark-机器学习(4)回归学习之逻辑回归

在之前的文章中,我们来学习我们回归中的线性回归,了解了它的算法,知道了它的用法,并带来了简单案例。想了解的朋友可以查看这篇文章。同时,希望我的文章能帮助到你,如果觉得我的文章写的不错,请留下你宝贵的点赞,谢谢。

Spark-机器学习(3)回归学习之线性回归-CSDN博客文章浏览阅读1.4k次,点赞39次,收藏28次。今天的文章,我们来学习我们回归中的线性回归,希望大家能有所收获。同时,希望我的文章能帮助到每一个正在学习的你们。也欢迎大家来我的文章下交流讨论,共同进步。https://blog.csdn.net/qq_49513817/article/details/138014891今天的文章,我们来学习我们回归中的逻辑回归,并带来简单案例,学习用法。希望大家能有所收获。

目录

一、逻辑回归

 什么是逻辑回归? 

spark线性回归

二、示例代码

拓展-逻辑回归算法介绍及用法

一、逻辑回归

 什么是逻辑回归? 

逻辑回归sigmoid函数

逻辑回归(Logistic Regression)是一种广义的线性回归分析模型,它主要用于解决二分类(0或1)问题,也可以用于多分类问题。逻辑回归的名称中虽然有“回归”二字,但它实际上是一种分类方法,主要用于研究某些事件发生的概率。

逻辑回归通过sigmoid函数将线性回归模型的输出映射到(0,1)之间,从而得到某个事件发生的概率。sigmoid函数的形式为:

g(z) = 1 / (1 + e^(-z))

其中,z是线性回归模型的输出。通过sigmoid函数,我们可以将线性回归模型的输出转化为一个概率值,从而进行二分类或多分类。

逻辑回归的优点包括计算代价不高,易于理解和实现。然而,它也有一些缺点,例如对数据和场景的适应能力有局限性,有时候不如决策树算法准确率高。另外,逻辑回归假设数据服从伯努利分布,因此不适合处理具有多个离散值的问题。

逻辑回归是一种常用的分类算法,尤其适用于二分类问题。在实际应用中,我们需要根据具体的问题和数据特点来选择合适的算法。

spark线性回归

Spark线性回归是利用Spark平台实现的一种线性回归分析方法。线性回归是一种回归分析,它使用称为线性回归方程的最小平方函数来对一个或多个自变量和因变量之间的关系进行建模。这种函数是回归系数的线性组合,其中回归系数是模型的参数。在Spark中,线性回归可以通过其机器学习库MLlib来实现,该库提供了用于数据分析和机器学习的各种算法和工具。通过Spark线性回归,用户可以处理大规模的数据集,并利用分布式计算的能力来加速模型的训练和预测过程。Spark线性回归在数据科学、机器学习、统计分析等领域有广泛的应用。 

二、示例代码

import org.apache.spark.ml.classification.LogisticRegression
import org.apache.spark.ml.evaluation.MulticlassClassificationEvaluator
import org.apache.spark.sql.SparkSession
object p4 {
  def main(args: Array[String]): Unit = {
    // 创建SparkSession
    val spark = SparkSession
      .builder()
      .appName("LogisticRegression")
      .master("local")
      .getOrCreate()
    import spark.implicits._
    // 加载CSV文件
    val data = spark.read.option("header", "true").csv("C:\\IDEA\\P1\\p1\\data01.csv")
      // 假设features列只包含一个double类型的值,直接转换即可
      .withColumn("features", $"features".cast("double"))
    // 选择包含label和features的列
    val finalData = data.select("label", "features")
    // 划分训练集和测试集
    val Array(trainingData, testData) = finalData.randomSplit(Array(0.7, 0.3))
    // 创建逻辑回归模型
    val lr = new LogisticRegression()
      .setMaxIter(10)
      .setRegParam(0.3)
    // 训练模型
    val lrModel = lr.fit(trainingData)
    // 在测试集上进行预测
    val predictions = lrModel.transform(testData)
    // 选择 (prediction, true label) 并展示结果
    predictions.select("prediction", "label").show(10)
    // 计算准确率
    val evaluator = new MulticlassClassificationEvaluator()
      .setLabelCol("label")
      .setPredictionCol("prediction")
      .setMetricName("accuracy")
    val accuracy = evaluator.evaluate(predictions)
    println(s"Test Accuracy = $accuracy")
  }
}

代码的主要步骤如下:

  • 创建一个SparkSession对象,这是使用Spark MLlib进行数据处理和模型训练的入口点。

  • 读取一个CSV文件作为数据集,假设该数据集包含"label"和"features"两列,其中"label"是目标变量,而"features"是特征变量。

  • 将"features"列的数据类型转换为double,因为逻辑回归通常需要数值型特征。

  • 从数据集中选择"label"和"features"列,得到一个新的DataFrame,用于后续的模型训练和评估。

  • 将数据集划分为训练集和测试集,比例分别为70%和30%。

  • 创建一个LogisticRegression对象,并设置最大迭代次数和正则化参数。

  • 使用训练数据拟合逻辑回归模型。

  • 使用训练好的模型对测试集进行预测。

  • 展示预测结果中的前10条记录,包括预测值和真实标签。

  • 使用MulticlassClassificationEvaluator计算测试集的准确率。

  • 打印出测试集的准确率。 

拓展-逻辑回归算法介绍及用法

方法/算法关键字描述示例
二项逻辑回归binomial logistic regression用于预测二元结果,即输出结果为两个类别之一。使用Spark MLlib的LogisticRegression类,设置family参数为binomial来进行二项逻辑回归。
多项逻辑回归multinomial logistic regression用于预测多类结果,即输出结果为多个类别之一。使用Spark MLlib的LogisticRegression类,设置family参数为multinomial来进行多项逻辑回归。
随机梯度下降(SGD)stochastic gradient descent一种优化算法,用于最小化逻辑回归的损失函数。在Spark MLlib中,可以通过设置solver参数为sgd来使用随机梯度下降优化算法。
L-BFGSL-BFGS一种准牛顿法优化算法,用于快速求解大规模优化问题。在Spark MLlib中,可以通过设置solver参数为lbfgs来使用L-BFGS优化算法。
弹性网络正则化elastic net regularization结合了L1和L2正则化,用于防止过拟合。在Spark MLlib的LogisticRegression类中,通过设置elasticNetParam参数来调整L1和L2正则化的权重。

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

NCH WavePad for Mac:功能全面的音频编辑利器

NCH WavePad for Mac是一款功能全面的音频编辑软件,专为Mac用户设计。它集音频录制、编辑、处理和效果添加于一体,为用户提供一站式的音频解决方案。 NCH WavePad for Mac v19.16注册版下载 作为一款专业的音频编辑器,WavePad支持对音频文件进…

软件测试之【合理的利用GPT来辅助软件测试一】

读者大大们好呀!!!☀️☀️☀️ 🔥 欢迎来到我的博客 👀期待大大的关注哦❗️❗️❗️ 🚀欢迎收看我的主页文章➡️寻至善的主页 文章目录 前言GPT的原理及技巧GPT辅助接口自动化测试 前言 在编程基础栏目中&#xff…

OSI七层模型、TCP/IP五层模型理解(个人解读,如何理解网络模型)

OSI七层模型 七层模型,亦称OSI(Open System Interconnection)。参考模型是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系,一般称为OSI参考模型或七层模型。它是一个七层的、抽象的模…

漫谈HAMR硬盘的可靠性-2

很显然,HAMR已经成为业内用于提升HDD硬盘容量硬盘的技术手段。三家机械硬盘HDD厂商,希捷、西数、东芝都已对HAMR硬盘进行了十多年的研究,但只有希捷大胆押注HAMR。相反,东芝和西部数据在采用HAMR之前选择了能量辅助垂直磁记录&…

Qt 跨平台开发

Qt 跨平台开发 文章目录 Qt 跨平台开发摘要第一 \ & /第二 神奇{不能换行显示第三 预处理宏 关键字: Qt、 win、 linux、 lib、 MSVC 摘要 最近一直在琢磨Qt跨平台开发的问题,缘由有以下几个, 首先第一个,我们目前开发…

如何查看redisson-spring-boot-starter和SpringBoot 对应版本

如何查看redisson-spring-boot-starter和SpringBoot 对应版本 我目前没有找到官网的地址来来查看对应关系。 所以我只能找pom.xml来查看 先在mvnrepository 找到redisson-spring-boot-starter的列表 具体地址是:https://mvnrepository.com/artifact/org.redisso…

查看项目go代码cpu利用率

1.代码添加: "net/http"_ "net/http/pprof"第二步,在代码开始运行的地方加上go func() {log.Println(http.ListenAndServe(":6060", nil))}() 2.服务器上防火墙把6060打开 3.电脑安装:Download | Graphviz …

Quarto Dashboards 教程 2:Dashboard Layout

「写在前面」 学习一个软件最好的方法就是啃它的官方文档。本着自己学习、分享他人的态度,分享官方文档的中文教程。软件可能随时更新,建议配合官方文档一起阅读。推荐先按顺序阅读往期内容: 1.quarto 教程 1:Hello, Quarto 2.qu…

【无监督+自然语言】GPT,GPT-2,GPT-3 方法概述 (Generative Pre-Traning)

主要参考 【GPT,GPT-2,GPT-3 论文精读【李沐论文精读】-2022.03.04】 https://www.bilibili.com/video/BV1AF411b7xQ/ 大语言模型综述: http://t.csdnimg.cn/4obR4 发展节点 2017.06 Transformer: 所有大语言模型LLMs的基础结构 , Attent…

Ubuntu下使用VisualStudioCode进行Java开发

0-1开始Java语言编程之路 一、Ubuntu下Java语言环境搭建 二、Ubuntu下Docker环境安装 三、使用Docker搭建本地Nexus Maven私有仓库 四、Ubuntu下使用VisualStudioCode进行Java开发 Visual Studio Code 下载 点击这个链接Visual Studio Code,进入VisualStudioCode的…

IDEA2023版本创建Sping项目无法使用Java8

1. 问题复现 1.1 当前版本2023.3.2 1.2 创建项目时:不存在jdk8选项 提示报错 1.3 原因分析 Spring官方发布Spring Boot 3.0.0 的时候告知了一些情况,Java 17将成为未来的主流版本 2. 如何解决 2.1 替换创建项目的源 我们只知道IDEA页面创建Spring项目…

CMake 编译项目

一、概述 cmake 是C一个很重要的编译和项目管理工具,我们在git 上以及常见的项目现在多数都是用cmake 管理的,那么我们今天就做一个同时有Opencv和CGAL 以及PCL 的项目。 二、项目管理 重点是CMakeList.txt 1、CMakeList.txt cmake_minimum_requir…

springcloudgateway集成knife4j

上篇我们聊聊springboot是怎么继承knife4j的。springboot3 集成knife4j-CSDN博客 本次我们一起学习springcloudgateway集成knife4j。 环境介绍 java:17 SpringBoot:3.2.0 SpringCloud:2023.0.0 knife4j : 4.4.0 引入maven配置…

javaEE初阶——多线程(八)——常见的锁策略 以及 CAS机制

T04BF 👋专栏: 算法|JAVA|MySQL|C语言 🫵 小比特 大梦想 此篇文章与大家分享分治算法关于多线程进阶的章节——关于常见的锁策略以及CAS机制 如果有不足的或者错误的请您指出! 多线程进阶 1.常见的锁策略 我们需要了解的是,我们使用是锁,在加锁 / 解锁…

树莓派学习笔记--Raspberry Pi OS系统烧录、SSH远程连接、VNC远程连接、设置静态IP地址

前言: 由于一些比赛的需求,目前我将开启一段时间的树莓派学习。目前还是处于一个啥也不知道的萌新状态。希望通过短期的学习能掌握树莓派的基本使用。 树莓派其实就是一个微型电脑,下面这个图是b站大佬整理的树莓派的各种型号配置&#xff0c…

LabVIEW轴承表面缺陷检测系统

LabVIEW轴承表面缺陷检测系统 为了解决轴承生产中人工检测效率低下、误检率高的问题,实现了一套基于LabVIEW的轴承表面缺陷自动检测系统。该系统利用工业相机采集轴承图像,通过图像处理技术对轴承表面的划痕缺陷和倒角缺陷进行自动识别和分析&#xff0…

使用excel文件生成sql脚本

目录 1、excel文件脚本变量2、公式示例 前言:在系统使用初期有一些基础数据需要从excel中导入到数据库中,直接导入的话可能有些字段用不上,所以就弄一个excel生成sql的导入脚本,这样可以将需要的数据填到指定的列即可生成sql。 1、…

Valentina Studio Pro for Mac:强大的数据库管理工具

Valentina Studio Pro for Mac是一款功能全面、操作高效的数据库管理工具,专为Mac用户设计,旨在帮助用户轻松管理各种类型的数据库。 Valentina Studio Pro for Mac v13.10激活版下载 该软件拥有直观的用户界面,使得数据库管理变得简单直观。…

Unity Shader 图形学【笔记一】

游戏图形学 源自:计算机图形学 涵盖:图形、动画的创建渲染展示 目标:性能优化、提高视觉质量,增强用户体验 技术:三维模型、纹理、光照、阴影、特效、动画、物理模拟、碰撞检测等 Unity Shader 是:un…

函数声明与调用:接口原型、参数传递顺序、返回值

示例&#xff1a; /*** brief how about function-declare-call? show you here.* author wenxuanpei* email 15873152445163.com(query for any question here)*/ #define _CRT_SECURE_NO_WARNINGS//support c-library in Microsoft-Visual-Studio #include <stdio.h&…