数据挖掘算法(三)--logistic回归
来源:互联网 发布:火山软件开发平台 编辑:程序博客网 时间:2024/05/22 08:02
数据挖掘算法学习笔记汇总
数据挖掘算法(一)–K近邻算法 (KNN)
数据挖掘算法(二)–决策树
数据挖掘算法(三)–logistic回归
在介绍logistic回归之前先复习几个基础知识点,有助于后面的理解。
基本数学知识点
1、对数似然函数
若总体X为离散型,其概率分布列为
又设
2、logistic函数
logistic函数或logistic曲线是常见的“S”形(sigmoid curve ,S形曲线),方程式如下:
其中
e 自然对数x0 S形中点的x值L 曲线的 最大值k 曲线的陡度
上图是L=1,k=1,x0=0 时的图像
这里主要说明下这个函数的导数的性质,后面推导的时候会用到。f(x)=11+e−x=ex1+ex ddxf(x)=ex(1+ex)−exex(1+ex)2 ddxf(x)=ex(1+ex)2=f(x)(1−f(x))
logistic回归数学推导
先看一个简单的例子:
我们将平面上的点分为两类,中间的红色线条为边界。
预测类别
此例子中
对更多维的数据进行分类时,线性边界的情况,边界形式如下:
根据logistic回归可知预测函数为:
合起来写则可以得到下式:
取似然函数得到下式:
求自然对数得到对数似然函数:
最大似然估计就是要求得使
求利用梯度上升法求解
下面先求出
因为
所以我们利用前面讲的logistic函数的导数性质可以将
这样就得到了更新的过程
python代码实现
本文代码运行环境:
python:3.5.1
pandas:0.19.2
其他环境可能有细微差别
# -*coding:utf-8*-import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport math# 获取数据data = pd.read_table("./logistic.txt", sep="\t", header=None)dataMat = data.iloc[:, 0:-1]labelMat = data.iloc[:, -1]def sigmoid(dataSeries): return 1.0 / (1 + np.exp(-dataSeries))# 梯度上升算法def gradAscent(dataMatrix, LabelsVector): n = dataMatrix.shape[1] alpha = 0.001 maxCycles = 500 thetas = np.ones((n, 1)) for k in range(maxCycles): # heavy on matrix operations h = sigmoid(dataMatrix * thetas) # matrix mult error = LabelsVector.T - h # vector subtraction thetas = thetas + alpha * dataMatrix.T * error # matrix mult return thetasdef plotBestFit(thetas, data): """ :param thetas: type DataFrame , the thetas :param data: type DtaFrame , all the data :return: """ X1 = data[data[3] == 0] X2 = data[data[3] == 1] fig = plt.figure() ax = fig.add_subplot(111) ax.scatter(X1[1], X1[2], s=30, c='red', marker='s') ax.scatter(X2[1], X2[2], s=30, c='green') x = np.arange(-3.0, 3.0, 0.1) y = (-thetas.iloc[0, 0] - thetas.iloc[1, 0] * x) / thetas.iloc[2, 0] ax.plot(x, y) plt.xlabel('X1') plt.ylabel('X2') plt.show()thetas = gradAscent(np.mat(dataMat), np.mat(labelMat))plotBestFit(pd.DataFrame(thetas), data)
画出的图如下所示:
代码和数据下载地址:链接:http://pan.baidu.com/s/1hs6CKL2 密码:308l
参考资料
1、https://en.wikipedia.org/wiki/Maximum_likelihood_estimation
2、https://en.wikipedia.org/wiki/Logistic_function
欢迎python爱好者加入:学习交流群 667279387
阅读全文
0 0
- 数据挖掘算法(三)--logistic回归
- 数据挖掘算法-Logistic回归
- 数据挖掘回顾四:分类算法之 logistic回归 算法
- 数据挖掘-Logistic回归建模
- 数据挖掘算法(四)--线性回归
- 【机器学习】机器学习(三):局部加权线性回归算法、Logistic回归算法
- 逻辑回归算法--Logistic回归
- Logistic回归算法(梯度上升)
- 机器学习算法疗程(logistic 回归)
- Logistic回归算法
- 分类算法:Logistic回归
- Logistic回归算法实现
- Logistic回归算法
- 数据挖掘算法:线性回归深度剖析
- [Matlab][数据挖掘算法][线性回归]
- 数据挖掘笔记-分类-回归算法-最小二乘法
- 数据挖掘算法逻辑回归-R实现
- 写程序学ML:Logistic回归算法原理及实现(三)
- selenium浏览器驱动下载
- 原码,反码,补码的理解
- Equals 和 == 的区别
- JAVA文件工具类之——文件删除(所有空目录、当前目录中所有目录文件、目录下所有文件)
- Java I/O操作
- 数据挖掘算法(三)--logistic回归
- html之动态绑定带参数的函数
- SGISTL源码探究-配接器
- 2017 icpc 南宁赛区 L.The Heaviest Non-decreasing Subsequence Problem(LIS)
- MT 199 Free Format Message自由格式电文
- ios基于libcurl发送带附件邮件
- 排序(六):归并排序
- 基础练习 BASIC-11 十六进制转十进制
- HDU 1556 Color the ball 分块