失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 【机器学习笔记四】分类算法 - 逻辑回归

【机器学习笔记四】分类算法 - 逻辑回归

时间:2021-01-04 06:02:18

相关推荐

【机器学习笔记四】分类算法 - 逻辑回归

参考资料

【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.LogisticRegressionWithSGDimport org.apache.spark.mllib.linalg.Vectorsimport org.apache.spark.mllib.regression.LabeledPointimport org.apache.spark.{SparkContext, SparkConf}/*-* 逻辑回归* Fredric */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)}}

如果觉得《【机器学习笔记四】分类算法 - 逻辑回归》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。