Python机器学习:Logistic回归原理与代码实现详解

沿途有光
沿途有光
发布时间:2026-10-12 | 3人浏览过
原创

本文深入解析Logistic回归原理,从线性分类到概率映射,详解sigmoid函数与目标函数的构建。通过梯度上升法推导权重参数W,并结合Python代码实现数据读取、模型训练及可视化,帮助读者掌握这一经典分类算法的核心逻辑与实战应用。

前言

Logistic回归涉及高等数学、线性代数、概率论及优化问题。本文旨在以通俗易懂的方式,减少复杂公式推导,侧重形象化案例讲解,帮助读者理解Logistic回归核心。若对数学公式感到不适,请谨慎阅读。

Logistic回归原理与推导

尽管名称包含“回归”,Logistic回归本质上是一种分类算法。如图所示,数据分为两类(红点和绿点)。通过一条直线(w0 * x0 + w1 * x1+w2 * x2)进行划分,当新样本(x1,x2)代入直线函数后,若函数值大于0,则判定为绿色样本(正样本);否则为红色样本(负样本)。

将模型推广至高维空间,我们需要确定一个超平面(二维为直线,三维为平面,n维为n-1维超平面)来分割样本数据。这实际上就是求解该超平面的W参数,因其形式类似于回归分析,故命名为Logistic回归。

sigmoid函数

直接使用z值并不直观,我们需要将其转换到[0,1]区间,该转换后的z值代表新样本属于正样本的概率。我们采用sigmoid函数完成此转换,公式如下。观察sigmoid函数图可知,当z值大于0时,σ值大于0.5;当z值小于0时,σ值小于0.5。利用sigmoid函数,Logistic回归本质上成为基于条件概率的判别模型。

目标函数

我们的核心任务是求解W。如何求解?观察下图,第二条直线分割效果最佳,即让样本点距离直线越远越好,这样对新样本的划分更具鲁棒性。如何用公式表示并计算这一目标函数?

我们需要使目标函数值最大化,从而求出参数θ。

梯度上升法

在介绍梯度上升法前,回顾中学知识:求函数在x等于何值时取最大值。

解:求f(x)的导数:2x,令其为0,求得x=0时,取最大值为0。但在函数复杂时,直接求导计算极值困难,此时需使用梯度上升法。通过迭代,一步步逼近极值,公式如下,我们顺着导数方向(梯度)逐步逼近。

利用梯度算法计算该函数的x值:

def f(x_old):
         return -2*x_old
def cal():
     x_old  = 0
     x_new = -6
     eps = 0.01
     presision = 0.00001
     while abs(x_new-x_old)>presision:
        x_old=x_new
        x_new=x_old+eps*f(x_old)
     return x_new
-0.0004892181072978443

Logistic回归实践

数据情况

读取数据并绘图显示:

def loadDataSet():
    dataMat = [];labelMat = []
    fr = open('数据/Logistic/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

训练算法

利用梯度迭代公式,计算W:

def sigmoid(inX):
    return 1.0/(1 + np.exp(-inX))
def gradAscent(dataMatIn, labelMatIn):
    dataMatrix = np.mat(dataMatIn)
    labelMat = np.mat(labelMatIn).transpose()
    m,n = np.shape(dataMatrix)
    alpha = 0.001
    maxCycles = 500
    weights = np.ones((n,1))
    for k in range(maxCycles):
        h = sigmoid(dataMatrix * weights)
        error = labelMat - h
        weights = weights + alpha * dataMatrix.transpose() * error
    return weights

通过计算的weights绘图,查看分类结果

算法优缺点

  • 优点:易于理解和计算
  • 缺点:精度不高

以上就是python机器学习Logistic回归原理推导的详细内容,更多关于python机器学习Logistic回归的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表