首页 > 编程语言 >本地测试Spark的svm算法

本地测试Spark的svm算法

时间:2023-09-26 18:13:58浏览次数:54  
标签:1.4 1.5 svm val 1.3 0.2 算法 Spark spark

上一篇介绍了逻辑回归算法,发现分类效果不好,通过这次的svm发现是因为训练数据不行,于是网上找了部分训练数据,发现实际上分类效果还可以。

    训练数据,第一个值是标签,下面的数据是某种花的相关特征。

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|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

    svm代码跟逻辑回归类似,只需替换算法即可。

import org.apache.spark.mllib.classification.SVMWithSGD
import org.apache.spark.mllib.evaluation.BinaryClassificationMetrics
import org.apache.spark.mllib.linalg.Vectors
import org.apache.spark.mllib.optimization.L1Updater
import org.apache.spark.mllib.regression.LabeledPoint
import org.apache.spark.{SparkConf, SparkContext}

object TestSvmAlgorithm {
  def main(args: Array[String]): Unit = {
    val sparkConf = new SparkConf().setAppName("svm").setMaster("local").set("spark.testing.memory", "2147480000")
    val sparkContext = new SparkContext(sparkConf)
    val dataSpark = sparkContext.textFile("file:///D:\\var\\11.txt")
    val trainData = dataSpark.map(line => {
      val tmpLine = line.split("\\|")
      println("数据:" + tmpLine(0).toDouble, Vectors.dense(tmpLine(1).split("\\,").map(_.toDouble)))
      LabeledPoint(tmpLine(0).toDouble, Vectors.dense(tmpLine(1).split("\\,").map(_.toDouble)))
    }).cache()

    val iterationNum = 20
    //    val model = SVMWithSGD.train(trainData, iterationNum)
    val svmModel = new SVMWithSGD()
    svmModel.optimizer.setNumIterations(10).setRegParam(0.1).setUpdater(new L1Updater())
    val model = svmModel.run(trainData)
    val predictData = Vectors.dense(6.6,3,4.4,1.4)
    println(predictData)
    val result = model.predict(predictData)
    println(result)

    val labelAndPredicts = trainData.map(p => {
      val predi = model.predict(p.features)
      println("预测" + (p.label, predi))
      (p.label, predi)
    })

    val mericTest = new BinaryClassificationMetrics(labelAndPredicts)
    val auRoc = mericTest.areaUnderROC()
    println(":" + auRoc)
  }
}

  

 

 

标签:1.4,1.5,svm,val,1.3,0.2,算法,Spark,spark
From: https://www.cnblogs.com/beststrive/p/17730849.html

相关文章

  • 较难理解的字符串查找算法KMP
    时间复杂度O(n)的子串查找算法。经典实例主字符串(s):abcabcabd模式串(t):abcabd比较次数   主字符串   模式串   备注一   abcabcabd   abcabd   红色和绿色表示正在比较的子串,红色表示不同部分,绿色表示相同部分。二   abcabcabd   abcabd  ......
  • 9.26算法
    /** * Definition for singly-linked list. * struct ListNode { *     int val; *     ListNode *next; *     ListNode() : val(0), next(nullptr) {} *     ListNode(int x) : val(x), next(nullptr) {} *     ListN......
  • 【算法】栈与队列
    1栈与队列理论基础队列先进先出,栈先进后出;不允许有遍历行为,不提供迭代器2用栈实现队列题目:请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty):实现 MyQueue 类:voidpush(intx) 将元素x推到队列的末尾intpop() 从队列......
  • 支持向量机(SVM)
    支持向量机(SupportVectorMachine,SVM)是一种用于分类问题的监督算法。主要用于二分类和多分类问题。其基本思想是找到一个超平面,能够将不同类别的样本点尽可能地分开,并使得离超平面最近的样本点尽可能远离超平面,从而实现较好的分类效果。SVM的关键是找到一个最优的超平面,这个超平面......
  • 算法训练day20 LeetCode654
    算法训练day20LeetCode654.617.700.98654.最大二叉树题目654.最大二叉树-力扣(LeetCode)题解代码随想录(programmercarl.com)使用递归返回节点地址,输入父节点地址,数组终止条件是输入地数组为空单层操作:如果输入数组为空,则返回父节点地址否则找到数组中最大......
  • 基于图像形态学处理的目标几何形状检测算法matlab仿真
    1.算法运行效果图预览  2.算法运行软件版本matlab2022a 3.算法理论概述      目标几何形状检测是计算机视觉领域中的重要任务之一,旨在从图像中自动识别和定位不同的几何形状,例如矩形、圆形、三角形等。这些形状检测在许多领域中都具有广泛的应用,如工业自动化......
  • 关于Pohlig-Hellmen算法喵
    \(g^x\equiva(mod\;p)\)当\(g\)为原根时拆分\(p-1=\prod_{i=1}p_i^{ki}\)对于每一个\(p_i\)进行处理将\(x\)转化为\(p\)进制数\(x=c_0+c_1p_i+c_2p_i^2+...+c_{k_i-1}p_i^{k_i-1}\)\(g^{x(\frac{p-1}{p_i})}\equiva^{\frac{p-1}{p_i}}(mod\;p)\)用1展开2中......
  • 【算法】莫队
    一、概念莫队是一种应用于离线询问的优美暴力算法。它是主要思想是让区间的左端点和右端点移动的距离加起来最短。二、实现假设现在有这样一串序列:\(1,1,4,5,1,4\),我们现在要求询问区间内的\(1\)的出现次数。如果我们现在已经统计到了区间\((2,3)\),现在询问\((1,5)\)。现......
  • 文心一言 VS 讯飞星火 VS chatgpt (100)-- 算法导论9.3 6题
    六、用go语言,对一个包含n个元素的集合来说,k分位数是指能把有序集合分成k个等大小集合的第k-1个顺序统计量。给出一个能找出某一集合的k分位数的O(nlgk)时间的算法。文心一言:要找到一个集合的k分位数,可以使用Go语言编写以下算法:packagemainimport("fmt""sort"......
  • [剑指offer] 其他算法[上]篇
    JZ66构建乘积数组/*暴力*/publicclassJZ66_1{publicstaticint[]multiply(int[]A){int[]res=newint[A.length];Arrays.fill(res,1);for(inti=0;i<A.length;i++){for(intj=0;j<A.len......