- 博客(59)
- 收藏
- 关注
原创 Python 训练营打卡 Day 59-经典时序预测模型3
SARIMA (Seasonal AutoRegressive Integrated Moving Average)是标准ARIMA模型的扩展。它专门用于处理具有明显季节性模式的时间序列数据。
2025-07-12 17:06:01
1168
原创 Python 训练营打卡 Day 58-经典时序预测模型2
核心看点:AIC 和 BIC。当你在比较不同模型时(比如 ARIMA(2,0,0) vs ARIMA(1,0,1)),这两个值是选择“最佳”模型的重要依据。
2025-07-11 16:36:23
819
原创 Python 训练营打卡 Day 57-经典时序预测模型1
非平稳性(趋势) -> 使用差分 (.diff())季节性 -> 使用季节性差分 (.diff(periods=s))自相关性 -> 不消除,而是利用 ACF/PACF图 来为后续的模型选择提供线索截尾 (Cut off):ACF或PACF图在某个延迟之后,相关系数突然变得非常小,几乎都在置信区间内拖尾 (Tail off):相关系数随着延迟增加而缓慢、指数级地衰减,而不是突然截断如果ACF截尾,PACF拖尾 -> 考虑 MA(q) 模型。
2025-07-10 16:01:55
1116
原创 Python 训练营打卡 Day 56-时序数据的检验
在时序预测中,这种要求会更加苛刻,你设想一下,你可以制造一个随机的序列,然后让模型来学习,这注定也是不可能实现的。也就是说 数据本身要具备可预测性。一个完全随机的序列(学术上称为“白噪声”)是不可预测的。它的未来值与过去值没有任何相关性。任何模型试图从中学习规律,最终都只会是徒劳白噪声需要满足以下条件:1. 均值为02. 方差恒定3. 自相关性为0(即过去的值对未来的值没有影响)我们来生成一组随机序列# 中文显示设置。
2025-07-09 20:54:25
889
原创 Python 训练营打卡 Day 55-序列预测任务介绍
之前接触到的结构化数据,它本身不具备顺序,我们认为每个样本之间独立无关,样本之间即使调换顺序,仍然不影响模型的训练,但是日常中很多数据是存在先后关系的,而他们对应的任务是预测下一步的值,我们把这个任务称之为序列预测1.2 序列预测的x-y对通过滑动窗口这个方式把之前结构化的数据,转化为序列的样子。序列任务也需要有自己的数据对,这样才符合监督学习的训练。把原始数据序列,转化为x-y这样的标签对,实现用前seq_length个时间步预测下一个时间步的监督学习格式。
2025-07-08 20:10:27
1018
原创 Python 训练营打卡 Day 54-Inception网络及其思考
"""Inception模块初始化,实现多尺度特征并行提取与融合参数:in_channels: 输入特征图的通道数"""# 1x1卷积分支:降维并提取通道间特征关系# 减少后续卷积的计算量,同时保留局部特征信息nn.Conv2d(in_channels, 64, kernel_size=1), # 降维至64通道nn.ReLU() # 引入非线性激活# 3x3卷积分支:通过1x1卷积降维后使用3x3卷积捕捉中等尺度特征# 先降维减少计算量,再进行空间特征提取。
2025-07-06 15:19:10
797
原创 Python 训练营打卡 Day 53-对抗生成网络
从代码执行结果和可视化图表来看,整体是利用条件 GAN(CGAN)对心脏病数据集(少数类样本)进行数据增强。
2025-07-05 15:09:16
2082
原创 Python 训练营打卡 Day 52-神经网络调参指南
torch中很多场景都会存在随机数1.权重、偏置的随机初始化2.数据加载(shuffling打乱)与批次加载(随机批次加载)的随机化3.数据增强的随机化(随机旋转、缩放、平移、裁剪等)4.优化器中的随机性随机函数的几个部分上述种子可以处理大部分场景,实际上还有少部分场景(具体的函数)可能需要自行设置其对应的随机种子,日常使用中,在最开始调用这部分已经足够。
2025-07-04 13:26:17
929
原创 Python 训练营打卡 Day 50-预训练模型+CBAM模块
现在很容易想到第一次使用resnet的预训练策略:先冻结预训练层,然后训练其它层。之前的其他层是全连接层(分类头),现在其他层还包括了每一个残差块中的cbam注意力层。先复用一下数据预处理+定义cbam的代码先通过预训练resnet18来查看模型结构经典的 ResNet-18 模型可以将其看作一个处理流水线,图像数据从一端进去,分类结果从另一端出来。
2025-06-20 15:08:31
710
原创 Python 训练营打卡 Day 49-CBAM注意力
CBAM 是一种能够集成到任何卷积神经网络架构中的注意力模块。它的核心目标是通过学习的方式,自动获取特征图在通道和空间维度上的重要性,进而对特征图进行自适应调整,增强重要特征,抑制不重要特征,提升模型的特征表达能力和性能。简单来说,它就像是给模型装上了 “智能眼镜”,让模型能够更精准地看到图像中关键的部分CBAM 由两个主要部分组成:通道注意力模块(Channel Attention Module)和空间注意力模块(Spatial Attention Module)。
2025-06-19 15:40:52
486
原创 Python 训练营打卡 Day 48-随机函数与广播机制
尺寸变化:广播后的形状由各维度的最大值决定(示例 2 中最终形状为 (2, 2, 2))值扩展:维度为 1 的张量通过复制扩展值(示例 1 中 b 从 [1, 2, 3] 扩展为三行相同的值)内存效率:扩展是逻辑上的,实际未复制数据,避免了内存浪费。
2025-06-18 13:41:31
1022
原创 Python 训练营打卡 Day 47-注意力热图可视化
在昨天代码的基础上,对比不同卷积层热力图可视化的结果我们关注的不只是精度的差异,还包含了同精度下训练时长的差异等,在大规模数据集上推理时长、训练时长都非常重要。因为资源是有限的可视化部分同理,在训练完成后通过钩子函数取出权重or梯度,即可进行特征图的可视化、Grad-CAM可视化、注意力热图这个注意力热图是通过构子机制: `register_forward_hook` 捕获最后一个卷积层(`conv3`)的输出特征图热力图(红色表示高关注,蓝色表示低关注)半透明覆盖在原图上。
2025-06-16 07:35:32
407
原创 Python 训练营打卡 Day 46-通道注意力
层级特征图特点对应模型能力类比人类视觉流程原始图像细节丰富但无抽象语义无(纯输入)视网膜接收原始光信号conv1保留基础细节,提取低级特征识别边缘、纹理视觉皮层初步解析轮廓conv2抽象化,提取局部关键特征识别局部结构(如身体块、叶片簇)大脑进一步组合特征识别局部模式conv3高度抽象,聚焦全局语义特征识别类别相关核心模式大脑最终整合信息判断 “这是青蛙”
2025-06-15 11:53:21
1002
原创 Python 训练营打卡 Day 45-Tensorboard
TensorBoard 的核心原理就是在训练过程中,把训练过程中的数据(比如损失、准确率、图片等)先记录到日志文件里,再通过工具把这些日志文件可视化成图表,这样就不用自己手动打印数据或者用其他工具画图所以核心就是2个步骤:数据怎么存?—— 先写日志文件训练模型时,TensorBoard 会让程序把训练数据(比如损失值、准确率)和模型结构等信息,写入一个特殊的日志文件(.tfevents 文件)数据怎么看?—— 用网页展示日志。
2025-06-14 11:26:54
737
原创 Python 训练营打卡 Day 44-预训练模型
模型年份提出团队关键创新点层数参数量LeNet-51998Yann LeCun 等首个 CNN 架构,卷积层 + 池化层 + 全连接层设计,采用 Sigmoid 激活函数,奠定深度学习视觉基础。7 层~60KAlexNet2012Alex Krizhevsky 等首次引入 ReLU 激活函数提升训练效率,使用 Dropout 抑制过拟合,结合数据增强与 GPU 并行计算。8 层60MVGGNet2014Oxford VGG 团队。
2025-06-13 13:42:49
806
原创 Python 训练营打卡 Day 42-Grad-CAM和Hook函数
1. 回调函数是“被动响应”的工具,核心是“传递函数作为参数,等待触发”2. 装饰器是“主动改造”的工具,核心是“用新函数包装原函数,修改行为”3. Hook 函数是两者的灵活结合,既可以通过回调参数实现(如 PyTorch),也可以通过装饰器机制实现(如某些框架的生命周期钩子)
2025-06-11 12:59:48
1003
原创 Python 训练营打卡 Day 41-简单CNN
在图像数据预处理环节,为提升数据多样性,可采用数据增强(数据增广)策略。该策略通常不改变单次训练的样本总数,而是通过对现有图像进行多样化变换,使每次训练输入的样本呈现更丰富的形态差异,从而有效扩展模型训练的样本空间多样性常见的修改策略包括以下几类1. 几何变换:如旋转、缩放、平移、剪裁、裁剪、翻转2. 像素变换:如修改颜色、亮度、对比度、饱和度、色相、高斯模糊(模拟对焦失败)、增加噪声、马赛克3. 语义增强(暂时不用):mixup,对图像进行结构性改造、cutout随机遮挡等。
2025-06-10 14:12:55
653
原创 Python 训练营打卡 Day 40-训练和测试的规范写法
批量维度不变性:无论进行flatten、view还是reshape操作,第一个维度`batch_size`通常保持不变动态维度指定:使用`-1`让PyTorch自动计算该维度的大小,但需确保其他维度的指定合理,避免形状不匹配错误。
2025-06-09 12:33:49
656
原创 Python 训练营打卡 Day 39-图像数据与显存
先归一化,再标准化transforms.ToTensor(), # 转换为张量并归一化到[0,1]transforms.Normalize((0.1307,), (0.3081,)) # MNIST数据集的均值和标准差,这个值很出名,所以直接使用])# 2. 加载MNIST数据集,如果没有会自动下载# 定义两层MLP神经网络self.flatten = nn.Flatten() # 将28x28的图像展平为784维向量。
2025-06-08 12:32:34
1022
原创 Python 训练营打卡 Day 38-Dataset和Dataloader类
作业:了解下cifar数据集,尝试获取其中一张图片CIFAR-10:包含 60,000 张 32x32 的彩色图片,分为 10 个类别,每个类别 6,000 张。其中 50,000 张作为训练图片,10,000 张作为测试图片。数据集分为 5 个训练 batch 和 1 个测试 batch,每个 batch 包含 10,000 张图片CIFAR-100:包含 60,000 张 32x32 的彩色图片,分为 100 个类别,每个类别 600 张,对应 500 张训练图片和 100 张测试图片。
2025-06-07 13:24:09
1078
原创 Python 训练营打卡 Day 37-早停策略和模型权重的保存
训练集的loss在下降,但是有可能出现过拟合现象:模型过度学习了训练集的信息,导致在测试集上表现不理想,我们想同步打印测试集的loss,以判断是否出现过拟合现象打印测试集的loss和同步打印测试集的评估指标,是一个逻辑,但是打印loss可以体现在一个图中。
2025-06-06 12:33:54
1071
原创 Python 训练营打卡 Day 36
from tqdm import tqdm # 导入tqdm库用于进度条显示self.fc1 = nn.Linear(31, 64) # 输入层到第一隐藏层self.relu = nn.ReLU() # 激活函数ReLUself.dropout = nn.Dropout(0.3) # 添加Dropout防止过拟合self.fc2 = nn.Linear(64, 32) # 第一隐藏层到第二隐藏层self.fc3 = nn.Linear(32, 2) # 第二隐藏层到输出层return x。
2025-06-05 11:51:35
229
原创 Python 训练营打卡 Day 35-模型可视化与推理
理解一个深度学习网络最重要的2点:1. 了解损失如何定义的,知道损失从何而来----把抽象的任务通过损失函数量化出来2. 了解参数总量,即知道每一层的设计才能退出---层设计决定参数总量为了了解参数总量,我们需要知道层设计,以及每一层参数的数量。
2025-06-04 13:10:01
815
原创 Python 训练营打卡 Day 34-GPU训练及类的call方法
在 Python 中,__call__ 方法是一个特殊的魔术方法(双下划线方法),它允许类的实例像函数一样被调用。将当前损失值(loss.item())添加到losses列表中,用于后续绘制损失曲线。call方法无参数的情况下,在实例化之后,每次调用实例时触发 __call__ 方法。这种模式在深度学习训练中很常见,既满足实时监控需求,又优化了资源使用。4. 这种设计既保证了定期记录损失值,又提供了更频繁的训练状态反馈。类名后跟(),表示创建类的实例(对象),仅在第一次创建对象时发生。
2025-06-03 15:28:24
433
原创 Python 训练营打卡 Day 33-神经网络
定义一个简单的全连接神经网络模型,包含一个输入层、一个隐藏层和一个输出层定义层数+定义前向传播顺序class MLP(nn.Module): # 定义一个多层感知机(MLP)模型,继承父类nn.Moduledef __init__(self): # 初始化函数super(MLP, self).__init__() # 调用父类的初始化函数# 前三行是八股文,后面的是自定义的self.fc1 = nn.Linear(4, 10) # 输入层到隐藏层。
2025-06-02 13:09:35
631
原创 Python 训练营打卡 Day 32-官方文档的阅读
我们已经掌握了相当多的机器学习和python基础知识,现在面对一个全新的官方库,看看是否可以借助官方文档的写法了解其如何使用我们以pdpbox这个机器学习解释性库来介绍如何使用官方文档。
2025-06-01 12:46:57
330
原创 Python打卡训练营day31-文件拆分
├── notebooks/ # Jupyter笔记本。│ ├── visualization/ # 新增可视化模块。│ ├── raw/ # 原始数据。│ ├── data/ # 数据处理。│ ├── models/ # 模型相关。├── config/ # 配置文件。├── models/ # 保存模型。
2025-05-31 14:13:27
981
原创 Python 训练营打卡 Day 30-模块和库的导入
from math import *`:这种方法将 `math` 模块中的所有公开的函数和变量导入到当前的命名空间中,可以直接使用这些函数和变量而无需 `math.` 前缀。`import math`:这种方法会将整个 `math` 模块导入到命名空间中,但是需要使用 `math.` 前缀来访问模块内的函数或变量。`import math`:明确指出了函数和变量来源于 `math` 模块,这对代码的可读性和维护性都是有益的。其他阅读你代码的人可以清楚地看到每个函数的来源,这对大型项目和团队合作尤为重要。
2025-05-30 18:21:26
778
原创 Python 训练营打卡 Day 29
之前学过函数的装饰器:接收一个函数,返回一个修改后的函数。我们之前是用复用的思想来看装饰器的,换一个角度理解,当你想修改一个函数的时候,可以通过装饰器方法来修改而无需重新定义这个函数类也有装饰器,接收一个类,返回一个修改后的类,例如:1. 添加新的方法或属性(如示例中的 log 方法)2. 修改原有方法(如替换 __init__ 方法,添加日志)3. 甚至可以返回一个全新的类(继承或组合原类)通过类装饰器,可以在不修改类内部代码的情况下,为多个类统一添加功能(如日志、统计)
2025-05-29 14:04:13
840
原创 Python 训练营打卡 Day 28-类的定义和方法
类是对属性和方法的封装,可以理解为模板,通过对模板实例化可以实现调用这个类的属性和方法。比如创建一个随机森林类,然后就可以调用他的训练和预测方法一个常见的类的定义包括了:1. 关键字class2. 类名3. 语法固定符号冒号(:)4. 一个初始化函数__init__(self)注意:注意:init左右各有两个下划线__,需要传入self这个特殊的参数。
2025-05-28 13:06:57
650
原创 Python 训练营打卡 Day 26-函数
"""Docstring: 描述函数的功能、参数和返回值 (可选但强烈推荐)"""# 函数体: 实现功能的代码# ...return value # 可选,用于返回结果def: 关键字,表示开始定义一个函数function_name: 函数的名称,应遵循Python的命名约定(通常是小写字母和下划线,例如 calculate_area,用英文单词含义和下划线来作为函数名)parameter1, parameter2, ...: 函数的参数(也叫形参),是函数在被调用时接收的输入值。
2025-05-26 15:19:09
769
原创 Python 训练营打卡 Day 25-异常处理
原因:代码不符合 Python 的语法规则,解释器在尝试解析代码时就会失败。这种错误在程序 运行之前 就会被检测到。
2025-05-25 12:09:48
776
原创 Python 训练营打卡 Day 24-元组和OS模块
一.元组元组(tuple)是一种不可变的序列类型,用于存储多个有序元素。与列表(list)不同,元组一旦创建就不能修改其内容,这使得元组具有更高的安全性和性能优势,元组使用圆括号()或直接用逗号分隔元素(无需括号)来定义。
2025-05-24 13:36:15
2031
原创 Python 训练营打卡 Day 23-pipeline管道
--- 定义不同列的类型和它们对应的预处理步骤 ---# 这些定义是基于原始数据 X 的列类型来确定的# 识别原始的 object 列 (对应你原代码中的 discrete_features 在预处理前)# 识别原始的非 object 列 (通常是数值列)# 有序分类特征 (对应你之前的标签编码)# 注意:OrdinalEncoder默认编码为0, 1, 2... 对应你之前的1, 2, 3...需要在模型解释时注意# 这里的类别顺序需要和你之前映射的顺序一致。
2025-05-23 13:07:37
589
原创 Python 训练营打卡 Day 21-常见的降维算法
这类算法在降维过程中**不使用**任何关于数据样本的标签信息(比如类别标签、目标值等)。它们仅仅根据数据点本身的分布、方差、相关性、局部结构等特性来寻找低维表示输入:只有特征矩阵 `X`
2025-05-21 13:20:13
1122
原创 Python 训练营打卡 Day 20-奇异值SVD分解
SVD 分解后原始矩阵是等价的,但通过筛选排序靠前的奇异值和对应的向量,我们可以实现降维,保留数据的主要信息,同时减少计算量和噪声影响。这种方法是许多降维算法(如 PCA)和数据处理技术的基础。
2025-05-20 12:26:52
752
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