算法小白的第一次尝试---SVM实现

初勘数据处理之预测算法(支持向量机SVM)附matlab源码 初勘数据处理之预测算法(支持向量机SVM)附matlab源码 机器学习 从人类诞生幵始,人们就不断地尝试探求各种方式方法来简化或代替人类劳动。随着计算机技术的产生、发展,让人们开始寻求一个可以模拟人类思考的系统,进而代替人们去完成某项特定的工作。这个系统必须具有专业的知识或技能,而这些专业的知识和技能就需要通过机器学习来获取。 任何的计算机程序在完成一项任务的时候得到经验,通过这个经验来不断改进自身表现,这就叫机器学习。机器学习是研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有 阅读详情
import org.apache.log4j.{Level, Logger}
import org.apache.spark.mllib.classification.{SVMModel, SVMWithSGD}
import org.apache.spark.mllib.evaluation.{BinaryClassificationMetrics, MulticlassMetrics}
import org.apache.spark.mllib.linalg.Vectors
import org.apache.spark.mllib.optimization.HingeGradient
import org.apache.spark.mllib.optimization.SquaredL2Updater
import org.apache.spark.mllib.regression.LabeledPoint
import org.apache.spark.sql.SparkSession
/**
  * @author XiaoTangBao
  * @date 2019/3/6 21:20
  * @version 1.0
  */
object SVM {
  def main(args: Array[String]): Unit = {
    //日志屏蔽
    Logger.getLogger("org.apache.spark").setLevel(Level.ERROR)
    val sparkSession = SparkSession.builder().master("local[4]").appName("SVM").getOrCreate()
    val sc = sparkSession.sparkContext
    //获取数据源
    val data = sc.textFile("G:\\mldata\\iris.txt")
    //spark SVM中要求label为0和1,实际上内部转化为-1和1
    val pddata = data.map(str => str.split('|')).map(arr =>(arr(0).toDouble,arr(1).toDouble,arr(2).toDouble,arr(3).toDouble,arr(4)))
      .filter(tuple =>tuple._5.equals("Iris-setosa") || tuple._5.equals("Iris-versicolor"))
      .map(tuple => if(tuple._5.equals("Iris-setosa")) (tuple._1,tuple._2,tuple._3,tuple._4,0) else (tuple._1,tuple._2,tuple._3,tuple._4,1))
      .map(tuple =>LabeledPoint(tuple._5,Vectors.dense(tuple._1,tuple._2,tuple._3,tuple._4)))
    //简单交叉验证
    val splitdata = pddata.randomSplit(Array(0.8,0.2))
    val traindata = splitdata(0).cache()
    val testdata = splitdata(1)
    //模型参数设置
    val model = new SVMWithSGD()
        model.optimizer
          .setNumIterations(1000)
          .setRegParam(0.1)
          .setStepSize(0.3)
          .setMiniBatchFraction(0.5)
          .setGradient(new HingeGradient())
          .setUpdater(new SquaredL2Updater)
    val svmModel = model.run(traindata)
    svmModel.save(sc,"C:\\users\\Java_Man_China\\desktop\\model1")
    val sameModel = SVMModel.load(sc,"C:\\users\\Java_Man_China\\desktop\\model1")
    val score = sameModel.predict(testdata.map(lab => lab.features))
    val scoreAndLabel = score.zip(testdata.map(lab => lab.label))
    scoreAndLabel.foreach(println(_))
    //二分类评估器
    val metrics = new BinaryClassificationMetrics(scoreAndLabel)
    val auroc = metrics.areaUnderROC()
    println(auroc)
    //多分类评估器
    val metric = new MulticlassMetrics(scoreAndLabel)
    val ac = metric.accuracy
    println(ac)
  }
}
SVM 基本概念及Python实现方式 SVM(support vector machine)支持向量机: 注意:本文不准备提到数学证明的过程,一是因为有一篇非常好的文章解释的非常好:http://blog.youkuaiyun.com/v_july_v/article/details/7624837,另一方面是因为我只是个程序员,不是搞数学的(主要是因为数学不好。),主要目的是将SVM以最通俗易懂,简单粗暴的方式解释清楚。 线性分类: 阅读详情

相关推荐

机器学习:支持向量机(SVM)详解与实战

