溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

spark mllib分類之如何支持向量機(jī)

發(fā)布時間:2021-12-16 14:40:24 來源:億速云 閱讀:194 作者:小新 欄目:云計算

小編給大家分享一下 spark mllib分類之如何支持向量機(jī),希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

胃癌轉(zhuǎn)移數(shù)據(jù)說明

腎細(xì)胞癌轉(zhuǎn)移情況(有轉(zhuǎn)移 y=1,無轉(zhuǎn)移 y=2)
x1:確診時患者年齡(歲)
x2:腎細(xì)胞癌血管內(nèi)皮生長因子(VEGF),其陽性表述由低到高共3個等級
x3:腎細(xì)胞癌組織內(nèi)微血管數(shù)(MVC)
x4:腎癌細(xì)胞核組織學(xué)分級,由低到高共4級
x5:腎細(xì)胞癌分期,由低到高共4級

y x1 x2 x3 x4 x50 59 2 43.4 2 1

運行代碼如下

package spark.logisticRegression

import org.apache.spark.mllib.classification.{SVMWithSGD}
import org.apache.spark.mllib.evaluation.MulticlassMetrics
import org.apache.spark.mllib.linalg.Vectors
import org.apache.spark.mllib.regression.LabeledPoint
import org.apache.spark.mllib.util.MLUtils
import org.apache.spark.{SparkConf, SparkContext}

/**
  *  MLLib分類,邏輯回歸,是分類,不是回歸
  *  支持向量機(jī)分析胃癌轉(zhuǎn)移判斷
  * Created by eric on 16-7-17.
  */
object SVMTest {
  val conf = new SparkConf()                                     //創(chuàng)建環(huán)境變量
    .setMaster("local")                                             //設(shè)置本地化處理
    .setAppName("LogisticRegression4")                              //設(shè)定名稱
  val sc = new SparkContext(conf)

  def main(args: Array[String]) {
    val data = MLUtils.loadLibSVMFile(sc, "./src/main/spark/logisticRegression/wa.txt")	//讀取數(shù)據(jù)文件,一定注意文本格式
    val splits = data.randomSplit(Array(0.7, 0.3), seed = 11L)			//對數(shù)據(jù)集切分
    val parsedData = splits(0)									//分割訓(xùn)練數(shù)據(jù)
    val parseTtest = splits(1)									//分割測試數(shù)據(jù)
    val model = SVMWithSGD.train(parsedData,50)		//訓(xùn)練模型

    val predictionAndLabels = parseTtest.map { 					//計算測試值
      case LabeledPoint(label, features) =>						//計算測試值
        val prediction = model.predict(features)						//計算測試值
        (prediction, label)										//存儲測試和預(yù)測值
    }

    val metrics = new MulticlassMetrics(predictionAndLabels)	//創(chuàng)建驗證類
    val precision = metrics.precision								//計算驗證值
    println("Precision = " + precision)							//打印驗證值

    val patient = Vectors.dense(Array(70,3,180.0,4,3))	//計算患者可能性
    if(patient == 1) println("患者的胃癌有幾率轉(zhuǎn)移。")	//做出判斷
    else println("患者的胃癌沒有幾率轉(zhuǎn)移。")		//做出判斷
    //Precision = 0.5555555555555556
    //患者的胃癌沒有幾率轉(zhuǎn)移。

  }
}

wa.txt

0 1:59 2:2 3:43.4 4:2 5:1
0 1:36 2:1 3:57.2 4:1 5:1
0 1:61 2:2 3:190 4:2 5:1
1 1:58 2:3 3:128 4:4 5:3
1 1:55 2:3 3:80 4:3 5:4
0 1:61 2:1 3:94 4:4 5:2
0 1:38 2:1 3:76 4:1 5:1
0 1:42 2:1 3:240 4:3 5:2
0 1:50 2:1 3:74 4:1 5:1
0 1:58 2:2 3:68.6 4:2 5:2
0 1:68 2:3 3:132.8 4:4 5:2
1 1:25 2:2 3:94.6 4:4 5:3
0 1:52 2:1 3:56 4:1 5:1
0 1:31 2:1 3:47.8 4:2 5:1
1 1:36 2:3 3:31.6 4:3 5:1
0 1:42 2:1 3:66.2 4:2 5:1
1 1:14 2:3 3:138.6 4:3 5:3
0 1:32 2:1 3:114 4:2 5:3
0 1:35 2:1 3:40.2 4:2 5:1
1 1:70 2:3 3:177.2 4:4 5:3
1 1:65 2:2 3:51.6 4:4 5:4
0 1:45 2:2 3:124 4:2 5:4
1 1:68 2:3 3:127.2 4:3 5:3
0 1:31 2:2 3:124.8 4:2 5:3

結(jié)果如圖

spark mllib分類之如何支持向量機(jī)

看完了這篇文章,相信你對“ spark mllib分類之如何支持向量機(jī)”有了一定的了解,如果想了解更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI