用python做逻辑回归_python实现逻辑回归

该博客介绍了逻辑回归如何用于解决二分类问题,通过Sigmoid函数将连续预测值转换为概率。文章详细阐述了极大似然估计的概念,并展示了如何通过梯度下降法优化对数似然函数来更新参数。最后,提供了实现逻辑回归的Python代码片段,包括迭代更新权重的函数。整个过程突出了逻辑回归在实际分类任务中的应用和参数调整的重要性。
摘要由CSDN通过智能技术生成

逻辑回归常用于分类问题,最简单诸如二分类问题:是否是垃圾邮件?比赛是赢是输?

对于线性回归问题, z = w0*x0+w1*x1+w2*x2+...

一般的通过最小二乘法学习参数w来预测 给定一个x值时z的大小,其值域在(-∞,+∞),而对于分类问题,显然预测值是离散的,通过引入S函数先将值域y缩小到(0,1),这样子,

当y>=0.5, 可分为正例

当y<0.5,可分为负例。这样预测问题就转化为分类问题了。

那么预测函数就写成

794637-20160707170811046-727835219.gif

其中Z=ω.T x , ω是参数列向量,x是样本向量

那么样本xj为 正例的概率可以表示成

794637-20160707171348077-1839013978.gif

importnumpy as npdefpredict(x,w):return 1.0/1.0+np.e**(-x.dot(w)))

如果每个样本都分类正确,概率都为1,这当然是我们所最希望的,极大似然估计就是这样一个想法:假设样本间独立,找出一组参数使得当前样本出现的可能性最大,即将每个样本的概率相乘,使得概率最大。基于这个想法,我们就通过求极大似然函数的最大值来求解参数w

794637-20160708183809452-1883613075.png

很明显,上面这个表达式不适合优化方法的求解,我们给他加一个对数,可以知道并不会改变极大值性质,这是由于对数函数的凸性。 那么就有对数似然函数

794637-20160708183927499-2043239228.png

我们可以取对偶问题,求损失函数最小值

794637-20160708184159952-61220204.png

采用梯度下降法,对其求导

794637-20160708184241717-1068866302.png

这样子就得到w的更新公式: (g即为h)

794637-20160707173746155-1272891449.gif

α是步长,也称为学习速率,α旁边的因子就是由损失函数计算出来梯度值。

defiter_w(x, y, a, w):

prediction=predict(x,w)g= (prediction - y) *x

w= w+ a * g * (1.0 /y.size)return w

迭代,max_epochs表示迭代数

while counter

counter+= 1

for i inrange(len(Y)):

w= update(X[i,:], Y[i], a, w)

在实际学习中需要测试 不同的步长对学习结果的影响,进而选取比较合适的步长

from sklearn.cross_validation import KFold

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值