logistic 回归
来源:互联网 发布:java初中高级工程师 编辑:程序博客网 时间:2024/06/11 09:13
Logist回归 “对数几率回归” ;实际是一种分类学习方法
优点 1、直接对分类可能性进行建模,无需事先假设数据分布,避免了假设分布不准确所带来的问题;
2、不仅预测出类别,而且可以得到近似概率预测,对许多需要利用概率辅助决策的任务很有用;
3、对率函数是任意阶可导凸函数
1、模型
对数几率函数:一种sigmoid 函数
(1)
转换成广义线性模型 变成
; (2)
进一步
(3)
若将y视为样本x作为正例的可能性,1-y是其反例的可能性,两者比值,就是“几率” (odds)。反映了x作为正例的相对可能性。
通过数据计算出对数几率,然后带入到(1) 中,得到 y的值,就是当前分类器对y的分类结果。通过一系列的优化过程最终得到一个好的分类器,
即好的权重和偏置,能够把正例和反例尽可能多的分开。
2、策略
损失函数,目标是求最小值:
(4)
需要找到最佳参数即找到最佳权重和偏置使得f(x)的取值与y最接近。
3、算法
优化器最基本的是梯度下降算法 。这里讲的很清楚了
http://www.ishowcode.com/ai/ml/linear-regression-gradient-descent/
**实验部分 参照《机器学习实战》第五章 Logistic 回归部分进行。
1、数据集使用 西瓜数据集3.0a ----西瓜数据集汇总 http://whatbeg.com/2016/04/22/xiguadataset.html
17个样本,8个正例,9个反例。共两列属性,密度、含糖率;
2.导入数据集
def loadDataSet(): dataMat=[] labelMat=[] fr = open('dataset/watermelon.txt') for line in fr.readlines(): lineArr = line.strip().split(" ") if(len(lineArr)<3): continue dataMat.append([1.0,float(lineArr[0]),float(lineArr[1])])#第一项是偏置b labelMat.append(int(lineArr[2])) return dataMat,labelMatdef sigmoid(inX): return 1.0/(1+exp(-inX))
这里粗心大意遇到了几个坑
1) readlines() 写成了 readline() 这两个函数的功能差距还是很大的。
readline() 读一行,readlines()依次读取每一行
2)在文件的最后多加了回车,然后readlines()依然会把空行读入作为一行。但是这一行没有数据,所以在切分数据之后,按数组下标获取数据时,会报错:List index out of range. 所以在切分数据后加入判断,若当前行没有切分出足够长度的list 则continue.
3)看到数据在文件中是浮点型,想当然的认为,读入的数据也是浮点型。其实读入之后,切分到list中,都是string型。所以在append的时候一定要将获取到的数据转为float.
未完。。。
- Logistic回归
- Logistic回归
- logistic回归
- Logistic 回归
- Logistic 回归
- logistic回归
- Logistic回归
- Logistic回归
- Logistic回归
- Logistic回归
- logistic回归
- Logistic回归
- logistic回归
- Logistic 回归
- logistic回归
- Logistic回归
- logistic回归
- Logistic回归
- MySQL数据库触发器(trigger)的创建
- 软件测试系列之四 单元测试(Junit)
- 记录自己学到东西-2017-08-26
- 拦截器和过滤器的区别
- JqueryUI表格编辑-与后端交互问题
- logistic 回归
- 微信小程序--ajax服务器交互及页面渲染
- Io流——将对象序列化和反序列化
- Apache Security-4 SSL(Security Socket Layer)
- JavaScript模板
- ArcGIS中ObjectID,FID和OID字段有什么区别?
- 编译、链接与库
- 你不努力,有什么资格抱怨(转)(文/蒋文伟)
- C语言数据结构——如何排序