机器学习:逻辑回归python实现
来源:互联网 发布:爱尔兰留学知乎 编辑:程序博客网 时间:2024/06/06 08:42
机器学习:逻辑回归python实现
逻辑回归和PLA都可以用来分类,他们之间最大的区别就是,前者对分错的数据进行惩罚的时候是有一定的比率的,也就是说,当前数据分错的越来厉害,那就对当前的数据极大惩罚,要是错的程度小,那就对他的惩罚稍微的小点儿。但是后者PLA就是当前数据如果分对了就不惩罚,分错了就惩罚,没有强度之分。看看下图谈谈损失函数的区别:
上面的图显示了不同的损失函数:绿色是最小二乘的,他的问题就是在0到1那儿的区间是下降的,因为0右边的就是分对了,那么error当然就是要变小啊。但是1之后却又上升了....蓝色的就是RELU,多用与神经网络,好牛逼吧,速度快,性能好,一直下降。红色的是交叉信息熵,也不错,他的下降速度也很快。黑色的就是PLA中的,但是他不好优化啊,我想变小上面那条线的同时下面那条先也会下降...
下面是python实现笔记:
<span style="font-size:18px;">from numpy import *//数据集加载def loadDataSet(): dataMat=[];labelMat=[] data=open('testSet.txt') for line in data.readlines(): templine=line.strip().split()//大部分情况需要把数据feature转化为float,标签是int类型 dataMat.append([1,float(templine[0]),float(templine[1])]) labelMat.append(int(templine[2])) return dataMat,labelMatdef sigmod_func(value): return 1.0/(1+exp(-value))//梯度上升和下降本质上都一样,一个是对w加上一个微分,一个减去微分//只不过注意的是error是预测减去实际还是相反def grandAscend(data,label): dataMat=mat(data)//m*n labelMat=mat(label).transpose()//读进来的lable是一行,当然要转置 m,n=shape(dataMat) alpha=0.001//学习率 maxEpoch=500 weights=ones((n,1))//初始化权重,高斯会更好n*1,n是特征的个数 for epoch in xrange(maxEpoch): #print "dataMat",dataMat #print "weights",weights//m*n X n*1==m*1 resultPrediction=sigmod_func(dataMat*weights)//其实这里同时计算出m个数据的预测值,然后和实际标签做差,并不用循环实现 error=labelMat-resultPrediction//这里才是关键 weights=weights+alpha*dataMat.transpose()*error return weights</span>
考虑到速度太慢,因为每次的迭代都要对全部的数据进行训练,数据太多的时候会出问题,就差生了随机梯度下降,他在实际中用得最多。也就是说,根据大数定律,100个数的均值和10个数的均值都差不多,均值本来就是单个数据的整体表示,那就只用一条数据进行训练也是可以到啊。为甚要有均值呢?去看看他的损失函数你就知道了,大部分损失函数都和我们谈到的VC维相关。
def SGD(data,label): dataMat=mat(data) labelMat=mat(label) m,n=shape(dataMat) alpha=0.001 weigths=ones(n) for i in xrange(m)://<span style="font-family: Arial, Helvetica, sans-serif;">有多少数据,就迭代多少次</span> print shape(dataMat[i]) print shape(weigths)
//这里并没有使用举证的乘法,仅仅是使用了一条数据进行每次调整。有多少数据,就迭代多少次 prediction=sigmod_func(sum(dataMat[i]*weigths)) error=labelMat[i]-prediction weigths= weigths+alpha*error*dataMat[i] return weigths
结果如下图所示;一个梯度下降,一个是随机的:看到其实结果并不怎么滴。两者相差并不大。所以还是下面的方便,速度快。
另外注意python中list,array,mat的稍微区别:
0 0
- 机器学习 Python实现逻辑回归
- 机器学习:逻辑回归python实现
- 机器学习之逻辑回归python实现
- 【机器学习算法-python实现】逻辑回归的实现(LogicalRegression)
- 【机器学习算法-python实现】逻辑回归的实现(LogicalRegression)
- 【机器学习算法-python实现】逻辑回归的实现(LogicalRegression)
- 二,机器学习算法之逻辑回归(python实现)
- 机器学习——Python实现逻辑回归
- 机器学习:逻辑回归与Python代码实现
- 用Python实现机器学习算法:逻辑回归
- Python机器学习实战之逻辑回归
- 机器学习-python编写Logistic逻辑回归
- 【机器学习】逻辑回归原理及其实现
- 【机器学习】逻辑回归原理及其实现
- 机器学习-softmax逻辑回归源码实现
- 【机器学习】逻辑回归(matlab实现)
- 机器学习-逻辑回归
- 机器学习:逻辑回归
- Android实战技巧之五十:App的系统签名
- 解决需要安装不能信任的软件包
- 圆形button设置点击区域为圆形
- 项目5-个人所得税
- 分享功能
- 机器学习:逻辑回归python实现
- 7种单例模式
- 另一扇门:献给平凡却不普通的人们
- SGI STL (7) :: why stl containers have their own iterators?
- Ubuntu 14.04 LTS SSH远程连接的问题
- iOS-html调起APP并传参
- PWM脉宽调制
- 项目6-本月有几天
- How to Build Distributed Concurrent System(思维草稿)