数据挖掘算法-python实现:Logical回归

比如说我们有两类数据,各有50十个点组成,当我门把这些点画出来,会有一条线区分这两组数据,我们拟合出这个曲线(因为很有可能是非线性),就是回归。我们通过大量的数据找出这条线,并拟合出这条线的表达式,再有数据,我们就以这条线为区分来实现分类。下图是我画的一个数据集的两组数据,中间有一条区分两组数据的线。

sigmoid函数

我们看到了上图中两组数据的划分,那么我们怎么来找出两组数据的边界表达式呢,这里用到sigmoid函数。它的形状大致是(如下),公式

把数据集的特征值设为x1,x2,x3......。我们要求出它们的回归系数。只要设z=w1*x1+w2*x2.....用sigmoid函数出理是防止数据从0到1发生跳变,因为目标函数是0到1,我们要把带入x1,x2...多项式数据控制在这之间。

梯度上升算法

梯度上升是指找到函数增长的方向。在具体实现的过程中,不停地迭代运算直到w的值几乎不再变化为止。

代码

数据集在工程中有。

代码下载地址:https://github.com/X-Brain/MachineLearning

导入数据集,并定义sigmoid函数

[python] view plaincopy

def loadDataSet():  
    dataMat = []; labelMat = []  
    fr = open('/Users/hakuri/Desktop/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))  

返回回归系数,对应于每个特征值,for循环实现了递归梯度上升算法。

[python] view plaincopy

def gradAscent(dataMatIn, classLabels):  
    dataMatrix = mat(dataMatIn)             #convert to NumPy matrix 
    labelMat = mat(classLabels).transpose() #convert to NumPy matrix 
    m,n = shape(dataMatrix)  
    alpha = 0.001  
    maxCycles = 500  
    weights = ones((n,1))  
 for k in range(maxCycles):              #heavy on matrix operations 
        h = sigmoid(dataMatrix*weights)     #matrix mult 
        error = (labelMat - h)              #vector subtraction 
        weights = weights + alpha * dataMatrix.transpose()* error #matrix mult 
 return weights  

结果,返回了特征值的回归系数。我们的数据集有两个特征值分别是x1,x2。我们又增设了了x0变量。得到的结果

[[ 4.12414349]

[ 0.48007329]

[-0.6168482 ]]

我们得出x1和x2的关系(设x0=1),0=4.12414349+0.48007329*x1-0.6168482*x2

画出x1与x2的关系图

(本文发布于http://blog.csdn.net/buptgshengod)

原文发布于微信公众号 - 大数据挖掘DT数据分析(datadw)

原文发表时间:2015-06-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏wym

opencv学习笔记 python实现 图像梯度与图像边缘

        图像梯度即求导数,导数能反映出图像变化最大的地方,图像变化最大的地方也就是图像的边缘。

972
来自专栏前端儿

笨小熊

笨小熊的词汇量很小,所以每次做英语选择题的时候都很头疼。但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大!  这种方法的具体描述如下...

452
来自专栏CreateAMind

分类生成统一框架Triple-GAN

https://github.com/zhenxuan00/triple-gan 阅读原文

1392
来自专栏Petrichor的专栏

深度学习: Faster R-CNN 网络

网络结构有两种,一种是将ZFNet(扔掉了尾端的全连接层)拿来用,另一种则是将VGG拿来用(扔掉了尾端的全连接层)。论文中给出的是第一种(绿框内为拿来用的那部分...

1254
来自专栏AIUAI

Caffe2 - (二十六) Detectron 之定制 Python Operators(ops)

4577
来自专栏书山有路勤为径

CNN层和特征可视化VGG-16

CNN由处理视觉信息的层组成。CNN首先接收输入图像,然后将其传递通过这些层。有几种不同类型的层:最常用的层:卷积,池化和完全连接的层。 首先,让我们来看看完...

1271
来自专栏AIUAI

Caffe2 - (三十二) Detectron 之 roi_data - 模型 minibatch blobs

4419
来自专栏AIUAI

目标检测 - Faster R-CNN 中 RPN 原理

3528
来自专栏机器学习算法全栈工程师

Logistic回归实战篇之预测病马死亡率(一)

作 者:崔家华 编 辑:李文臣 Python版本: Python3.x 运行平台 : Windows IDE : Sublime...

2696
来自专栏PPV课数据科学社区

【工具】SAS 常用函数汇总

? 一、数学函数 ABS(x) 求x的绝对值。 MAX(x1,x2,…,xn) 求所有自变量中的最大一个。 MIN(x1,x2,…,xn) 求所有自变量...

2313

扫码关注云+社区