python 实现logistic regression逻辑回归算法

news2024/9/25 13:25:36

logistic regression逻辑回归算法介绍

逻辑回归(Logistic Regression)是一种广泛使用的分类算法,特别适用于二分类问题。尽管它的名字中包含“回归”二字,但实际上它是一种分类算法,因为它预测的是概率,并将这些概率转换为二分类(通常是0和1)的类别。

基本概念

逻辑回归的核心在于使用逻辑函数(通常是sigmoid函数)将线性回归模型的输出(即一个连续的实数值)映射到(0,1)区间,这个区间可以被解释为属于某一类别的概率。

Sigmoid函数

Sigmoid函数的公式为:
σ ( z ) = 1 1 + e − z σ(z)=\frac{1}{{1+e}^{−z}} σ(z)=1+ez1

其中,𝑧是线性回归模型的输出(即 z = θ T x z=θ^Tx z=θTx,其中 𝜃 是模型的参数,𝑥 是输入特征)。Sigmoid函数的输出范围在0到1之间,因此可以解释为属于正类的概率。

逻辑回归的决策边界

逻辑回归的决策边界是由参数 𝜃 决定的。具体来说,当 σ ( θ T x ) = 0.5 σ(θ^Tx)=0.5 σ(θTx)=0.5 时,对应的 𝑥值的集合构成了决策边界。这是因为,在Sigmoid函数中,输出为0.5的点正好位于两类概率相等的点上,即决策边界。

损失函数

逻辑回归使用对数损失(log loss)作为损失函数,它衡量了模型预测的概率分布与真实标签之间的差异。对数损失函数的公式为:

L ( θ ) = − 1 m ∑ i = 1 m [ y ( i ) l o g ( h θ ( x ( i ) ) ) + ( 1 − y ( i ) ) l o g ( 1 − h θ ( x ( i ) ) ) ] L(θ)=−\frac{1}{m}\sum_{i=1}^{m}[y^{(i)}log(h_θ(x^{(i)}))+(1−y^{(i)})log(1−h_θ(x^{(i)}))] L(θ)=m1i=1m[y(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i)))]

其中,𝑚 是样本数量, y ( i ) y^{(i)} y(i) 是第 𝑖个样本的真实标签, h θ ( x ( i ) ) h_θ(x^{(i)}) hθ(x(i)) 是模型预测的第 𝑖个样本属于正类的概率。

参数估计

逻辑回归使用梯度下降(或其他优化算法)来最小化损失函数,从而估计出模型的参数 𝜃。梯度下降通过迭代地更新参数来减小损失函数的值,直到满足停止条件为止。

应用场景

逻辑回归由于其简单性和高效性,被广泛应用于各种领域,如信用评分、垃圾邮件检测、疾病预测等。然而,当特征之间的关系非常复杂时,逻辑回归的性能可能会受到限制,这时可能需要考虑更复杂的模型,如神经网络或决策树。

logistic regression逻辑回归算法python实现样例

逻辑回归是一种用于二分类问题的机器学习算法,可用于预测一个样本属于两个类别中的哪一个。下面是用Python实现逻辑回归的代码:

import numpy as np

class LogisticRegression:
    def __init__(self, learning_rate=0.01, num_iterations=1000):
        self.learning_rate = learning_rate
        self.num_iterations = num_iterations
        self.weights = None
        self.bias = None
    
    def fit(self, X, y):
        num_samples, num_features = X.shape
        
        # 初始化权重和偏置
        self.weights = np.zeros(num_features)
        self.bias = 0
        
        # 梯度下降算法
        for _ in range(self.num_iterations):
            linear_model = np.dot(X, self.weights) + self.bias
            y_pred = self._sigmoid(linear_model)
            
            # 更新权重和偏置
            dw = (1 / num_samples) * np.dot(X.T, (y_pred - y))
            db = (1 / num_samples) * np.sum(y_pred - y)
            
            self.weights -= self.learning_rate * dw
            self.bias -= self.learning_rate * db
    
    def predict(self, X):
        linear_model = np.dot(X, self.weights) + self.bias
        y_pred = self._sigmoid(linear_model)
        y_pred_class = [1 if i > 0.5 else 0 for i in y_pred]
        return y_pred_class
    
    def _sigmoid(self, x):
        return 1 / (1 + np.exp(-x))

使用逻辑回归模型进行分类的步骤如下:

  1. 创建一个LogisticRegression对象,并设置学习率和迭代次数。
  2. 使用fit方法拟合模型,传入训练数据和标签。
  3. 使用predict方法对新的数据进行预测,返回预测结果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2163649.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

批量发送邮件:性能优化与错误处理深度解析

目录 一、批量发送邮件的基础概述 1.1 批量发送邮件的定义 1.2 邮件发送流程 二、性能优化策略 2.1 发送速率控制 2.2 队列管理 2.3 动态IP池管理 2.4 智能调度 三、错误处理机制 3.1 暂时性发送错误处理 3.2 永久性发送错误处理 3.3 邮件反馈收集与分析 四、案例…

[C语言]--自定义类型: 结构体

目录 前言 一、结构体类型的声明 1.结构的声明 2.结构体变量的创建和初始化 3.结构的特殊声明 4.结构的自引用 二、结构体内存对齐 1.对齐规则 2.为什么存在内存对齐? 三、结构体传参 四、结构体实现位段 1.什么是位段 2.位段的内存分配 3.位段的跨平台问题 4.…

【JAVA开源】基于Vue和SpringBoot的影城管理系统

本文项目编号 T 045 ,文末自助获取源码 \color{red}{T045,文末自助获取源码} T045,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 用…

通信工程高级职称评审条件详细解读

通信工程只有正高和副高级别的职称,中级通信工程的职称是需要自己参加考试的,并不是评审获得,这个大家需要注意一下,先要考取中级通信工程师之后才能评审副高和正高级通信工程的职称。 下面跟甘建二一起来看看通信专业职称评审条件…

C++ 9.24

作业一&#xff1a;将昨天的My_string类中的所有能重载的运算符全部进行重载、[] 、>、、<、、>、<、!、&#xff08;可以加等一个字符串&#xff0c;也可以加等一个字符&#xff09;、输入输出>>、<<。 main.cpp #include <iostream> #include…

华为昇腾系列-jupyter安装torch_npu

使用背景 国产算力的兴起&#xff0c;异构算力成为各大厂商的选择&#xff0c;以摆脱对英伟达算力过大的依赖&#xff0c;保障算力安全。本文将会讲解如何使用昇腾算力卡来制作一个镜像&#xff0c;然后交给k8s进行算力调度&#xff0c;显示国产算力的真正应用落地。 安装步骤…

微服务配置管理——动态路由

动态路由 网关的路由配置全部是在项目启动时由org.springframework.cloud.gateway.route.CompositeRouteDefinitionLocator在项目启动的时候加载&#xff0c;并且一经加载就会缓存到内存中的路由表内&#xff08;一个Map&#xff09;&#xff0c;不会改变。也不会监听路由变更新…

创建游戏暂停菜单

创建用户控件 设置样式 , 加一层 背景模糊 提升UI菜单界面质感 , 按钮用 灰色调 编写菜单逻辑 转到第三人称蓝图 推荐用 Set Input Mode Game And UI , 只用仅UI的话 增强输入响应不了 让游戏暂停的话也可以用 Set Game Paused , 打勾就是暂停 , 不打勾就是继续游戏 , 然后…

0基础如何转行IT

这是一个学习为王的时代&#xff0c;你没有超强的主动学习能力&#xff0c;很容易在千军万马的竞争中落后&#xff0c;甚至被优秀的替代者淘汰。 小白如何转行IT 正所谓业精于专&#xff0c;相较于科班生&#xff0c;非科班转行的在基础方面确实比较薄弱&#xff0c;因此必须…

VMWare虚拟机键盘卡顿

文章目录 环境问题解决办法参考 环境 Windows 11 家庭中文版VMware Workstation 17 ProUbuntu 24.04.1 问题 最近新入手了一台电脑台式机&#xff0c;型号是联想拯救者刃7000K&#xff0c;自带Win11家庭版。主机的CPU是第14代英特尔酷睿i9处理器&#xff0c;异构24核32线程。…

ubuntu 安装minikube,并拉取k8s镜像

虚拟机是vmware17, 系统是ubuntu20.4&#xff0c; minikube是1.23.1&#xff0c; docker是24.0.7&#xff0c; 为什么要装minikube&#xff0c;通常k8s集群是要3台机子以上&#xff0c;而通过minikube&#xff0c;可以在一台机子上搭建出k8s集群&#xff0c;minikube采用的是D…

unraid使用docker安装redis并创建密码

unraid使用docker安装redis并创建密码 一、redis简单介绍 redis基于K-V思路&#xff0c;数据存储在内存中&#xff0c;速度快&#xff0c;高效。 使用时会结合其他数据库如mysql。 二、redis安装 应用市场搜索redis&#xff0c;找下载量最高的一个即可&#xff0c;其中参数只…

5--SpringBoot项目中菜品管理 详解(一)

目录 公共字段自动填充 问题分析 实现思路 代码开发 步骤一 步骤二 功能测试 新增菜品 需求分析和设计 代码开发 文件上传接口 功能测试 公共字段自动填充 问题分析 后台系统的员工管理功能和菜品分类功能的开发&#xff0c;在新增员工或者新增菜品分类时需要设置…

C语言特殊字符串函数和字符函数

特殊字符串函数 strtok(字符串切割函数) 重点&#xff1a;1.delimiters 参数是个字符串&#xff0c;定义了用作分割符的字符集合 2.第一个参数指定一个字符串&#xff0c;里面包含0个或者多个分隔符 3.strtok函数找到str中的分隔符&#xff0c;会把它改成\0&#xff0c;然后…

内衣洗衣机哪个牌子好用?五款业内口碑爆棚产品汇总

内衣裤洗衣机是一种非常实用的洗衣机&#xff0c;可以有效地保护内衣和贴身衣物的质量和卫生&#xff0c;相比于普通的家用大型洗衣机&#xff0c;内衣裤洗衣机在容量、洗涤方式、控制方式和价格等方面有很大的不同之处&#xff0c;如果您经常需要清洗内衣和贴身衣物&#xff0…

无人机蜂群作战会成为未来战争的主要形式吗,该如何反制呢?

无人机蜂群作战在未来战争中确实有可能成为一种重要的作战形式&#xff0c;但是否会成为“主要形式”则取决于多种因素&#xff0c;包括技术发展、战术创新、战略需求以及国际政治和军事格局的变化等。以下是对无人机蜂群作战及其反制措施的详细分析&#xff1a; 一、无人机蜂…

图神经网络(GNN)简单介绍

参考文章:A Gentle Introduction to Graph Neural Networks 仅作为自己学习的笔记 GNN应用领域&#xff1a; 芯片设计 场景分析与问题分析 推荐系统&#xff08;类似抖音&#xff09; 欺诈检测&#xff0c;风控相关 知识图谱 道路交通&#xff0c;动态流量预测 自动驾驶&…

程序员的得力助手:Kimi AI的实战体验引言

引言 作为一名程序员&#xff0c;我们经常需要处理大量信息&#xff0c;从代码调试到文档编写&#xff0c;再到团队协作&#xff0c;每一项任务都需要我们保持高度的专注和效率。在这个过程中&#xff0c;一个得力的助手可以极大地提升我们的工作效率。今天&#xff0c;我想和…

洛谷P2571.传送带

洛谷P2571.传送带 三分模板题 用于单峰函数求极值 一定可以将答案路径分成三段即AE - EF - FD (E和A可能重复&#xff0c;F和D可能重合) E在线段AB上&#xff0c;F在线段CD上 因为有两个不定点EF&#xff0c;因此假设E为参数&#xff0c;三分求F的位置再外层三分求E的位置 …

PMP--三模--解题--1-10

文章目录 9.资源管理1、 [单选] 项目已经准备好开工&#xff0c;资源已经配置好。开发经理随后通知项目经理&#xff0c;由于家庭紧急情况&#xff0c;关键资源不再可用。开发经理表示&#xff0c;所有其他开发人员都被分配到其他项目&#xff0c;任何开发人员都没有能力承担额…