【深度学习】线性回归、逻辑回归、二分类,多分类等基础知识总结
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
 - 1. 线性回归
 - 2、逻辑回归
 - 3. 单层神经元的缺陷&多层感知机
 - softmax 多分类
 
- 最后再来一个 二分类的例子
 
前言
入行深度学习快2年了,是时间好好总结下基础知识了.现在看可能很多结论和刚学的时候不一样.因此要不断总结和比较
1. 线性回归
线性回归本质就是线性规划,高中的时候两条线相交后, 问如何选点和坐标轴围城的面积最大.就是一种.
 机器学习中跟常用的是,给几个因素 input ,预测另一个output
 比如:受教育程度–>年薪
 这样就构成了最简单的,单变量线性回归
 单变量线性回归算法(比如,x代表学历,f(x)代表收入):
 f(x) = w*x + b
 目标是得到这个 f(x) 的系数
 系数就是权重, w, b的值.
 输出是是预测的收入,
 如何评价准不准,模型好不好, 就需要 拿真实的收入和预测的 作差平方求和比较(Loss), 最接近就是好的.
 预测目标与损失函数
 预测函数f(x)与真实值之间的整体误差最小
 如何定义误差最小呢?
 损失函数:
 使用均方差作为作为成本函数
 也就是 预测值和真实值之间差的平方取均值
优化的目标(y代表实际的收入):
 找到合适的 w 和 b ,使得 (f(x) - y)²越小越好
 注意:现在求解的是参数 w 和 b
如何优化?? 优化测量:
 使用梯度下降算法
2、逻辑回归
什么是逻辑回归 线性回归预测的是一个连续值,逻辑回归给出的”是”和“否”的回答?
 其实是和否,是一种概率问题,就是多大的可能性是是,多大的可能性是否.比如 明天下雨的概率, 10%下 90% 不下.
 但是我们的f(x) 计算的就是一个连续值啊, 如何转成概率呢,
 
 他把给定的所有输入x(其实是f(x)的结果)映射到了0,1直接, >0.5 就是是,小于就是否了.
 sigmoid函数是一个概率分布函数,给定某个输入,它将输出为一个概率值
拿到f(x)的结果后,平方差做损失函数线性回归用平方差所惩罚的是与损失为同一数量级的情形.
 对于分类问题,我们最好的使用交叉熵损失函数会更有效
 交叉熵会输出一个更大的“损失
 假设概率分布p为期望输出,概率分布q为实际输出,H(p,q)
 为交叉熵,则
 交叉熵损失函数
 
 由此可以看到,线性回归和逻辑回归在模型端的区别就是,线性回归输出的是连续值,逻辑回归输出的是(0,1)的概率。 逻辑回归比线性回归多了一个连续值转化为概率的过程.
 在优化目标的不同,方差做损失函数和交叉熵损失函数

3. 单层神经元的缺陷&多层感知机
单层神经元的缺陷
 无法拟合“异或”运算 异或 问题看似简单,使用单层的神经元确实没有办法解决
 
 原因:神经元要求数据必须是线性可分的,异或 问题无法找到一条直线分割两个类
 这个问题是的神经网络的发展停滞了很多年
为了继续使用神经网络解决这种不具备线性可分性的问题,采取在神经网络的输入端和输出端之间插入更多的神经元–多层感知机
 
softmax 多分类
对数几率回归解决的是二分类的问题,
 对于多个选项的问题,我们可以使用softmax函数它是对数几率回归在 N 个可能不同的值上的推广.
 神经网络的原始输出不是一个概率值,实质上只是输入的数
 值做了复杂的加权和与非线性处理之后的一个值而已,那么
 如何将这个输出变为概率分布?
 这就是Softmax层的作用
 
 softmax要求每个样本必须属于某个类别,且所有可能的样本均被覆盖
 softmax个样本分量之和为 1 当只有两个类别时,与对数几率回归完全相同
opt.step()
opt.zero_grad()
#实际是替代了
with torch.no_grad():for p in model.parameters(): p -= p.grad * lrmodel.zero_grad() 
   		loss.backward()#反向传播是记录各个参数变化,后续用来求导opt.step()#利用上一步计算的梯度对内部参数进行更新计算opt.zero_grad()#将梯度归零,便于后面再次迭代计算时不会产生累加现象
 
最后再来一个 二分类的例子
step 1: 引入库
import numpy as np
import torch
import torch.nn as nn
import matplotlib.pyplot as plt
import pandas as pd
 
数据初探:
data = pd.read_csv("./dataset/credit-a.csv",header=None)
data.head(5)
 

 用前15列特征,预测最后一列
# 拆分数据X和y
X = data.iloc[:,:-1]
Y = data.iloc[:,-1]
# 把-1 替换成0 并做数据类型的转换
Y = data.iloc[:,-1].replace(-1, 0)
X = torch.from_numpy(X.values).type(torch.FloatTensor)
Y = torch.from_numpy(Y.values.reshape(-1, 1)).type(torch.FloatTensor) 
step2 构建网络:
model = nn.Sequential(nn.Linear(15,1),nn.Sigmoid())
# 二元交叉熵, 二分类 
loss_fn = nn.BCELoss()
# 目标函数,设置目标函数的优化策略
opt = torch.optim.Adam(model.parameters(), lr=0.0001)
 
