Spark-机器学习(6)分类学习之支持向量机

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

Spark-机器学习(5)分类学习之朴素贝叶斯算法-CSDN博客文章浏览阅读1.6k次,点赞96次,收藏57次。今天的文章,我们来学习分类学习之朴素贝叶斯算法,并带来简单案例,学习用法。希望大家能有所收获。同时,希望我的文章能帮助到每一个正在学习的你们。也欢迎大家来我的文章下交流讨论,共同进步。https://blog.csdn.net/qq_49513817/article/details/138233224今天的文章,我们来学习分类学习之支持向量机,并带来简单案例,学习用法。希望大家能有所收获。

目录

一、支持向量机

什么是支持向量机

spark支持向量机

二、示例代码 

完整代码 

方法解析

 代码效果 

  代码输出

拓展-spark支持向量机


一、支持向量机

什么是支持向量机

 

支持向量机 

  • 支持向量(Support Vectors):在SVM中,支持向量是那些位于决策边界两侧的最靠近边界的训练样本点。这些点对于确定决策边界的位置至关重要,因为SVM试图找到一个超平面,使得支持向量到该超平面的距离最大化。这些支持向量通常只占训练数据的一小部分,因此SVM是一种稀疏模型,它只依赖于少数关键样本进行决策。

  • SV1、SV2、SV3等:这些通常是对支持向量的标记或引用。在实际应用中,可能会有多个支持向量,它们分布在决策边界的两侧。每个支持向量都对确定决策边界的位置有所贡献。标记为SV1、SV2、SV3等的支持向量只是为了区分不同的支持向量,没有特别的数学或逻辑含义。

  • 超平面与间隔:在SVM中,决策边界是一个超平面,它将数据空间划分为两个区域,每个区域对应一个类别。间隔是指支持向量到决策边界的距离,SVM的目标是最大化这个间隔,以提高分类的鲁棒性和泛化能力。

支持向量机(Support Vector Machine,简称SVM)是一类按监督学习(supervised learning)方式对数据进行二元分类的广义线性分类器(generalized linear classifier)。它的决策边界是对学习样本求解的最大边距超平面(maximum-margin hyperplane)。SVM使用铰链损失函数(hinge loss)计算经验风险(empirical risk)并在求解系统中加入了正则化项以优化结构风险(structural risk),是一个具有稀疏性和稳健性的分类器。

SVM的工作原理可以概括为以下几个步骤:首先,对数据进行预处理,也叫做特征提取,将原始数据转换为可供算法处理的特征向量;然后,建立一个目标函数,该函数能够将数据划分成正类和负类;接着,选择最佳超参数,如kernel函数和正则化参数C,其中kernel函数用于将特征空间映射到高维空间,而正则化参数C是用来控制模型的复杂度的;最后,使用训练数据集训练出最佳SVM模型,再用测试数据集对模型进行测试和评价。

SVM较好地解决了传统学习方法难以处理的小样本、高维、非线性等问题,且具有较好的泛化能力。因此,它已成功应用到人脸识别、遥感图像分析、文本分类等众多模式识别领域。然而

spark支持向量机

Spark支持向量机(SVM)算法,是Spark机器学习库(MLlib)中的一个重要组成部分。Spark MLlib提供了SVM的实现,允许用户在大规模数据集上应用SVM算法进行分类任务。

SVM是一种监督学习算法,特别适用于高维空间,并且在数据维度大于样本点数时依然有效。它使用训练数据的一个子集(称为支持向量)来做出决策,因此具有内存效率高的特点。

在Spark中使用SVM时,首先需要创建一个Spark会话(SparkSession),然后可以从各种数据源(如文件、数据库、HDFS等)加载数据。数据加载后,可以将其转换为DataFrame格式,以便在MLlib中使用。然后,可以利用MLlib中的SVM算法对数据进行训练,得到一个SVM模型。这个模型可以用于对新数据进行分类预测。

此外,Spark还支持对向量和矩阵进行各种统计计算,这对于机器学习任务中的特征处理和模型评估非常有用。这些统计计算主要通过MLlib中的Statistics类库来实现。

二、示例代码 

