SVM实例

2024-09-03 21:18
文章标签 实例 svm

本文主要是介绍SVM实例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

数据源:R自带的iris数据(R的e1071包没装下来,so用Scala写了;鸢尾花(iris)是数据挖掘常用到的一个数据集,包含150种鸢尾花的信息,每50种取自三个鸢尾花种之一(setosa,versicolour或virginica)。每个花的特征用下面的5种属性描述萼片长度(Sepal.Length)、萼片宽度(Sepal.Width)、花瓣长度(Petal.Length)、花瓣宽度(Petal.Width)、类(Species)。);

spark mlib代码:

 def svmTest(sc:SparkContext,sqlContext:SQLContext): Unit ={import org.apache.spark.mllib.classification.SVMWithSGDimport org.apache.spark.mllib.regression.LabeledPointimport sqlContext.implicits._import breeze.linalg._// Load and parse the data file
    val data = sc.textFile("file:///D://cs3.txt")val trainData = data.map { line =>val parts = line.split(",")val y=parts(0).toDoubleval vd0=Vectors.dense(parts(1).toDouble,parts(2).toDouble,parts(3).toDouble,parts(4).toDouble)val v1=Vectors.dense(-2.0919917512589015,7.089178225784549,5.567376955110936,0.8621925858604499)
//      println(parts(1).toDouble*(-2.0919917512589015)+parts(2).toDouble*(7.089178225784549)+parts(3).toDouble*(5.567376955110936)+parts(4).toDouble*(0.8621925858604499) )
      LabeledPoint(y,vd0)}val testData = sc.textFile("file:///D://cs4.txt").map { line =>val parts = line.split(",")val y=parts(0).toDoubleval vd0=Vectors.dense(parts(1).toDouble,parts(2).toDouble,parts(3).toDouble,parts(4).toDouble)LabeledPoint(y,vd0)}

    // Run training algorithm to build the model
    val numIterations = 20
    val model = SVMWithSGD.train(trainData, numIterations)// Evaluate model on training examples and compute training error
    val trainLabelPreds = trainData.map { point =>val prediction = model.predict(point.features)(point.label, prediction)}println(model.toString())trainLabelPreds.toDF("label","prediction").showval trainErr = trainLabelPreds.filter(r => r._1 != r._2).count.toDouble / trainData.countprintln("Training Error = " + trainErr)// Compute raw scores on the test set.
    val testPredictLabels = testData.map { point =>
//      println("feature="+point.features)
      val score = model.predict(point.features)(score, point.label)}
//    testPredictLabels.collect.foreach(println)
    val testErr = testPredictLabels.filter(r => r._1 != r._2).count.toDouble / testData.countprintln("test Error = " + testErr)}

运行结果(错误率0,准确率100%):


其实可以加个打印看下wx+b的值(然后发现wx<0的为label=0,大于0的为label=1,b似乎没有?松弛变量的常数C也没见到?)      

println(parts(1).toDouble*(0.4672035760731836)+parts(2).toDouble*(1.6471825085309382)+parts(3).toDouble*(-2.317158274255798)+parts(4).toDouble*(-0.978114663957106) )

附:

traindata 训练集cs3.txt(格式:label标签[只能是0/1],特征1......特征4):

1,5.1,3.5,1.4,0.2
1,4.9,3,1.4,0.2
1,4.7,3.2,1.3,0.2
1,4.6,3.1,1.5,0.2
1,5,3.6,1.4,0.2
1,5.4,3.9,1.7,0.4
1,4.6,3.4,1.4,0.3
1,5,3.4,1.5,0.2
1,4.4,2.9,1.4,0.2
1,4.9,3.1,1.5,0.1
1,5.4,3.7,1.5,0.2
1,4.8,3.4,1.6,0.2
1,4.8,3,1.4,0.1
1,4.3,3,1.1,0.1
1,5.8,4,1.2,0.2
1,5.7,4.4,1.5,0.4
1,5.4,3.9,1.3,0.4
1,5.1,3.5,1.4,0.3
1,5.7,3.8,1.7,0.3
1,5.1,3.8,1.5,0.3
1,5.4,3.4,1.7,0.2
1,5.1,3.7,1.5,0.4
1,4.6,3.6,1,0.2
1,5.1,3.3,1.7,0.5
1,4.8,3.4,1.9,0.2
0,7,3.2,4.7,1.4
0,6.4,3.2,4.5,1.5
0,6.9,3.1,4.9,1.5
0,5.5,2.3,4,1.3
0,6.5,2.8,4.6,1.5
0,5.7,2.8,4.5,1.3
0,6.3,3.3,4.7,1.6
0,4.9,2.4,3.3,1
0,6.6,2.9,4.6,1.3
0,5.2,2.7,3.9,1.4
0,5,2,3.5,1
0,5.9,3,4.2,1.5
0,6,2.2,4,1
0,6.1,2.9,4.7,1.4
0,5.6,2.9,3.6,1.3
0,6.7,3.1,4.4,1.4
0,5.6,3,4.5,1.5
0,5.8,2.7,4.1,1
0,6.2,2.2,4.5,1.5
0,5.6,2.5,3.9,1.1
0,5.9,3.2,4.8,1.8
0,6.1,2.8,4,1.3
0,6.3,2.5,4.9,1.5
0,6.1,2.8,4.7,1.2

0,6.4,2.9,4.3,1.3


testdata 测试集(cs4.txt):

