Logistic回归算法(梯度上升)
2016-03-12 16:28
676 查看
Logistic回归算法是一个最优化算法,回归就是拟合的过程。Logistic回归的思想就是利用现有数据对分类边界建立线性回归公式,今天我们用这个算法来解决二值分类问题。
这里介绍一个名叫Sigmoid的公式,这个函数是一种阶跃函数,(详细含义可以去问度娘)利用这个函数我们可以预测二值分类问题,为了使用Logistic回归分类器,我们需要在每一个特征值上乘以一个回归系数,然后把所有的值加起来,代入到Sigmoid函数中当它的值大于0.5的数据被分到1类,小于0.5的被分到0类。这里最佳回归系数可以有多种方法确定,这里先介绍一种利用梯度上升优化算法求解回归系数。testSet.txt下载(提取码:0dc4)
from numpy import *
def loadDataSet():
dataMat = []; labelMat = []
fr = open('testSet.txt')
for line in fr.readlines():
lineArr = line.strip().split()
dataMat.append([1.0, float(lineArr[0]), float(lineArr[1])])
labelMat.append(int(lineArr[2]))
return dataMat,labelMat
def sigmoid(inX):
return 1.0/(1+exp(-inX))
def gradAscent(dataMatIn, classLabels):
dataMatrix = mat(dataMatIn)
labelMat = mat(classLabels).transpose()
m,n = shape(dataMatrix)
alpha = 0.001
maxCycles = 500
weights = ones((n,1))
for k in range(maxCycles):
h = sigmoid(dataMatrix*weights)
error = (labelMat - h)
weights = weights + alpha * dataMatrix.transpose()* error
return weights第一个函数还是初始化数据,dataMat是属性数据集,在dataMat的第一列都设置为1主要是为了方便计算。labelMat存储的是标签数据。第二个函数即是Sigmoid函数公式。第三个函数是最主要的函数,用于计算最佳回归系数。首先将存储特征值的列表转换成矩阵形式。以便进行计算,将标签数据转换成列向量。alpha是向目标移动的步长,maxCycles是迭代次数,我们可以改变这两个值来确定最佳的回归系数。for循环里的前两句是计算真是类别与预测类别的差值,接下来按照差值的方向调整回归系数。
这里介绍一个名叫Sigmoid的公式,这个函数是一种阶跃函数,(详细含义可以去问度娘)利用这个函数我们可以预测二值分类问题,为了使用Logistic回归分类器,我们需要在每一个特征值上乘以一个回归系数,然后把所有的值加起来,代入到Sigmoid函数中当它的值大于0.5的数据被分到1类,小于0.5的被分到0类。这里最佳回归系数可以有多种方法确定,这里先介绍一种利用梯度上升优化算法求解回归系数。testSet.txt下载(提取码:0dc4)
from numpy import *
def loadDataSet():
dataMat = []; labelMat = []
fr = open('testSet.txt')
for line in fr.readlines():
lineArr = line.strip().split()
dataMat.append([1.0, float(lineArr[0]), float(lineArr[1])])
labelMat.append(int(lineArr[2]))
return dataMat,labelMat
def sigmoid(inX):
return 1.0/(1+exp(-inX))
def gradAscent(dataMatIn, classLabels):
dataMatrix = mat(dataMatIn)
labelMat = mat(classLabels).transpose()
m,n = shape(dataMatrix)
alpha = 0.001
maxCycles = 500
weights = ones((n,1))
for k in range(maxCycles):
h = sigmoid(dataMatrix*weights)
error = (labelMat - h)
weights = weights + alpha * dataMatrix.transpose()* error
return weights第一个函数还是初始化数据,dataMat是属性数据集,在dataMat的第一列都设置为1主要是为了方便计算。labelMat存储的是标签数据。第二个函数即是Sigmoid函数公式。第三个函数是最主要的函数,用于计算最佳回归系数。首先将存储特征值的列表转换成矩阵形式。以便进行计算,将标签数据转换成列向量。alpha是向目标移动的步长,maxCycles是迭代次数,我们可以改变这两个值来确定最佳的回归系数。for循环里的前两句是计算真是类别与预测类别的差值,接下来按照差值的方向调整回归系数。
相关文章推荐
- Python动态类型的学习---引用的理解
- Python3写爬虫(四)多线程实现数据爬取
- 垃圾邮件过滤器 python简单实现
- 下载并遍历 names.txt 文件,输出长度最长的回文人名。
- install and upgrade scrapy
- Scrapy的架构介绍
- Centos6 编译安装Python
- 使用Python生成Excel格式的图片
- 让Python文件也可以当bat文件运行
- [Python]推算数独
- Python中zip()函数用法举例
- Python中map()函数浅析
- Python将excel导入到mysql中
- Python在CAM软件Genesis2000中的应用
- 使用Shiboken为C++和Qt库创建Python绑定
- FREEBASIC 编译可被python调用的dll函数示例
- Python 七步捉虫法