下面的示例代码的主要作用是展示如何使用Spark MLlib的SVM分类器对多分类问题进行建模和评估。通过读取CSV文件中的数据,转换数据类型,训练模型,并评估模型的性能,这对于我们来学习机器学习来说是一个很好的例子。

完整代码 

import org.apache.spark.ml.classification.SVM  
import org.apache.spark.ml.evaluation.MulticlassClassificationEvaluator  
import org.apache.spark.ml.feature.{StringIndexer, VectorIndexer}  
import org.apache.spark.sql.SparkSession  
  
object SimpleSVMExample {  
  def main(args: Array[String]): Unit = {  
    // 创建Spark会话  
    val spark = SparkSession.builder()  
      .appName("Peng0426.")  
      .master("local[*]") // 使用本地模式,并尽可能使用所有可用的CPU核心  
      .getOrCreate()  
    import spark.implicits._  
    // 加载数据,这里假设你有一个CSV文件,其中包含标签和特征  
    val data = spark.read.option("header", "true").csv("path_to_your_data.csv")  
    // 将标签列从字符串转换为数值型  
    val labelIndexer = new StringIndexer()  
      .setInputCol("label")  
      .setOutputCol("indexedLabel")  
      .fit(data)   
    // 自动识别分类特征,并对它们进行索引  
    val featureIndexer = new VectorIndexer()  
      .setInputCol("features")  
      .setOutputCol("indexedFeatures")  
      .setMaxCategories(4) // 假设我们的特征是分类的,并且最多有4个不同的值  
      .fit(data)   
    // 分割数据集为训练集和测试集  
    val Array(trainingData, testData) = data.randomSplit(Array(0.7, 0.3))  
    // 训练SVM模型  
    val svm = new SVM()  
      .setLabelCol("indexedLabel")  
      .setFeaturesCol("indexedFeatures")  
    // 使用训练数据拟合模型  
    val svmModel = svm.fit(trainingData)  
    // 对测试数据进行预测  
    val predictions = svmModel.transform(testData)  
    // 选择 (prediction, true label) 和计算测试误差  
    val evaluator = new MulticlassClassificationEvaluator()  
      .setLabelCol("indexedLabel")  
      .setPredictionCol("prediction")  
      .setMetricName("accuracy")  
    val accuracy = evaluator.evaluate(predictions)  
    println(s"Test Error = ${(1.0 - accuracy)}")   
  }  
}

data03数据格式 

方法解析

  • SparkSession:这是Spark MLlib的入口点,用于创建DataFrame和读取数据。
  • SVM:Spark MLlib中的支持向量机分类器。
  • StringIndexer:用于将字符串标签列转换为数值型标签列,因为SVM需要数值型输入。
  • VectorIndexer:用于识别分类特征,并对它们进行索引。这通常用于处理包含分类特征的数据集。
  • MulticlassClassificationEvaluator:用于评估多分类模型的性能。
  • DataFrame:Spark中的分布式数据集合,用于存储和处理数据。

 代码效果 

  • 读取一个CSV文件,该文件包含标签和特征。
  • 将标签列从字符串转换为数值型。
  • 对特征进行索引(如果需要)。
  • 将数据集分割为训练集和测试集。
  • 使用训练集训练一个SVM模型。
  • 使用测试集评估模型的准确性。

  代码输出

代码会输出测试集上的分类错误率(1减去准确率)。错误率越低,模型的性能越好。 

拓展-spark支持向量机

