【机器学习算法-python实现】逻辑回归的实现(LogicalRegression)

(转载请注明出处:http://blog.csdn.net/buptgshengod)

1.背景知识

      在刚刚结束的天猫大数据s1比赛中,逻辑回归是大家都普遍使用且效果不错的一种算法。

 

(1)回归     

     

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

   (2)sigmoid函数

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

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

 (3)梯度上升算法

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

2.代码

   数据集在工程中有。

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

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循环实现了递归梯度上升算法。

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的关系图

3.代码

 

下载地址(Logical Regression)

作者微信公众号:凡人机器学习

长期分享机器学习实战相关信息,感谢关注!

时间: 2024-08-04 05:02:31

【机器学习算法-python实现】逻辑回归的实现(LogicalRegression)的相关文章

机器学习算法的python实现之逻辑回归的实现(LogicalRegression)

1.背景知识 在刚刚结束的天猫大数据s1比赛中,逻辑回归是大家都普遍使用且效果不错的一种算法. (1)回归 先来说说什么是回归,比如说我们有两类数据,各有50十个点组成,当我门把这些点画出来,会有一条线区分这两组数据,我们拟合出这个曲线(因为很有可能是非线性),就是回归.我们通过大量的数据找出这条线,并拟合出这条线的表达式,再有数据,我们就以这条线为区分来实现分类.下图是我画的一个数据集的两组数据,中间有一条区分两组数据的线. 本栏目更多精彩内容:http://www.bianceng.cnht

【机器学习算法-python实现】KNN-k近邻算法的实现(附源码)

(转载请注明出处:http://blog.csdn.net/buptgshengod) 1.背景     今后博主会每周定时更新机器学习算法及其python的简单实现.今天学习的算法是KNN近邻算法.KNN算法是一个监督学习分类器类别的算法.           什么是监督学习,什么又是无监督学习呢.监督学习就是我们知道目标向量的情况下所使用的算法,无监督学习就是当我们不知道具体的目标变量的情况下所使用的.而监督学习又根据目标变量的类别(离散或连续)分为分类器算法和回归算法.         

【机器学习算法-python实现】决策树-Decision tree(1) 信息熵划分数据集

(转载请注明出处:http://blog.csdn.net/buptgshengod) 1.背景           决策书算法是一种逼近离散数值的分类算法,思路比较简单,而且准确率较高.国际权威的学术组织,数据挖掘国际会议ICDM (the IEEE International Conference on Data Mining)在2006年12月评选出了数据挖掘领域的十大经典算法中,C4.5算法排名第一.C4.5算法是机器学习算法中的一种分类决策树算法,其核心算法是ID3算法.      

【机器学习算法-python实现】扫黄神器-朴素贝叶斯分类器的实现

(转载请注明出处:http://blog.csdn.net/buptgshengod) 1.背景      以前我在外面公司实习的时候,一个大神跟我说过,学计算机就是要一个一个贝叶斯公式的套用来套用去.嗯,现在终于用到了.朴素贝叶斯分类器据说是好多扫黄软件使用的算法,贝叶斯公式也比较简单,大学做概率题经常会用到.核心思想就是找出特征值对结果影响概率最大的项.公式如下:        什么是朴素贝叶斯,就是特征值相互独立互不影响的情况.贝叶斯可以有很多变形,这里先搞一个简单的,以后遇到复杂的再写.

【机器学习算法-python实现】采样算法的简单实现

1.背景     采样算法是机器学习中比较常用,也比较容易实现的(出去分层采样).常用的采样算法有以下几种(来自百度知道):     一.单纯随机抽样(simple random sampling) 将调查总体全部观察单位编号,再用抽签法或随机数字表随机抽取部分观察单位组成样本. 优点:操作简单,均数.率及相应的标准误计算简单. 缺点:总体较大时,难以一一编号. 二.系统抽样(systematic sampling) 又称机械抽样.等距抽样,即先将总体的观察单位按某一顺序号分成n个部分,再从第一

【机器学习算法-python实现】矩阵去噪以及归一化

1.背景    项目需要,打算用python实现矩阵的去噪和归一化.用numpy这些数学库没有找到很理想的函数,所以一怒之下自己用标准库写了一个去噪和归一化的算法,效率有点低,不过还能用,大家如果有需要可以拿去.  (1)去噪算法:根据概率论的知识,如果一组数据服从正态分布,我们设均值是n,方差是v,那么对于每个离散数值有百分之九十二以上的概率会在(n-3*v,n+3*v)的区间内.所以这里的去噪功能主要是实现如果超出了区间就将这个值标记为区间所能容忍最大值.  (2)归一化:找到输入队列最大值

【机器学习算法-python实现】Adaboost的实现(1)-单层决策树(decision stump)

(转载请注明出处:http://blog.csdn.net/buptgshengod) 1.背景      上一节学习支持向量机,感觉公式都太难理解了,弄得我有点头大.不过这一章的Adaboost线比较起来就容易得多.Adaboost是用元算法的思想进行分类的.什么事元算法的思想呢?就是根据数据集的不同的特征在决定结果时所占的比重来划分数据集.就是要对每个特征值都构建决策树,并且赋予他们不同的权值,最后集合起来比较.       比如说我们可以通过是否有胡子和身高的高度这两个特征来来决定一个人的

【机器学习算法-python实现】PCA 主成分分析、降维

1.背景         PCA(Principal Component Analysis),PAC的作用主要是降低数据集的维度,然后挑选出主要的特征.         PCA的主要思想是移动坐标轴,找到方差最大的方向上的特征值,什么叫方差最大的方向的特征值呢.就像下图中的曲线B,一样,它的覆盖范围最广. 基本步骤:(1)首先计算数据集的协方差矩阵                    (2)计算协方差矩阵的特征值和特征向量                    (3)保留最重要的n个特征 wh

【机器学习算法-python实现】svm支持向量机(2)—简化版SMO算法

(转载请注明出处:http://blog.csdn.net/buptgshengod) 1.背景知识      通过上一节我们通过引入拉格朗日乗子得到支持向量机变形公式.详细变法可以参考这位大神的博客--地址  参照拉格朗日公式F(x1,x2,...λ)=f(x1,x2,...)-λg(x1,x2...).我们把上面的式子变型为:  约束条件就变成了: 下面就根据最小优化算法SMO(Sequential Minimal Optimization).找出距离分隔面最近的点,也就是支持向量集.如下图