逻辑回归模型(Logistic Regression)及Python实现

article/2025/8/24 8:39:15

https://www.cnblogs.com/sumai/p/5221067.html

 

1.模型

  在分类问题中,比如判断邮件是否为垃圾邮件,判断肿瘤是否为阳性,目标变量是离散的,只有两种取值,通常会编码为0和1。假设我们有一个特征X,画出散点图,结果如下所示。这时候如果我们用线性回归去拟合一条直线:hθ(X) = θ0+θ1X,若Y≥0.5则判断为1,否则为0。这样我们也可以构建出一个模型去进行分类,但是会存在很多的缺点,比如稳健性差、准确率低。而逻辑回归对于这样的问题会更加合适。

     

  逻辑回归假设函数如下,它对θTX作了一个函数g变换,映射至0到1的范围之内,而函数g称为sigmoid function或者logistic function,函数图像如下图所示。当我们输入特征,得到的hθ(x)其实是这个样本属于1这个分类的概率值。也就是说,逻辑回归是用来得到样本属于某个分类的概率。

       

      

 

 

2.评价

   回想起之前线性回归中所用到的损失函数:

   

 如果在逻辑回归中也运用这种损失函数,得到的函数J是一个非凸函数,存在多个局部最小值,很难进行求解,因此需要换一个cost函数。重新定义个cost函数如下:

   

   当实际样本属于1类别时,如果预测概率也为1,那么损失为0,预测正确。相反,如果预测为0,那么损失将是无穷大。这样构造的损失函数是合理的,并且它还是一个凸函数,十分方便求得参数θ,使得损失函数J达到最小。

   

 

