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

相关文章

Linux lvm实例之如何创建一个专用于MySQL数据存储的LVM卷组

《Linuxlvm实例之如何创建一个专用于MySQL数据存储的LVM卷组》:本文主要介绍使用Linux创建一个专用于MySQL数据存储的LVM卷组的实例,具有很好的参考价值,希望对大家有所帮助,... 目录在Centos 7上创建卷China编程组并配置mysql数据目录1. 检查现有磁盘2. 创建物理卷3. 创

Java List排序实例代码详解

《JavaList排序实例代码详解》:本文主要介绍JavaList排序的相关资料,Java排序方法包括自然排序、自定义排序、Lambda简化及多条件排序,实现灵活且代码简洁,文中通过代码介绍的... 目录一、自然排序二、自定义排序规则三、使用 Lambda 表达式简化 Comparator四、多条件排序五、

Java实例化对象的​7种方式详解

《Java实例化对象的​7种方式详解》在Java中,实例化对象的方式有多种,具体取决于场景需求和设计模式,本文整理了7种常用的方法,文中的示例代码讲解详细,有需要的可以了解下... 目录1. ​new 关键字(直接构造)​2. ​反射(Reflection)​​3. ​克隆(Clone)​​4. ​反序列化

Python解决雅努斯问题实例方案详解

《Python解决雅努斯问题实例方案详解》:本文主要介绍Python解决雅努斯问题实例方案,雅努斯问题是指AI生成的3D对象在不同视角下出现不一致性的问题,即从不同角度看物体时,物体的形状会出现不... 目录一、雅努斯简介二、雅努斯问题三、示例代码四、解决方案五、完整解决方案一、雅努斯简介雅努斯(Janu

Python开发文字版随机事件游戏的项目实例

《Python开发文字版随机事件游戏的项目实例》随机事件游戏是一种通过生成不可预测的事件来增强游戏体验的类型,在这篇博文中,我们将使用Python开发一款文字版随机事件游戏,通过这个项目,读者不仅能够... 目录项目概述2.1 游戏概念2.2 游戏特色2.3 目标玩家群体技术选择与环境准备3.1 开发环境3

Vue3组件中getCurrentInstance()获取App实例,但是返回null的解决方案

《Vue3组件中getCurrentInstance()获取App实例,但是返回null的解决方案》:本文主要介绍Vue3组件中getCurrentInstance()获取App实例,但是返回nu... 目录vue3组件中getCurrentInstajavascriptnce()获取App实例,但是返回n

SQL表间关联查询实例详解

《SQL表间关联查询实例详解》本文主要讲解SQL语句中常用的表间关联查询方式,包括:左连接(leftjoin)、右连接(rightjoin)、全连接(fulljoin)、内连接(innerjoin)、... 目录简介样例准备左外连接右外连接全外连接内连接交叉连接自然连接简介本文主要讲解SQL语句中常用的表

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.编辑实例的