溫馨提示×

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

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

spark mllib 分類預(yù)測之如何實(shí)現(xiàn)邏輯回歸

發(fā)布時(shí)間:2021-12-16 14:38:56 來源:億速云 閱讀:224 作者:小新 欄目:云計(jì)算

這篇文章主要為大家展示了“spark mllib 分類預(yù)測之如何實(shí)現(xiàn)邏輯回歸 ”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“spark mllib 分類預(yù)測之如何實(shí)現(xiàn)邏輯回歸 ”這篇文章吧。

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

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

y x1 x2 x3 x4 x50 59 2 43.4 2 1

運(yùn)行代碼如下

package spark.logisticRegression

import org.apache.spark.mllib.classification.LogisticRegressionWithSGD
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分類,邏輯回歸,是分類,不是回歸
  *  胃癌轉(zhuǎn)移判斷
  * Created by eric on 16-7-17.
  */
object LogisticRegression4 {
  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)	//對(duì)數(shù)據(jù)集切分
    val parsedData = splits(0)		//分割訓(xùn)練數(shù)據(jù)
    val parseTtest = splits(1)		//分割測試數(shù)據(jù)
    val model = LogisticRegressionWithSGD.train(parsedData,50)	//訓(xùn)練模型

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

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

    val patient = Vectors.dense(Array(70,3,180.0,4,3))	//計(jì)算患者可能性
    val prediction = model.predict(patient)

    if(prediction == 1) println("患者的胃癌有幾率轉(zhuǎn)移。")//做出判斷
    else println("患者的胃癌沒有幾率轉(zhuǎn)移。")	//做出判斷
    //Precision = 0.3333333333333333
    //患者的胃癌沒有幾率轉(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 分類預(yù)測之如何實(shí)現(xiàn)邏輯回歸

以上是“spark mllib 分類預(yù)測之如何實(shí)現(xiàn)邏輯回歸 ”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

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

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

AI