博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
逻辑回归的数学原理推导及原理代码实现
阅读量:4551 次
发布时间:2019-06-08

本文共 1445 字,大约阅读时间需要 4 分钟。

逻辑回归的数学原理推导及原理代码实现

1、逻辑回归算法是目前应用最为广泛的一种算法,虽然是回归算法,但是它解决的是分类问题,而不是回归问题,它的原理是将样本的特征与样本发生的概率,而概率是一个数字,因此将其称为回归算法。

2、对于逻辑回归因为得到的预测结果是事件的发生概率,因此它的预测值值域为0-1之间,而概率转换函数一般选用的是sigmoid函数,它可以将这个实数范围转换为0-1,并且0是一个分界点,当t>0时,概率p大于0.5,当t<0时,概率p<0.5。

3、基于逻辑回归算法的思路,建立适当的损失函数,其数学原理推导如下所示:

可以通过对比线性回归的损失函数看出来,它们的损失函数几乎是一致的,只是前面的系数差了一倍,另外对于函数的预测计算逻辑回归需要在线性计算的基础上通过sigmoid函数进行转换一下即可。

使用批量计算的方法实现逻辑回归的算法原理代码如下所示:

 

import  numpy as np import matplotlib.pyplot as plt #定义概率转换函数sigmoid函数 def sigmoid(t):     return 1/(1+np.exp(-t)) x=np.linspace(-10,10,100) y=sigmoid(x) plt.figure() plt.plot(x,y,"r",label="Sigmoid") plt.legend(loc=2) plt.show() #根据线性回归的损失函数和逻辑回归的损失函数的相似性与一致性(只有前面系数不同,另外y估计的计算需要进行sigmoid函数转换即可)) def J1(theta,x_b,y):        #损失函数的定义  y_hat=sigmoid(x_b.dot(theta))     return np.sum(y*np.log(y_hat)+(1-y)*np.log(1-y_hat))/len(x_b) def DJ2(theta,x_b,y):       res=np.empty(len(theta))     res[0]=np.sum(sigmoid(x_b.dot(theta))-y)     for i in range(1,len(theta)):         res[i]=np.sum((sigmoid(x_b.dot(theta))-y).dot(x_b[:,i]))     return res*2/len(x_b) def DJ1(theta, x_b, y):   #梯度计算公式     return x_b.T.dot(sigmoid(x_b.dot(theta))-y)/len(y) def gradient_descent1(x_b,y,eta,theta_initial,erro=1e-8, n=1e5):  #采用批量梯度下降法来进行寻找损失函数的最小值     theta=theta_initial     i=0     while i
0.5,dtype="int") print(p) #输出预测的分类结果 print(y_test) print(accuracy_score(p,y_test)) #输出预测的准确度

 

 

转载于:https://www.cnblogs.com/Yanjy-OnlyOne/p/11347223.html

你可能感兴趣的文章
字典树(模型体)
查看>>
盒模型详解
查看>>
bzoj2157 旅游
查看>>
bzoj5016 [Snoi2017]一个简单的询问
查看>>
poj2417 bzoj3239 Discrete Logging(bsgs)
查看>>
UVa10054 - The Necklace(欧拉回路【输出带来的麻烦)
查看>>
string和stringbuffer的区别 集合的作用 ArrayList vector linklist hashmap hashtable collection和collections...
查看>>
6月27日 ajax
查看>>
iOS开发之画图板(贝塞尔曲线)
查看>>
4嵌入式作业io
查看>>
IntelliJ Idea编译报错:javacTask: 源发行版 1.7 需要目标发行版 1.7
查看>>
Cognos中新建SQLserver数据源的步骤
查看>>
HttpClient连接超时及读取超时
查看>>
SQL优化方法
查看>>
SEO必须掌握的高级搜索指令
查看>>
生产者消费者模型
查看>>
ORACLE 字符串超长问题解决方案
查看>>
使用ZooKeeper协调多台Web Server的定时任务处理(方案1)
查看>>
20171116 每周例行报告
查看>>
[C#] SHA1校验函数用法
查看>>