step3 训练:
batches = 16
# 整除的方式, 不足一个batch的就舍掉,比如0.25
no_of_batches = len(Y)//16for epoch in range(1000):total_loss = 0for batch in range(no_of_batches):# 起始位置start = batch*batchesend = start + batches# start = batch*batches# end = start + batchesx = X[start: end]y = Y[start: end]# 计算lossy_pred = model(x)loss = loss_fn(y_pred, y)total_loss+=loss.item()opt.zero_grad()loss.backward()opt.step()# 实际预测结果print(epoch,"acc",((model(X).data.numpy() > 0.5).astype('int')==Y.numpy()).mean())print(epoch,"loss",total_loss)
 
查看训练的权重参数:
model.state_dict()
 

 step4:实际的结果
# 实际预测结果
((model(X).data.numpy() > 0.5).astype('int')==Y.numpy()).mean()
 

相关文章:
【深度学习】线性回归、逻辑回归、二分类,多分类等基础知识总结
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言1. 线性回归2、逻辑回归3. 单层神经元的缺陷&多层感知机softmax 多分类最后再来一个 二分类的例子前言 入行深度学习快2年了,是时间好好总结下基础知识了.现…...
【MySQL】调控 字符集
一、 MySQL 启动选项 & 系统变量 启动选项 是在程序启动时我们程序员传递的一些参数,而 系统变量 是影响服务器程序运行行为的变量 1.1 启动项 MySQL 客户端设置项包括: 允许连入的客户端数量 、 客户端与服务器的通信方式 、 表的默认存储引擎 、…...
FME+YOLOV7写DNF自动刷图脚本
目录 前言 一、难点分析 二、实现流程 1.DNF窗口位置获取 2.获取训练数据 3.数据标注 4.数据格式转换 5.数据训练 5.刷图逻辑编写 前言 这是一篇不务正业的研究,首先说明,这不是外挂!这不是外挂!这不是外挂!这只是用a…...
Java语法面试题
多线程锁 Synchronized:一次只能被一个线程占有ReadWriteLock:被多个线程持有,写锁只能被一个线程占有ReentrantLock:一个线程的多个流程能获取同一把锁,就是可重入锁,即在一个线程中可以被重复的获取自旋锁…...
location
目录 匹配的目标 格式 匹配符号: 优先级 要表达不匹配条件,则用 if 实现 例子:根目录的匹配最弱 例子:区分大小写 和 不区分大小写 例子:以根开头 和 不区分大小写 例子:等号 匹配的目标 ng…...
简述RBAC模型
RBAC(Role-Based Access Control)模型是一种常用的访问控制模型,用于管理和控制用户对系统资源的访问权限。RBAC模型通过将用户分配给角色,并授予角色相应的权限,来实现安全的资源访问管理。 在RBAC模型中,…...
倒计时2天:中国工程院院士谭建荣等嘉宾确认出席,“警务+”时代来临...
近日伴随公安部、科技部联合印发通知,部署推进科技兴警三年行动计划(2023-2025年),现代科技手段与警务工作相结合的方式,正式被定义为未来警务发展的新趋势。 21世纪以来,随着科技的不断发展和创新…...
Python蓝桥杯训练:基本数据结构 [哈希表]
Python蓝桥杯训练:基本数据结构 [哈希表] 文章目录Python蓝桥杯训练:基本数据结构 [哈希表]一、哈希表理论基础知识1、开放寻址法2、链式法二、有关哈希表的一些常见操作三、力扣上面一些有关哈希表的题目练习1、[有效的字母异位词](https://leetcode.cn…...
MacOS 配置 Fvm环境
系统环境:MacOS 13,M1芯片 1. 安装HomeBrew: /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)" speed 2. 使用brew安装Fvm: brew tap leoafarias/fvm brew install fvm 3…...
Python小白入门- 01( 第一章,第1节) 介绍 Python 编程语言
1. 介绍 Python 编程语言 1.1 Python 是什么 Python 是一种高级的、解释型、面向对象的编程语言,具有简洁、易读、易写的语法特点。Python 由 Guido van Rossum 于 1989 年在荷兰创造,并于 1991 年正式发布。 Python 语言广泛应用于数据科学、Web 开发、人工智能、自动化测…...
高并发系统设计之缓存
本文已收录至Github,推荐阅读 👉 Java随想录 这篇文章来讲讲缓存。缓存是优化网站性能的第一手段,目的是让访问速度更快。 说起缓存,第一反应可能想到的就是Redis。目前比较好的方案是使用多级缓存,如CPU→Ll/L2/L3→…...
【N32WB03x SDK使用指南】
【N32WB03x SDK使用指南】1. 简介1.1 产品简介1.2 主要资源1.3 典型应用2. SDK/开发固件文件目录结构2.1 doc2.2 firmware2.3 middleware2.4 utilities2.5 projects Projects3. 项目配置与烧录3.1 编译环境安装3.2 固件支持包安装3.3 编译环境配置3.4 编译与下载3.5 BLE工程目录…...
pytest测试框架——pytest.ini用法
这里写目录标题一、pytest用法总结二、pytest.ini是什么三、改变运行规则pytest.inicheck_demo.py执行测试用例四、添加默认参数五、指定执行目录六、日志配置七、pytest插件分类八、pytest常用插件九、改变测试用例的执行顺序十、pytest并行与分布式执行十一、pytest内置插件h…...
KAFKA安装与配置(带Zookeeper)2023版
KAFKA安装与配置(带Zookeeper) 一、环境准备: Ubuntu 64位 22.04,三台 二、安装JDK1.8 下载JDK1.8,我这边用的版本是jdk1.8.0_2022、解压jdk tar -zxvf jdk1.8.0_202.tar.gz 3、在/usr/local创建java文件夹,并将解压的jdk移动到/usr/local/java sudo mv jdk1.8.0_202…...
深入浅出解析ChatGPT引领的科技浪潮【AI行研商业价值分析】
Rocky Ding写在前面 【AI行研&商业价值分析】栏目专注于分享AI行业中最新热点/风口的思考与判断。也欢迎大家提出宝贵的意见或优化ideas,一起交流学习💪 大家好,我是Rocky。 2022年底,ChatGPT横空出世,火爆全网&a…...
.net 批量导出文件,以ZIP压缩方式导出
1. 首先Nuget ICSharpCode.SharpZipLib <script type"text/javascript">$(function () {$("#OutPutLink").click(function () { // 单击下文件时$.ajax({ // 先判断条件时间内没有文件url: "/Home/ExistsFile?statTime" $(&q…...
数据分析:某电商优惠卷数据分析
数据分析:某电商优惠卷数据分析 作者:AOAIYI 专栏:python数据分析 作者简介:Python领域新星作者、多项比赛获奖者:AOAIYI首页 😊😊😊如果觉得文章不错或能帮助到你学习,可…...
性能测试流程
性能测试实战一.资源指标分析1.判断CPU是否瓶颈的方法2.判断内存是否瓶颈的方法3.判断磁盘I/O是否瓶颈的方法4.判断网络带宽是否是瓶颈的方法二.系统指标分析三.性能调优四.性能测试案例1.项目背景2.实施规划(1)需求分析(2)测试方…...
zookeeper集群的搭建,菜鸟升级大神必看
一、下载安装zookeeperhttp://archive.apache.org/dist/zookeeper/下载最新版本2.8.1http://archive.apache.org/dist/zookeeper/zookeeper-3.8.1/二、上传安装包到服务器上并且解压,重命名tar -zxvf apache-zookeeper-3.8.1-bin.tar.gzmv apache-zookeeper-3.8.1-b…...
C语言之习题练习集
💗 💗 博客:小怡同学 💗 💗 个人简介:编程小萌新 💗 💗 如果博客对大家有用的话,请点赞关注再收藏 🌞 文章目录牛客网题号: JZ17 打印从1到最大的n位数牛客网题号&#x…...
使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式
一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...
深入剖析AI大模型:大模型时代的 Prompt 工程全解析
今天聊的内容,我认为是AI开发里面非常重要的内容。它在AI开发里无处不在,当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗",或者让翻译模型 "将这段合同翻译成商务日语" 时,输入的这句话就是 Prompt。…...
Flask RESTful 示例
目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题: 下面创建一个简单的Flask RESTful API示例。首先,我们需要创建环境,安装必要的依赖,然后…...
RocketMQ延迟消息机制
两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数,对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后…...
2021-03-15 iview一些问题
1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...
Robots.txt 文件
什么是robots.txt? robots.txt 是一个位于网站根目录下的文本文件(如:https://example.com/robots.txt),它用于指导网络爬虫(如搜索引擎的蜘蛛程序)如何抓取该网站的内容。这个文件遵循 Robots…...
今日科技热点速览
🔥 今日科技热点速览 🎮 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售,主打更强图形性能与沉浸式体验,支持多模态交互,受到全球玩家热捧 。 🤖 人工智能持续突破 DeepSeek-R1&…...
如何理解 IP 数据报中的 TTL?
目录 前言理解 前言 面试灵魂一问:说说对 IP 数据报中 TTL 的理解?我们都知道,IP 数据报由首部和数据两部分组成,首部又分为两部分:固定部分和可变部分,共占 20 字节,而即将讨论的 TTL 就位于首…...
优选算法第十二讲:队列 + 宽搜 优先级队列
优选算法第十二讲:队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...
Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)
目录 一、👋🏻前言 二、😈sinx波动的基本原理 三、😈波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、🌊波动优化…...
