【机器学习笔记四】分类算法 - 逻辑回归
参考资料
【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.logistic import 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.0 val 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属于分类0 println("for target:" + test + " propalitity for 1 is : " + res1 + " propalitity for 0 is : " + res0) } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)