关键字描述例子
SVM支持向量机,一种有监督学习模型,用于分类和回归分析使用Spark MLlib的SVM算法对鸢尾花数据集进行分类
分隔超平面SVM算法的核心,用于将数据划分为不同类别在二维平面上,分隔超平面可能是一条直线
支持向量距离分隔超平面最近的点,对分类决策有决定性影响在训练过程中,支持向量用于确定分隔超平面的位置
间隔(Margin)分隔超平面到最近的支持向量的距离,SVM的目标是最大化间隔通过最大化间隔,SVM算法提高泛化能力,降低对噪声的敏感性
线性可分与非线性可分SVM可处理线性可分和非线性可分的数据对于线性可分数据,SVM可以直接找到分隔超平面;对于非线性可分数据,SVM可以通过核函数将数据映射到高维空间进行线性分割
核函数用于将数据从原始空间映射到高维空间的函数,使非线性可分数据变得线性可分常见的核函数包括线性核、多项式核、径向基函数(RBF)核等
硬间隔与软间隔硬间隔要求所有样本点都被正确分类,软间隔允许部分样本点被错误分类在实际应用中,软间隔SVM更为常见,因为它具有更强的泛化能力
多类分类SVM原本用于二分类问题,但可以通过“一对一”或“一对多”策略扩展到多类分类问题对于一个具有多个类别的数据集,可以使用SVM的多类分类策略进行分类

 

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

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

相关文章

基于YOLOV8+Pyqt5无人机航拍太阳能电池板检测系统

1.YOLOv8的基本原理 YOLOv8是一种前沿的目标检测技术,它基于先前YOLO版本在目标检测任务上的成功,进一步提升了性能和灵活性,在精度和速度方面都具有尖端性能。在之前YOLO 版本的基础上,YOLOv8 引入了新的功能和优化,…

SpringBoot 常用注解总结超详细(面试)

目录 一、组件相关🎁 Controller Service Repository Component 二、依赖注入相关🍉 Autowired Resource 根据类型注入(By Type) 根据名称注入(By Name) 区别 Qualifier Resource 和 Qualifie…

C语言浮点型数据在内存中的存储及取出等的介绍

文章目录 前言一、浮点型在内存中的存储二、浮点数存储规则三、浮点数在内存中的存储(32位)float类型四、浮点数在内存中的存储(64位)double类型五、指数E从内存中取出分成三种情况1. E不全为0或不全为12. E全为03. E全为1 六、有…

设计模式之工厂模式FactoryPattern(二)