支持向量机(Support Vector Machine,简称 SVM)是一种常用于分类和回归任务的监督学习算法。它的核心思想是通过在特征空间中找到一个能够最大化分类间隔的超平面,将不同类别的数据分离开来。SVM的目标是找到一个最优的决策边界(即超平面),使得分类间隔(即边界到各类别数据点的最小距离)最大化。SVM可以处理线性可分和线性不可分的数据集。

weixin_52390875的博客 3485

org.apache.log4j.Logger实现用户数据收集(非系统日志收集)

以下简单现实文件生成和用户数据的写入 (一)、编写工具类 package com.web.untils; import java.text.SimpleDateFormat;   import java.util.Date;   import org.apache.log4j.FileAppender;   import org.apache.log4j.Level;   i

cnsd_liuliu的博客 836

Python AI教程之二十一:监督学习之支持向量机(SVM)算法

支持向量机(SVM)是一种功能强大的机器学习算法,广泛用于线性和非线性分类以及回归和异常值检测任务。SVM 具有很强的适应性,适用于各种应用,例如文本分类、图像分类、垃圾邮件检测、笔迹识别、基因表达分析、人脸检测和异常检测。本文介绍支持向量机算法如何工作?支持向量机术语。数学计算:SVM;支持向量机的类型;SVM中的流行核函数;在 Python 中实现 SVM 算法;支持向量机(SVM)的优点和缺点

潜洋的专栏 1767

org.apache.log4j.Logger详解

​ 在强调可重用组件开发的今天,除了自己从头到尾开发一个可重用的日志操作类外, Apache 为我们提供了一个强有力的日志操作包 -Log4j。Log4j 是 Apache 的一个开放源代码项目,通过使用 Log4j ,我们可以控制日志信息输送的目的地是控制台、文件、 GUI 组件、甚至是套接口服 务器、 NT 的事件记录器、 UNIX Syslog 守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。

qq_43842093的博客 2340

【数据挖掘基础】——支持向量机(SVM)+代码实现(8)

支持向量机算法分类和回归方法的中都支持线性性和非线性类型的数据类型。非线性类型通常是二维平面不可分,为了使数据可分,需要通过一个函数将原始数据映射到高维空间,从而使得数据在高维空间很容易可分,需要通过一个函数将原始数据映射到高维空间,从而使得数据在高维空间很容易区分,这样就达到数据分类或回归的目的,而实现这一目标的函数称为核函数。

lingxw的博客 5170

SVM 算法 java 实现

SVM 算法 java 实现了调用接口,只要传入数据即可,调用了encog这个开源包的SVM算法,也是官方libsvm的。

mysql log4jlogger_org.apache.log4j.Logger 详解

org.apache.log4j.Logger详解1.概述1.1.背景在应用程序中添加日志记录总的来说基于三个目的:监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析工作;跟踪代码运行时轨迹,作为日后审计的依据;担当集成开发环境中的调试器的作用,向文件或控制台打印代码的调试信息。最普通的做法就是在代码中嵌入许多的打印语句,这些打印语句可以输出到控制台或文件中,比较好的做法...

weixin_42529148的博客 500

java实现SVM支持向量机算法

通过java语言实现SVM支持向量机算法

Spark Streaming连接kafka消费多个topic只消费其中一个topic一个分区的问题

