【机器学习笔记四】分类算法 - 逻辑回归
生活随笔
收集整理的這篇文章主要介紹了
【机器学习笔记四】分类算法 - 逻辑回归
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
參考資料
【1】??? Spark MLlib 機器學習實踐
【2】??? 統計學習方法
?
1、Logistic分布
?設X是連續隨機變量,X服從Logistic分布是指X具有下列分布函數和密度函數
,。其中u為位置參數,γ為形狀參數。如下圖:
分布函數以(u,1/2)為中心對稱,滿足:,其中形狀參數γ越小,中心部分增加越快。
?
2、Logistic回歸模型
?
二項logistic回歸模型是一種分類模型,由條件概率P(Y|X)表示,這里隨機變量X取實數,而Y取0或者1。定義:
和
Logistic回歸比較兩個條件概率,將x歸為較大條件概率的那一類。本質上它是將一個線性函數wx + b的輸出轉換為了條件概率。
多項logistic回歸模型是二項模型的擴展,支持多分類問題,模型如下:
?
3、邏輯回歸Spark Mlib例子
?
package com.fredric.spark.logisticimport org.apache.spark.mllib.classification.LogisticRegressionWithSGD import org.apache.spark.mllib.linalg.Vectors import org.apache.spark.mllib.regression.LabeledPoint import org.apache.spark.{SparkContext, SparkConf}/*-* 邏輯回歸* Fredric 2017*/ object logistic {def main(args:Array[String]): Unit ={val conf = new SparkConf().setMaster("local").setAppName("logistic")val sc = new SparkContext(conf)val Array = new Array[LabeledPoint](10)//構造訓練數據,虛擬一個以5為值的分類//針對一元二項邏輯斯特回歸分類for(i <- 0 to 9){if(i >= 5){Array(i) = new LabeledPoint(1,Vectors.dense(i))}else{Array(i) = new LabeledPoint(0,Vectors.dense(i))}}val data = sc.makeRDD(Array);val model = LogisticRegressionWithSGD.train(data, 50)//model.weights輸出[0.20670127500478114] println(model.weights)var test = -2//當輸入為-1時,返回概率為0.0//當輸入為11時,返回概率為1.0val result = model.predict(Vectors.dense(test))println(result)//驗證該方式//計算P(Y=1|X),測算輸入x返回1的條件概率 val res1 = Math.exp(model.weights(0)*test)/(1 + Math.exp(model.weights(0)*test))//計算P(Y=0|X),測算輸入x返回0的條件概率val res0 = 1/(1 + Math.exp(model.weights(0) * test))//輸出:for target:-2 propalitity for 1 is : 0.3980965348017618 propalitity for 0 is : 0.6019034651982381//根據兩個條件概率的比較可知-2屬于分類0println("for target:" + test + " propalitity for 1 is : " + res1 + " propalitity for 0 is : " + res0)} }?
轉載于:https://www.cnblogs.com/Fredric-2013/p/8496070.html
總結
以上是生活随笔為你收集整理的【机器学习笔记四】分类算法 - 逻辑回归的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android p 权限控制,andro
- 下一篇: 面向未来编程