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)详解与实战
支持向量机(Support Vector Machine,简称 SVM)是一种常用于分类和回归任务的监督学习算法。它的核心思想是通过在特征空间中找到一个能够最大化分类间隔的超平面,将不同类别的数据分离开来。SVM的目标是找到一个最优的决策边界(即超平面),使得分类间隔(即边界到各类别数据点的最小距离)最大化。SVM可以处理线性可分和线性不可分的数据集。
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
Python AI教程之二十一:监督学习之支持向量机(SVM)算法
支持向量机(SVM)是一种功能强大的机器学习算法,广泛用于线性和非线性分类以及回归和异常值检测任务。SVM 具有很强的适应性,适用于各种应用,例如文本分类、图像分类、垃圾邮件检测、笔迹识别、基因表达分析、人脸检测和异常检测。本文介绍支持向量机算法如何工作?支持向量机术语。数学计算:SVM;支持向量机的类型;SVM中的流行核函数;在 Python 中实现 SVM 算法;支持向量机(SVM)的优点和缺点
org.apache.log4j.Logger详解
在强调可重用组件开发的今天,除了自己从头到尾开发一个可重用的日志操作类外, Apache 为我们提供了一个强有力的日志操作包 -Log4j。Log4j 是 Apache 的一个开放源代码项目,通过使用 Log4j ,我们可以控制日志信息输送的目的地是控制台、文件、 GUI 组件、甚至是套接口服 务器、 NT 的事件记录器、 UNIX Syslog 守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。
【数据挖掘基础】——支持向量机(SVM)+代码实现(8)
支持向量机算法分类和回归方法的中都支持线性性和非线性类型的数据类型。非线性类型通常是二维平面不可分,为了使数据可分,需要通过一个函数将原始数据映射到高维空间,从而使得数据在高维空间很容易可分,需要通过一个函数将原始数据映射到高维空间,从而使得数据在高维空间很容易区分,这样就达到数据分类或回归的目的,而实现这一目标的函数称为核函数。
SVM 算法 java 实现
SVM 算法 java 实现了调用接口,只要传入数据即可,调用了encog这个开源包的SVM算法,也是官方libsvm的。
mysql log4jlogger_org.apache.log4j.Logger 详解
org.apache.log4j.Logger详解1.概述1.1.背景在应用程序中添加日志记录总的来说基于三个目的:监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析工作;跟踪代码运行时轨迹,作为日后审计的依据;担当集成开发环境中的调试器的作用,向文件或控制台打印代码的调试信息。最普通的做法就是在代码中嵌入许多的打印语句,这些打印语句可以输出到控制台或文件中,比较好的做法...
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
SVM 算法 java版本
SVM 算法 java 实现了调用接口,只要传入数据即可,调用了encog这个开源包的SVM算法,也是官方libsvm的。
利用ORCAD/pspice 仿真分析电路的幅度相位谱
利用ORCAD的pspice仿真分析电路的相位谱1.介绍2.搭建电路原理图3.建立仿真文件,进行交流分析4.仿真、查看输出5.总结 1.介绍 orcad配合pspice一直是电路原理图绘制和仿真的主要工具,pspice工具提供了诸如暂态分析、直流分析、交流分析等多个工具。学校主要教的是multisim,对orcad讲得很少,最进要利用orcad对运放构成的电路的频响、相移特性进行分析,发现资料幅度...
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
从零到一:在K210上实现YOLO模型在线训练与部署全流程
本文详细介绍了在K210芯片上实现YOLO模型在线训练与部署的全流程,涵盖数据采集、模型优化、量化转换及内存管理等关键环节。通过实战案例和代码示例,帮助开发者高效利用K210的超低功耗特性与YOLO模型的实时检测能力,适用于边缘计算和物联网应用场景。
支持向量机SVM通俗理解(python代码实现)
这是第三次来“复习”SVM了,第一次是使用SVM包,调用包并尝试调节参数。听闻了“流弊”SVM的算法。第二次学习理论,看了李航的《统计学习方法》以及网上的博客。看完后感觉,满满的公式。。。记不住啊。第三次,也就是这次通过python代码手动来实现SVM,才让我突然对SVM不有畏惧感。希望这里我能通过简单粗暴的文字,能让读者理解到底什么是SVM,这货的算法思想是怎么样的。看之前千万不要畏惧,说到底就...
比亚迪开放平台接口实战:车身状态监测与智能车联应用开发
本文详细介绍了如何利用比亚迪开放平台的车身状态接口进行智能车联应用开发。通过核心类BYDAutoBodyworkDevice,开发者可以安全获取车辆VIN、车门车窗状态、蓄电池电压、方向盘转角等实时数据,并利用监听器实现状态实时响应。文章提供了从SDK集成、接口调用到典型应用场景(如远程车况检查、车队管理)的完整实战指南,助力开发者快速构建基于比亚迪车辆数据的创新应用。
手把手教你用二茂铁催化剂搞定醇的动力学拆分(保姆级实验避坑指南)
本文详细介绍了使用平面手性二茂铁催化剂进行醇的动力学拆分的全流程,包括催化剂选择与制备、反应体系搭建与条件优化、实时监测与反应淬灭、产物分离与纯化等关键步骤。通过实战案例和避坑指南,帮助实验人员实现>98% ee的拆分效果,特别适合需要高光学纯度二级芳基醇或烯丙醇的研究者。
支持向量机SVM的原理和python实现
支持向量机(SVM)是一类按监督学习方式对数据进行二元分类的广义线性分类器,其决策边界是对学习样本求解的最大边距超平面,可以将问题化为一个求解凸二次规划的问题。与逻辑回归和神经网络相比,支持向量机,在学习复杂的非线性方程时提供了一种更为清晰,更加强大的方式。具体来说就是在线性可分时,在原空间寻找两类样本的最优分类超平面。在线性不可分时,加入松弛变量并通过使用非线性映射将低维度输入空间的样本映射到高维度空间使其变为线性可分,这样就可以在该特征空间中寻找最优分类超平面。
对接金蝶云星空调用即时库存信息查询API(附JAVA实现)
这篇文章教你如何对接金蝶API并且使用JAVA调用金蝶云星空的即时库存查询API
机器学习:支持向量机(SVM)
支持向量机(SVM)是一类按监督学习方式对数据进行二元分类的广义线性分类器,其决策边界是对学习样本求解的最大边距超平面,可以将问题化为一个求解凸二次规划的问题。与逻辑回归和神经网络相比,支持向量机,在学习复杂的非线性方程时提供了一种更为清晰,更加强大的方式。
Windows远程桌面开发之九-虚拟显示器(Windows 10 Indirect Display 虚拟显示器驱动开发)
by fanxiushu 2019-06-24 转载或引用请注明原始作者。 这里与远程桌面关系不是太大,但这个部分是xdisp_virt远程控制程序的实现多显示器桌面扩展的子功能,因此也归为远程桌面开发一类。 这篇文章与之前发布的...
用业务语义织就企业数据之网:SAP Datasphere 的定位、架构与落地场景全解析
SAP Datasphere作为SAP业务数据云的核心组件,通过语义层整合企业内外部数据,支持实时分析与AI应用。其核心功能包括数据集成、语义建模、虚拟化与仓库能力,通过Spaces实现资源隔离,Data Builder和Business Builder分别面向技术和业务建模。该平台与SAP HANA Cloud、SAC等深度集成,支持财务统一分析、供应链可视化等典型场景,并可通过BW bridge实现传统BW资产云化迁移。Datasphere强调开放互联,能与Databricks等生态伙伴协同,为企业提供
《机器学习》 SVM支持向量机 推导、参数解析、可视化实现
支持向量机(Support Vector Machine,SVM)是一种监督学习算法,用于分类和回归问题。在SVM中,我们将每个样本表示为在高维空间中的一个点,并尝试找到一个超平面来将不同类别的样本分开。超平面的选择是基于使两个类别之间的间隔最大化的原则。支持向量机通过最大化支持向量与超平面之间的最小间隔来实现这一点。使用SVM算法对鸢尾花数据集进行二分类,并绘制出决策边界和支持向量的可视化图。首先,通过pandas库读取名为"iris.csv"的数据集文件,存储在变量data中。
第201期 解锁科研效率新高度:Claude 科学技能插件(claude-scientific-skills)深度体验
科研AI助手Claude Scientific Skills开源工具为Claude大模型扩展科学能力,覆盖数据可视化、数学计算、学术格式处理等科研全流程需求。该插件支持LaTeX公式生成、自动化科研图表绘制、学术文档规范校正等功能,让研究人员通过自然语言指令即可完成专业任务。项目开源可定制,支持特定学科需求扩展,目前已托管于GitHub。使用门槛低,只需配置Claude API密钥即可快速启用,帮助科研人员从繁琐技术细节中解放,聚焦核心研究创新。
【机器学习】支持向量机(SVM)
SVM是一种基于统计学习理论的监督学习模型,旨在找到一个最优超平面,将不同类别的数据点分隔开,同时最大化分类间隔(Margin)具体来说:在线性可分时,在原空间寻找两类样本的最优分类超平面。在线性不可分时,加入松弛变量并通过使用非线性映射将低维度输入空间的样本映射到高维度空间使其变为线性可分,这样就可以在该特征空间中寻找最优分类超平面。
数学建模模型总结
这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!
STM32F407中文手册
STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。
PyTorch支持向量机(SVM)详解
支持向量机是一种二分类算法,其目标是找到一个最优的超平面,将不同类别的数据点分隔开。这个超平面被称为决策边界,支持向量机的任务是找到使决策边界最佳的超平面。适用于线性和非线性分类问题。在高维空间中表现出色,适用于处理具有大量特征的数据。通过选择支持向量(距离决策边界最近的数据点)来提高模型的鲁棒性。支持向量机的核心思想是最大化分类间隔(两个类别之间的距离),以确保决策边界尽可能远离数据点。这种距离通常称为间隔(margin)。在下一节中,我们将深入探讨支持向量机的工作原理。
老版QQ原生表情gif动态
这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。
实验二:用python实现SVM支持向量机并对鸢尾花数据集分类
实验二:SVM支持向量机 1. 实验内容: (1)用你熟知的语言(尽量使用python)实现支持向量机的算法,并在给定的数据集上训练。 (2)在测试集上用训练好的支持向量机进行测试,并将预测结果以csv格式保存为一行预测的分类。 (3)简要说明算法原理,记录实验过程的关键步骤,以及实验过程中遇到的问题和解决方法。 2. 实验说明: 数据集为鸢尾花数据集,有三个类别,其中setosa与另外两种之间是线性可分的,因此你需要选择按照setosa和versicolor,或setsosa和virginica,进行训练
SAP B1中文培訓教材_SDK
公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说
3485



被折叠的 条评论
为什么被折叠?