0,6.6,3,4.4,1.4
0,6.8,2.8,4.8,1.4
0,6.7,3,5,1.7
0,6,2.9,4.5,1.5
0,5.7,2.6,3.5,1
0,5.5,2.4,3.8,1.1
0,5.5,2.4,3.7,1
0,5.8,2.7,3.9,1.2
0,6,2.7,5.1,1.6
0,5.4,3,4.5,1.5
0,6,3.4,4.5,1.6
0,6.7,3.1,4.7,1.5
0,6.3,2.3,4.4,1.3
0,5.6,3,4.1,1.3
0,5.5,2.5,4,1.3
0,5.5,2.6,4.4,1.2
0,6.1,3,4.6,1.4
0,5.8,2.6,4,1.2
0,5,2.3,3.3,1
0,5.6,2.7,4.2,1.3
0,5.7,3,4.2,1.2
0,5.7,2.9,4.2,1.3
0,6.2,2.9,4.3,1.3
0,5.1,2.5,3,1.1
0,5.7,2.8,4.1,1.3
1,5,3,1.6,0.2
1,5,3.4,1.6,0.4
1,5.2,3.5,1.5,0.2
1,5.2,3.4,1.4,0.2
1,4.7,3.2,1.6,0.2
1,4.8,3.1,1.6,0.2
1,5.4,3.4,1.5,0.4
1,5.2,4.1,1.5,0.1
1,5.5,4.2,1.4,0.2
1,4.9,3.1,1.5,0.2
1,5,3.2,1.2,0.2
1,5.5,3.5,1.3,0.2
1,4.9,3.6,1.4,0.1
1,4.4,3,1.3,0.2
1,5.1,3.4,1.5,0.2
1,5,3.5,1.3,0.3
1,4.5,2.3,1.3,0.3
1,4.4,3.2,1.3,0.2
1,5,3.5,1.6,0.6
1,5.1,3.8,1.9,0.4
1,4.8,3,1.4,0.3
1,5.1,3.8,1.6,0.2
1,4.6,3.2,1.4,0.2
1,5.3,3.7,1.5,0.2
1,5,3.3,1.4,0.2

这篇关于SVM实例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1134069

相关文章

C# WinForms存储过程操作数据库的实例讲解

《C#WinForms存储过程操作数据库的实例讲解》:本文主要介绍C#WinForms存储过程操作数据库的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、存储过程基础二、C# 调用流程1. 数据库连接配置2. 执行存储过程(增删改)3. 查询数据三、事务处

springboot security验证码的登录实例

《springbootsecurity验证码的登录实例》:本文主要介绍springbootsecurity验证码的登录实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录前言代码示例引入依赖定义验证码生成器定义获取验证码及认证接口测试获取验证码登录总结前言在spring

tomcat多实例部署的项目实践

《tomcat多实例部署的项目实践》Tomcat多实例是指在一台设备上运行多个Tomcat服务,这些Tomcat相互独立,本文主要介绍了tomcat多实例部署的项目实践,具有一定的参考价值,感兴趣的可... 目录1.创建项目目录,测试文China编程件2js.创建实例的安装目录3.准备实例的配置文件4.编辑实例的

python+opencv处理颜色之将目标颜色转换实例代码

《python+opencv处理颜色之将目标颜色转换实例代码》OpenCV是一个的跨平台计算机视觉库,可以运行在Linux、Windows和MacOS操作系统上,:本文主要介绍python+ope... 目录下面是代码+ 效果 + 解释转HSV: 关于颜色总是要转HSV的掩膜再标注总结 目标:将红色的部分滤

Spring 中使用反射创建 Bean 实例的几种方式

《Spring中使用反射创建Bean实例的几种方式》文章介绍了在Spring框架中如何使用反射来创建Bean实例,包括使用Class.newInstance()、Constructor.newI... 目录1. 使用 Class.newInstance() (仅限无参构造函数):2. 使用 Construc

MyBatis-Plus中Service接口的lambdaUpdate用法及实例分析

《MyBatis-Plus中Service接口的lambdaUpdate用法及实例分析》本文将详细讲解MyBatis-Plus中的lambdaUpdate用法,并提供丰富的案例来帮助读者更好地理解和应... 目录深入探索MyBATis-Plus中Service接口的lambdaUpdate用法及示例案例背景

MyBatis-Plus中静态工具Db的多种用法及实例分析

《MyBatis-Plus中静态工具Db的多种用法及实例分析》本文将详细讲解MyBatis-Plus中静态工具Db的各种用法,并结合具体案例进行演示和说明,具有很好的参考价值,希望对大家有所帮助,如有... 目录MyBATis-Plus中静态工具Db的多种用法及实例案例背景使用静态工具Db进行数据库操作插入

Spring中@Lazy注解的使用技巧与实例解析

《Spring中@Lazy注解的使用技巧与实例解析》@Lazy注解在Spring框架中用于延迟Bean的初始化,优化应用启动性能,它不仅适用于@Bean和@Component,还可以用于注入点,通过将... 目录一、@Lazy注解的作用(一)延迟Bean的初始化(二)与@Autowired结合使用二、实例解

前端原生js实现拖拽排课效果实例

《前端原生js实现拖拽排课效果实例》:本文主要介绍如何实现一个简单的课程表拖拽功能,通过HTML、CSS和JavaScript的配合,我们实现了课程项的拖拽、放置和显示功能,文中通过实例代码介绍的... 目录1. 效果展示2. 效果分析2.1 关键点2.2 实现方法3. 代码实现3.1 html部分3.2

mysqld_multi在Linux服务器上运行多个MySQL实例

《mysqld_multi在Linux服务器上运行多个MySQL实例》在Linux系统上使用mysqld_multi来启动和管理多个MySQL实例是一种常见的做法,这种方式允许你在同一台机器上运行多个... 目录1. 安装mysql2. 配置文件示例配置文件3. 创建数据目录4. 启动和管理实例启动所有实例