3.优化

    我们已经定义好了损失函数J(θ),接下来的任务就是求出参数θ。我们的目标很明确,就是找到一组θ,使得我们的损失函数J(θ)最小。最常用的求解方法有两种:批量梯度下降法(batch gradient descent), 牛顿迭代方法((Newton's method)。两种方法都是通过迭代求得的数值解,但是牛顿迭代方法的收敛速度更加快。

   批量梯度下降法: 

   牛顿迭代方法:  (H为海瑟矩阵)

 

4.python代码实现

 

# -*- coding: utf-8 -*-
"""
Created on Wed Feb 24 11:04:11 2016@author: SumaiWong
"""import numpy as np
import pandas as pd
from numpy import dot
from numpy.linalg import inviris = pd.read_csv('D:\iris.csv')
dummy = pd.get_dummies(iris['Species']) # 对Species生成哑变量
iris = pd.concat([iris, dummy], axis =1 )
iris = iris.iloc[0:100, :] # 截取前一百行样本# 构建Logistic Regression , 对Species是否为setosa进行分类 setosa ~ Sepal.Length
# Y = g(BX) = 1/(1+exp(-BX))
def logit(x):return 1./(1+np.exp(-x))temp = pd.DataFrame(iris.iloc[:, 0])
temp['x0'] = 1.
X = temp.iloc[:,[1,0]]
Y = iris['setosa'].reshape(len(iris), 1) #整理出X矩阵 和 Y矩阵# 批量梯度下降法
m,n = X.shape #矩阵大小
alpha = 0.0065 #设定学习速率
theta_g = np.zeros((n,1)) #初始化参数
maxCycles = 3000 #迭代次数
J = pd.Series(np.arange(maxCycles, dtype = float)) #损失函数for i in range(maxCycles):h = logit(dot(X, theta_g)) #估计值  J[i] = -(1/100.)*np.sum(Y*np.log(h)+(1-Y)*np.log(1-h)) #计算损失函数值      error = h - Y #误差grad = dot(X.T, error) #梯度theta_g -= alpha * grad
print theta_g
print J.plot()   # 牛顿方法
theta_n = np.zeros((n,1)) #初始化参数
maxCycles = 10 #迭代次数
C = pd.Series(np.arange(maxCycles, dtype = float)) #损失函数
for i in range(maxCycles):h = logit(dot(X, theta_n)) #估计值 C[i] = -(1/100.)*np.sum(Y*np.log(h)+(1-Y)*np.log(1-h)) #计算损失函数值      error = h - Y #误差grad = dot(X.T, error) #梯度A =  h*(1-h)* np.eye(len(X)) H = np.mat(X.T)* A * np.mat(X) #海瑟矩阵, H = X`AXtheta_n -= inv(H)*grad
print theta_n
print C.plot()

复制代码


http://chatgpt.dhexx.cn/article/3O9SirRJ.shtml

相关文章

逻辑回归详解

逻辑回归通常用于解决分类问题,比如:客户是否该买某个商品,借款人是否会违约等。实际上,“分类”是逻辑回归的目的和结果,中间过程依旧是“回归”,因为通过逻辑回归模型,我们得到的是0-1之间的连…

什么是逻辑回归?

深度学习(Deep Learning)是机器学习(Machine Learning)的一大分支,它试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 逻辑回归(Logistic Regression,也译作…

逻辑回归模型调参

文章目录 一、逻辑回归(Logistic Regression)二、样本不均衡问题处理1 、过采样方法(一)、随机过采样法(二)、SMOTE算法 2 、欠采样方法(一)、随机欠采样 三、网格搜索快速调优损失函数(对数似然损失) 四、模型评价ROC曲线 一、逻…

逻辑回归(模型的建立与求解)

跟我一起机器学习系列文章将首发于公众号:月来客栈,欢迎文末扫码关注! 0 前言 在上一讲中,笔者通过五篇文章来详细的介绍了线性回归模型,那么本讲开始继续介绍下一个经典的机器学习算法逻辑回归(Logistic…

逻辑回归模型

本文代码及数据集来自《Python大数据分析与机器学习商业案例实战》 逻辑回归模型本质就是将线性回归模型通过Sigmoid函数进行了一个非线性转换,得到一个介于0~1之间的概率值。因此,逻辑回归模型的本质是预测概率,而不是直接预测具…

解读Logistic回归模型

一、logistic回归的由来 logistic回归在百度百科是这样定义的: logistic回归又称logistic回归分析,是一种广义的线性回归分析模型,常用于数据挖掘,疾病自动诊断,经济预测等领域。 由此可见 logistic回归是从线性回归模…

logistic回归模型

logistic回归模型 前言logistic回归模型logit变换几率logistic模型二项逻辑回归模型损失函数 logistic回归模型的应用logistic回归模型的评价 前言 从这一期开始,我们准备介绍一系列机器学习算法模型,主要包括logistic回归,决策树&#xff0…

逻辑回归模型logistic原理详解

Hello! 小A又来咯! 之前我们详细的介绍了使用线性回归模型来进行回归学习,那如果要做分类任务该怎么办呢? 考虑二分类任务,其输出值y属于集合[0,1]。而线性回归模型zw^T*xb是实值。为了进行分类任务,我们需要将实值z转…

Python实现逻辑回归模型教程

理解多个预测变量与连续响应变量之间关系通常适用线性回归,但当响应变量为类别变量时需要适用逻辑回归。 逻辑回归是尝试从数据集中把W观测记录分为不同类别的分类算法。 常见的分类回归场景有: 通过信用分和账户余额预测客户贷款是否违约通过篮球比赛中…

【机器学习笔记4】逻辑回归模型

目录 什么是逻辑回归? Sigmoid函数 决策边界 逻辑回归的损失函数 为什么平方误差模型不可行? 对数损失函数 单个样例损失: 整体损失函数 梯度下降算法 补充:F1-score评价指标 F1-Score简介 相关概念 F-Score 示例及…

逻辑回归模型详解(Logistic Regression)

目录 广义线性模型 极大似然法 逻辑回归的假设函数 逻辑回归的损失函数 交叉熵损失函数 为什么LR模型损失函数使用交叉熵不用均方差 交叉熵损失函数的数学原理 交叉熵损失函数的直观理解 交叉熵简介 对数损失函数和交叉熵损失函数 逻辑回归优缺点 其他 逻辑回归与…

机器学习算法(一):逻辑回归模型(Logistic Regression, LR)

目录 1 LR 1.1 直观表述 1.2 决策边界(Decision Boundary) 2. 权值求解 2.1 代价函数(似然函数) 2.1.1 为什么损失函数不用最小二乘?即逻辑斯蒂回归损失函数为什么使用交叉熵而不是MSE? 2.1.2 代价函…

详解逻辑回归

目录 1. 逻辑回归模型介绍1.1 Logistic分布1.2 Logistic回归1.3 代价函数1.4 求解1.5 正则化1.5.1 L1正则化1.5.2 L2正则化1.5.3 L1正则化和L2正则化区别 2 与其他模型的对比2.1 与线性回归2.2 与 SVM2.3 与朴素贝叶斯 3. 模型细节3.1 为什么适合离散特征3.2 为什么不用平方误差…

逻辑回归模型(Logistic Regression)

逻辑回归符合伯努利分布。伯努利分布就是我们常见的0-1分布,即它的随机变量只取0或者1,各自的频率分别取1−p和p,当x0或者x1时,我们数学定义为: 所以在常规的逻辑回归模型中,只有两个类别,0或者…

逻辑回归(Logistic Regression)详解

逻辑回归也称作logistic回归分析,是一种广义的线性回归分析模型,属于机器学习中的监督学习。其推导过程与计算方式类似于回归的过程,但实际上主要是用来解决二分类问题(也可以解决多分类问题)。通过给定的n组数据&…

逻辑回归模型及案例(Python)

1 简介 逻辑回归也被称为广义线性回归模型,它与线性回归模型的形式基本上相同,最大的区别就在于它们的因变量不同,如果是连续的,就是多重线性回归;如果是二项分布,就是Logistic回归。 Logistic回归虽然名…

PyCharm如何修改配置大内存

现在的电脑标配都8G以上内存了,不过很多IDE仍然是以低配电脑为标准,去配置软件占用硬件的程度 因为内存会直接影响到软件的性能,可以通过手动去设置大内存 一、首先启动虚拟机 进入pychram的bin目录,可以看到2个以vmoptions为后…

jvm最大内存限制多少?

(1)堆内存分配 JVM初始分配的内存由-Xms指定,默认是物理内存的1/64;JVM最大分配的内存由-Xmx指定,默认是物理内存的1/4。默认空余堆内存小 于40%时,JVM就会增大堆直到-Xmx的最大限制;空余堆内存大于70%时,…

大内存时代虚拟内存现在还有用吗

但凡用过Windows的人,大多听说过“虚拟内存”这四个字。尤其在当年物理内存还普遍偏低的年代,虚拟内存几乎成了每一个玩电脑的人都曾摆弄过 的东东。不过随着硬件技术不断发展,内存价格逐步白菜化,我们的电脑再也不像当年那样算计…

笔记本电脑查看几个卡槽,支持最大内存,内存条参数详细步骤,开启双通道条件

1:一个命令,轻松查看电脑支持多大内存 使用 Win R组合快捷键,打开 运行 操作框,然后在打开后面 输入命令 cmd ,并点击下方的“确定”进入命令操作窗口,如下图所示。 然后在打开的CMD命令窗口输入命令&am…