代码: import org.apache.kafka.common.serialization.StringDeserializer import org.apache.log4j.{Level, Logger} import org.apache.spark.sql.SparkSession import org.apache.spark.streaming.kafka010._ import org.apache.spark.streaming.{Seconds, StreamingContext

mrye的博客 1280

SVM 算法 java版本

SVM 算法 java 实现了调用接口,只要传入数据即可,调用了encog这个开源包的SVM算法,也是官方libsvm的。

利用ORCAD/pspice 仿真分析电路的幅度相位谱

利用ORCAD的pspice仿真分析电路的相位谱1.介绍2.搭建电路原理图3.建立仿真文件,进行交流分析4.仿真、查看输出5.总结 1.介绍 orcad配合pspice一直是电路原理图绘制和仿真的主要工具,pspice工具提供了诸如暂态分析、直流分析、交流分析等多个工具。学校主要教的是multisim,对orcad讲得很少,最进要利用orcad对运放构成的电路的频响、相移特性进行分析,发现资料幅度...

qq_40011737的博客 1万+

spark:学习杂记--23

ID1 sendoh akria ID2 ximen luxiaofeng ID3 sendoh ximen ID4 yegucheng shedoh 根据关键字从新排序: package fff import org.apache.log4j.{Level, Logger} import org.apache.spark.{SparkContext, SparkConf} impo

花满楼 575

从零到一:在K210上实现YOLO模型在线训练与部署全流程

本文详细介绍了在K210芯片上实现YOLO模型在线训练与部署的全流程,涵盖数据采集、模型优化、量化转换及内存管理等关键环节。通过实战案例和代码示例,帮助开发者高效利用K210的超低功耗特性与YOLO模型的实时检测能力,适用于边缘计算和物联网应用场景。

weixin_29094539的博客 351

支持向量机SVM通俗理解(python代码实现)

这是第三次来“复习”SVM了,第一次是使用SVM包,调用包并尝试调节参数。听闻了“流弊”SVM的算法。第二次学习理论,看了李航的《统计学习方法》以及网上的博客。看完后感觉,满满的公式。。。记不住啊。第三次,也就是这次通过python代码手动来实现SVM,才让我突然对SVM不有畏惧感。希望这里我能通过简单粗暴的文字,能让读者理解到底什么是SVM,这货的算法思想是怎么样的。看之前千万不要畏惧,说到底就...

程松 9万+

比亚迪开放平台接口实战:车身状态监测与智能车联应用开发

本文详细介绍了如何利用比亚迪开放平台的车身状态接口进行智能车联应用开发。通过核心类BYDAutoBodyworkDevice,开发者可以安全获取车辆VIN、车门车窗状态、蓄电池电压、方向盘转角等实时数据,并利用监听器实现状态实时响应。文章提供了从SDK集成、接口调用到典型应用场景(如远程车况检查、车队管理)的完整实战指南,助力开发者快速构建基于比亚迪车辆数据的创新应用。

weixin_29176179的博客 731

手把手教你用二茂铁催化剂搞定醇的动力学拆分(保姆级实验避坑指南)

本文详细介绍了使用平面手性二茂铁催化剂进行醇的动力学拆分的全流程,包括催化剂选择与制备、反应体系搭建与条件优化、实时监测与反应淬灭、产物分离与纯化等关键步骤。通过实战案例和避坑指南,帮助实验人员实现>98% ee的拆分效果,特别适合需要高光学纯度二级芳基醇或烯丙醇的研究者。

weixin_30500105的博客 438

支持向量机SVM的原理和python实现

支持向量机(SVM)是一类按监督学习方式对数据进行二元分类的广义线性分类器,其决策边界是对学习样本求解的最大边距超平面,可以将问题化为一个求解凸二次规划的问题。与逻辑回归和神经网络相比,支持向量机,在学习复杂的非线性方程时提供了一种更为清晰,更加强大的方式。具体来说就是在线性可分时,在原空间寻找两类样本的最优分类超平面。在线性不可分时,加入松弛变量并通过使用非线性映射将低维度输入空间的样本映射到高维度空间使其变为线性可分,这样就可以在该特征空间中寻找最优分类超平面。

apple_52030329的博客 1万+

对接金蝶云星空调用即时库存信息查询API(附JAVA实现)

这篇文章教你如何对接金蝶API并且使用JAVA调用金蝶云星空的即时库存查询API

实用的博客 2609

机器学习:支持向量机(SVM)

支持向量机(SVM)是一类按监督学习方式对数据进行二元分类的广义线性分类器,其决策边界是对学习样本求解的最大边距超平面,可以将问题化为一个求解凸二次规划的问题。与逻辑回归和神经网络相比,支持向量机,在学习复杂的非线性方程时提供了一种更为清晰,更加强大的方式。

燕双嘤 20万+

Windows远程桌面开发之九-虚拟显示器(Windows 10 Indirect Display 虚拟显示器驱动开发)

by fanxiushu 2019-06-24 转载或引用请注明原始作者。 这里与远程桌面关系不是太大,但这个部分是xdisp_virt远程控制程序的实现多显示器桌面扩展的子功能,因此也归为远程桌面开发一类。 这篇文章与之前发布的...

fanxiushu的专栏 2万+

用业务语义织就企业数据之网:SAP Datasphere 的定位、架构与落地场景全解析

SAP Datasphere作为SAP业务数据云的核心组件,通过语义层整合企业内外部数据,支持实时分析与AI应用。其核心功能包括数据集成、语义建模、虚拟化与仓库能力,通过Spaces实现资源隔离,Data Builder和Business Builder分别面向技术和业务建模。该平台与SAP HANA Cloud、SAC等深度集成,支持财务统一分析、供应链可视化等典型场景,并可通过BW bridge实现传统BW资产云化迁移。Datasphere强调开放互联,能与Databricks等生态伙伴协同,为企业提供

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1366

《机器学习》 SVM支持向量机 推导、参数解析、可视化实现

支持向量机(Support Vector Machine,SVM)是一种监督学习算法,用于分类和回归问题。在SVM中,我们将每个样本表示为在高维空间中的一个点,并尝试找到一个超平面来将不同类别的样本分开。超平面的选择是基于使两个类别之间的间隔最大化的原则。支持向量机通过最大化支持向量与超平面之间的最小间隔来实现这一点。使用SVM算法对鸢尾花数据集进行二分类,并绘制出决策边界和支持向量的可视化图。首先,通过pandas库读取名为"iris.csv"的数据集文件,存储在变量data中。

wx_AHao1004Y的博客 4367

第201期 解锁科研效率新高度:Claude 科学技能插件(claude-scientific-skills)深度体验

科研AI助手Claude Scientific Skills开源工具为Claude大模型扩展科学能力,覆盖数据可视化、数学计算、学术格式处理等科研全流程需求。该插件支持LaTeX公式生成、自动化科研图表绘制、学术文档规范校正等功能,让研究人员通过自然语言指令即可完成专业任务。项目开源可定制,支持特定学科需求扩展,目前已托管于GitHub。使用门槛低,只需配置Claude API密钥即可快速启用,帮助科研人员从繁琐技术细节中解放,聚焦核心研究创新。

全网120W+关注AI拉呱,专注人工智能以及科技前沿! 1362

【机器学习】支持向量机(SVM)

SVM是一种基于统计学习理论的监督学习模型,旨在找到一个最优超平面,将不同类别的数据点分隔开,同时最大化分类间隔(Margin)具体来说:在线性可分时,在原空间寻找两类样本的最优分类超平面。在线性不可分时,加入松弛变量并通过使用非线性映射将低维度输入空间的样本映射到高维度空间使其变为线性可分,这样就可以在该特征空间中寻找最优分类超平面。

PANSS__的博客 6380

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

PyTorch支持向量机(SVM)详解

支持向量机是一种二分类算法,其目标是找到一个最优的超平面,将不同类别的数据点分隔开。这个超平面被称为决策边界,支持向量机的任务是找到使决策边界最佳的超平面。适用于线性和非线性分类问题。在高维空间中表现出色,适用于处理具有大量特征的数据。通过选择支持向量(距离决策边界最近的数据点)来提高模型的鲁棒性。支持向量机的核心思想是最大化分类间隔(两个类别之间的距离),以确保决策边界尽可能远离数据点。这种距离通常称为间隔(margin)。在下一节中,我们将深入探讨支持向量机的工作原理。

DeepViewInsight的博客 7521

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

实验二:用python实现SVM支持向量机并对鸢尾花数据集分类

实验二:SVM支持向量机 1. 实验内容: (1)用你熟知的语言(尽量使用python)实现支持向量机的算法,并在给定的数据集上训练。 (2)在测试集上用训练好的支持向量机进行测试,并将预测结果以csv格式保存为一行预测的分类。 (3)简要说明算法原理,记录实验过程的关键步骤,以及实验过程中遇到的问题和解决方法。 2. 实验说明: 数据集为鸢尾花数据集,有三个类别,其中setosa与另外两种之间是线性可分的,因此你需要选择按照setosa和versicolor,或setsosa和virginica,进行训练

YunduanBeichen的博客 1万+

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

上一篇: 算法小白的第一次尝试---PLA(感知机算法)实现
下一篇: 手撕SVM公式
小糖宝
博客等级 码龄9年 47粉丝 46原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值