罗杰斯特回归

定义

逻辑回归其实就是原来的线性回归加了激活函数,这个函数其实就是sigmoid函数,把一个回归的连续数值压缩到了0到1的空间,其实只要有函数能够满足把数值压缩到0,1之间就可以(因为0到1之间的数值就是概率值)

在这里插入图片描述
对于分类问题而言,不能和回归问题一样,计算与真值的距离,即MSE损失(均方误差损失),为此人们发明了交叉熵损失。
对于单个样本,其二元交叉熵损失为:
L = − [ y log ⁡ ( y ^ ) + ( 1 − y ) log ⁡ ( 1 − y ^ ) ] L = - [y \log(\hat{y}) + (1 - y) \log(1 - \hat{y})] L=[ylog(y^)+(1y)log(1y^)]

其中, y y y 是真实标签(取值为 0 或 1), y ^ \hat{y} y^ 是模型预测的概率(取值范围在 [ 0 , 1 ] [0, 1] [0,1] 之间)。
分析:当真实值为1的时候,损失变为:
L = − y log ⁡ ( y ^ ) L = - y \log(\hat{y}) L=ylog(y^)
为了让损失最小,预测值 y ^ \hat{y} y^越大越好,即越为1越好
当真实值为0的时候,损失变为:
L = − log ⁡ ( 1 − y ^ ) L = - \log(1-\hat{y}) L=log(1y^)
为了让损失最小,预测值 y ^ \hat{y} y^越小越好,即越为0越好
这个是符合损失函数概念的,即越接近真实值,损失越小。

对于 N N N 个样本的平均二元交叉熵损失为:
L = − 1 N ∑ i = 1 N [ y i log ⁡ ( y ^ i ) + ( 1 − y i ) log ⁡ ( 1 − y ^ i ) ] L = - \frac{1}{N} \sum_{i=1}^{N} [y_i \log(\hat{y}_i) + (1 - y_i) \log(1 - \hat{y}_i)] L=N1i=1N[yilog(y^i)+(1yi)log(1y^i)]
对于多分类任务一样,BCE损失函数如下:
H ( y , p ) = − 1 n ∑ i = 1 n ∑ j = 1 C y i j log ⁡ ( p i j ) H(y,p)=-\frac{1}{n}\sum_{i = 1}^{n}\sum_{j = 1}^{C}y_{ij}\log(p_{ij}) H(y,p)=n1i=1nj=1Cyijlog(pij)
C是类别,n是样本数目
在这里插入图片描述

pytorch框架编写

不管什么模型,其实也是只有四部

  • (1)准备数据
import torch
import torch.nn.functional as F
# 准备数据
x_data = torch.tensor([[1.0],[2.0],[3.0]], dtype=torch.float32)
y_data = torch.tensor([[0.0],[0.0],[1.0]], dtype=torch.float32)
  • (2)构建模型
# 构建模型
class LogiscalRegression(torch.nn.Module):def __init__(self):super(LogiscalRegression,self).__init__()self.linear=torch.nn.Linear(1,1)def forward(self,x):y_pred=F.sigmoid(self.linear(x))return y_pred

核心在于

y_pred=F.sigmoid(self.linear(x))
线性回归的值取了一个sigmoid激活,将其压缩到【0,1】之间。

  • (3)初始化模型,并定义损失
# 实例化自己构建的模型
model=LogiscalRegression()
#定义损失函数
cretirion=torch.nn.BCELoss(reduction='sum')
# 定制优化器类型
optimizer=torch.optim.SGD(model.parameters(),lr=0.01)
  • (4)开始损失
#开始训练
for epoch in range(100):#模型结果y_pred = model(x_data)#计算损失loss=cretirion(y_pred,y_data)print("loss:",loss.item())#梯度归零optimizer.zero_grad()#反向转播loss.backward()#更新optimizer.step()

全部代码如下

import torch
import torch.nn.functional as F
# 准备数据
x_data = torch.tensor([[1.0],[2.0],[3.0]])
y_data = torch.tensor([[0.0],[0.0],[1.0]])
# 构建模型
class LogiscalRegression(torch.nn.Module):def __init__(self):super(LogiscalRegression,self).__init__()self.linear=torch.nn.Linear(1,1)def forward(self,x):y_pred=F.sigmoid(self.linear(x))return y_pred
# 实例化自己构建的模型
model=LogiscalRegression()
#定义损失函数
cretirion=torch.nn.BCELoss(size_average =False)
# 定制优化器类型
optimizer=torch.optim.SGD(model.parameters(),lr=0.01)
#开始训练
for epoch in range(100):y_pred = model(x_data)loss=cretirion(y_pred,y_data)print("loss:",loss.item())optimizer.zero_grad()loss.backward()optimizer.step()

在这里插入图片描述

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

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

相关文章

Java多线程与JConsole实践:从线程状态到性能优化!!!

目录 一、前言二、JConsole 使用教程二、线程的基本状态2.1新建状态(New)2.2就绪状态(Ready)2.3运行状态(Running)2.4 阻塞状态(Blocked)2.5. 等待状态(Waiting&#xff…

基于django优秀少儿图书推荐网(源码+lw+部署文档+讲解),源码可白嫖!

摘要 时代在飞速进步,每个行业都在努力发展现在先进技术,通过这些先进的技术来提高自己的水平和优势,图书推荐网当然不能排除在外。本次开发的优秀少儿图书推荐网是在实际应用和软件工程的开发原理之上,运用Python语言、爬虫技术…

《网络管理》实践环节01:OpenEuler22.03sp4安装zabbix6.2

兰生幽谷,不为莫服而不芳; 君子行义,不为莫知而止休。 1 环境 openEuler 22.03 LTSsp4PHP 8.0Apache 2Mysql 8.0zabbix6.2.4 表1-1 Zabbix网络规划(用你们自己的特征网段规划) 主机名 IP 功能 备注 zbx6svr 19…

Axure项目实战:智慧城市APP(七)我的、消息(显示与隐藏交互)

亲爱的小伙伴,在您浏览之前,烦请关注一下,在此深表感谢! 课程主题:智慧城市APP 主要内容:我的、消息、活动模块页面 应用场景:消息页设计、我的页面设计以及活动页面设计 案例展示&#xff…

晶晨S905L3A(B)-安卓9.0-开启ADB和ROOT-支持IPTV6-支持外置游戏系统-支持多种无线芯片-支持救砖-完美通刷线刷固件包

晶晨S905L3A(B)-安卓9.0-开启ADB和ROOT-支持IPTV6-支持外置游戏系统-支持多种无线芯片-支持救砖-完美通刷线刷固件包 适用型号:M401A、CM311-1a、CM311-1sa、B863AV3.1-M2、B863AV3.2-M、UNT403A、UNT413A、M411A、E900V22C、E900V22D、IP112H等等晶晨S905L3A(B)处…

【免费】2007-2019年各省地方财政科学技术支出数据

2007-2019年各省地方财政科学技术支出数据 1、时间:2007-2019年 2、来源:国家统计局、统计年鉴 3、指标:行政区划代码、地区、年份、地方财政科学技术支出 4、范围:31省 5、指标说明:地方财政科学技术支出是指地方…

树形结构的工具类TreeUtil

这个地方是以null为根节点,相关以null或者0自己在TreeUtil中加代码,就行 基础类 package com.jm.common.entity;import lombok.Data;import java.util.ArrayList; import java.util.List;/*** Author:JianWu* Date: 2025/3/26 9:02*/ Data public clas…

视频联网平台智慧运维系统:智能时代的城市视觉中枢

引言:破解视频运维的"帕累托困境" 在智慧城市与数字化转型浪潮中,全球视频监控设备保有量已突破10亿台,日均产生的视频数据量超过10万PB。然而,传统运维模式正面临三重困境: 海量设备管理失序:…

DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加行拖拽排序功能示例9,TableView16_09 嵌套表格拖拽排序

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕 目录 DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加行拖拽排序功能示例9,TableView16_09 嵌…

QML中使用Image显示图片和使用QQuickItem显示图片

在QML中显示图片时,Image元素和自定义QQuickItem有不同的特性和适用场景。以下是两者的详细对比及性能分析: 1. Image 元素 优点: 声明式语法:简单直观,适合静态图片或简单动态需求 Image {source: "image.png&…

【力扣刷题|第十七天】0-1 背包 完全背包

目标和 力扣题目网址:目标和 这道题我们先用回溯的思想来做。首先我们设正数和为S,数组和为N,目标值为T,那么S-(N-S)T化简之后可以得S(TN)/2即选择的正数个数为偶数,而且NT也为偶数,那么第一个判断条件我们就有了&…

【Linux网络与网络编程】01.初识网络

一、计算机网络的发展历史 计算机是人的工具,人要协同工作,注定了网络的产生是必然的。 二、协议 计算机之间的传输媒介是光信号和电信号,通过 "频率" 和 "强弱" 来表示 0 和 1 这样的信息,要想传递各种不同…

使用 Python 进行链上数据监控:让区块链数据触手可及

使用 Python 进行链上数据监控:让区块链数据触手可及 区块链技术正以前所未有的速度改变着各行各业,特别是在金融、供应链、物联网和智能合约等领域的应用,已经成为了一种新常态。然而,随着区块链网络的快速扩展和去中心化特性的不断强化,数据的可视化与监控变得愈发重要…

【SMBIOS数据块类型列表】

SMBIOS数据块类型列表 SMBIOS数据块类型列表**SMBIOS 数据块类型列表****如何查看实际的 SMBIOS 数据块?****总结** SMBIOS数据块类型列表 在 SMBIOS(System Management BIOS)中,Type 是用来标识不同类型的数据块的。每种类型对应…

【测试】每日3道面试题 3/30

每日更新,建议关注收藏点赞。 白盒测试逻辑覆盖标准?哪种覆盖标准覆盖率最高? 5种。语句覆盖、分支/判定覆盖、条件覆盖、条件组合覆盖【覆盖率最高,所有可能条件组合都验证】、路径覆盖【理论上最高,但实际很难实现】…

NFS挂载异常排查记录

互相PING服务器看是否通;在ubuntu下看下服务器是否正常运行。导出目录是否导出了。最后发现在挂载目录的地方目录路径和后面没有加空格。

1--当「穷举」成为艺术:CTF暴力破解漏洞技术从入门到入刑指南(知识点讲解版)

当「穷举」成为艺术:CTF暴力破解漏洞技术从入门到入刑指南 引言:论暴力破解的哲学意义 “世界上本没有漏洞,密码设得简单了,便成了漏洞。” —— 鲁迅(并没有说过) 想象你是个不会撬锁的小偷,面…

Java实战:实现用户的登录注册功能

系列文章目录 Java文件 I/O流的操作实战和高级UI组件和事件监听的综合 文章目录 系列文章目录前言一、大致流程思路分析:二、定义用户类:三、服务层的实现: 1.保护用户数据功能的实现2.登录操作的实现 四、实现用户的注册界面: 大…

SQLAlchemy 支持特殊字符

postgresql 实践 pydantic 实践(一)基础 pydantic 实践(二)数据校验 SQLAlchemy 介绍与实践 SQLAlchemy 支持特殊字符 SQLAlchemy 支持特殊字符 1. 字符集介绍分析2. MySQL 支持特殊字符2.1. 更新 MySQL 字符集为 utf8mb42.2 更新…

如何看待职场中的“向上管理”

向上管理的本质,是提供一份更精确的人力产品说明书, 利用市场的逻辑,引导领导,按照你的心意,使用你这款产品。 公司获得更高的产出,领导获得更多的成果,你获得了自由支配的时间, 这是一场正和博弈。 ​ 图片来源:网络 (1)具体案例: 把自己当成一款产品,使用者…