一、简单工厂 package com.xu.demo.factoryPattern;/*** 简单工厂模式类*/ public class SimpleFactoryPattern {public static Phone create(String name) {//根据输入对象名称判断返回相匹配的对象if("IPhone".equals(name)) {//返回对象return new IPhone();}else…

Java算法--队列

队列 队列介绍 队列是一个有序列表,可以用数组或是链表来实现。遵循先入先出的原则。即:先存入队列的数据,要先取出。后存入的要后取出 数组模拟队列思路 队列本身是有序列表,若使用数组的结构来存储队列的数据,则…

自动驾驶新书“五一”节马上上市了

我和杨子江教授合写的《自动驾驶系统开发》终于在清华大学出版社三校稿之后即将在五一节后出版。 清华大学汽车学院的李克强教授和工程院院士撰写了序言。 该书得到了唯一华人图灵奖获得者姚期智院士、西安交大管晓宏教授和科学院院士以及杨强教授和院士等的推荐,…

git变更远端仓库名之后如何修改本地仓库配置的另一种方法?(删remote指针、添加、绑定master)

背景 如果某个远端的仓库地址变化后,本地仓库可以修改对应的remote。 之前谈过几种方法,比如重新设置一个新的remote的指针,绑定到新地址。然后删除origin,然后把新指针mv到origin。比如直接seturl修改(git remote se…

基于HTML+CSS+JavaScript的表白网页

基于HTMLCSSJavaScript的表白网页 前言效果截图(为GIF格式)部分代码领取源码下期更新预报 前言 大部分人都有喜欢的人,学会这个表白代码,下次表白你肯定会成功。 效果截图(为GIF格式) 部分代码 index.htm…

使用 Python 和 DirectShow 从相机捕获图像

在 Python 中使用 OpenCV 是视觉应用程序原型的一个非常好的解决方案,它允许您快速起草和测试算法。处理从文件中读取的图像非常容易,如果要处理从相机捕获的图像,则不那么容易。OpenCV 提供了一些基本方法来访问链接到 PC 的相机(通过对象),但大多数时候,即使对于简单的…

在no branch上commit后,再切换到其他分支,找不到no branch分支的修改怎么办?

解决办法 通过git reflog我们可以查看历史提交记录,这里的第二条提交(fbd3ea8)就是我在no branch上的提交。 再通过git checkout -b backup fbd3ea8,恢复到上次提交的状态,并且为其创建个分支backup,此时…

B+tree - B+树深度解析+C语言实现+opencv绘图助解

Btree - B树深度解析C语言实现opencv绘图助解 1. 概述2. Btree介绍3. Btree算法实现3.1 插入分裂 3.2 删除向右借位(左旋)向左借位(右旋)合并 3.3 查询和遍历3.3.1 查询3.3.2 遍历 3.4 优化优化1(匀key)优化2(升级key)优化3(拓展兄…

池化整合多元数据库,zData X 一体机助力证券公司IT基础架构革新

引言 近期,云和恩墨 zData X 多元数据库一体机(以下简称 zData X)在某证券公司的OA、短信和CRM业务系统中成功上线,标志着其IT基础架构完成从集中式存储向池化高性能分布式存储的转变。zData X 成功整合了该证券公司使用的达梦、O…

SEO之链接原理(三)

初创企业需要建站的朋友看这篇文章,谢谢支持: 我给不会敲代码又想搭建网站的人建议 (接上一篇) 4、 Google PR PR是 PageRank 的缩写。Google PR理论是所有基于链接的搜索引擎理论中最有名的。 PR是Google创始人之一拉里佩奇发明…

二维数组打印菱形(C语言)

一、N-S流程图&#xff1b; 二、运行结果&#xff1b; 三、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h>int main() {//初始化变量值&#xff1b;char arr[5][5] { { , , *, , }, { , *, *, *, },{*, *, *, *, *}, { , *, *, *, …

【基于BP神经网络的多输入分类预测】

文章目录 前言环境准备导入数据划分训练集和测试集数据归一化建立模型设置训练参数训练网络仿真测试数据反归一化和排序性能评价结果可视化混淆矩阵 前言 在数据科学和机器学习领域&#xff0c;对复杂数据集进行高精度的分类预测是一个常见且关键的任务。本文通过MATLAB代码示例…

python3GUI--本地简易音乐播放器By:PyQt5(附下载地址)

文章目录 二&#xff0e;展示1.启动2.添加音乐&播放3.软件风格 三&#xff0e;软件整体功能-览四&#xff0e;实现原理1.界面设计2.音频播放3.打包 五&#xff0e;总结 博客二连发&#xff0c;继续为大家带来我使用PyQt5开发的软件&#xff0c;本次为大家分享我写的一款本地…

MySQL数据库常见SQL语句宝典

一 、常用操作数据库的命令 1.查看所有的数据库 : show databases;2.创建一个数据库 : create database if not exists 数据库名;3.删除一个数据库 : drop database if exists 数据库名;4.选择一张表 (注意在建表之前必须要选择数据库) : use 表名;* --tab 键的上面&#x…

如何我现在是本地的文件路径不是http,用html如何打开

--别给我BB 如何我现在是本地的文件架路径不是http&#xff0c;用html如何打开? 答&#xff1a; 如果你想在HTML中打开本地文件路径的视频&#xff0c;可以使用file://协议。假设你的视频文件在本地的路径为/path/to/your/video.mp4&#xff0c;那么你可以将src属性设置为file…

ULTIMATE VOCAL REMOVER V5 for Mac:专业人声消除软件

ULTIMATE VOCAL REMOVER V5 for Mac是一款专为Mac用户设计的人声消除软件&#xff0c;它凭借强大的功能和卓越的性能&#xff0c;在音乐制作和后期处理领域崭露头角。 ULTIMATE VOCAL REMOVER V5 for Mac v5.6激活版下载 这款软件基于深度神经网络&#xff0c;通过先进的训练模…

关于win11如何打开Hyper-V详解

文章目录 概要一、安装Hyper-V二、启用Hyper-V 概要 我是想要在win11家庭版用docker部署一个&#xff0c;gpt大模型&#xff0c;一开始走了很多弯路&#xff0c;因为要打开Hyper-V&#xff0c;所以我搜集到了一个方法&#xff0c;因为一般win11家庭版的Hyper-v是默认隐藏的&am…
最新文章