- 博客(46)
- 收藏
- 关注
原创 YOLO_IoU知识点
我对 IoU 的理解是:IoU 就是用一个 0 到 1 之间的数,表示两个框重叠得有多少。训练时,选择和真实目标最匹配的 Anchor;推理时,NMS 删除重复预测框;评估时,判断预测框是否检测正确。所以 IoU 可以看成目标检测中的一个共同标准:Anchor 匹配要看 IoU,NMS 去重要看 IoU,检测评估也要看 IoU。YOLO 不只是看置信度来判断结果好不好,还要看预测框的位置是否准确。
2026-10-29 22:11:59
125
原创 YOLOv3的流程梳理
我对 YOLOv3 的理解是:它不是直接看完图片就画出一个框,而是先在三个不同大小的特征图上预测很多候选框。然后,Anchor 帮助模型预测目标的大小和位置,objectness 判断框里有没有目标,类别概率判断目标属于 dog 还是 cat,最后 NMS 把重复框删掉。提取特征→ 多尺度预测→ Anchor 解码→ 置信度计算→ NMS 去重→ 最终检测结果YOLOv3 的核心思想就是先多预测一些候选框,再通过 Anchor、置信度和 NMS,把候选框逐步筛选成最终的检测结果。
2026-10-28 16:11:29
221
原创 PyQt5学习:从界面搭建到与机器学习实战
本文整体结构清晰、代码完整,是一篇很好的 PyQt5 综合实践教程。以下从结构、逻辑和案例补充三个维度提出改进建议,供你参考。一、结构方面:建议在「前言」之后增加一节「环境准备」,集中说明 Python 版本、PyQt5、OpenCV、dlib、sklearn、joblib 等依赖的安装命令,避免读者在后续章节中因缺少依赖而中断学习。
2026-10-12 20:18:22
73
原创 地铁数仓分层建模:从 DWD、DIM 到 DWS
card_no STRING COMMENT '用户编号'表示创建一个叫作card_no的字段,数据类型是STRING,注释是“用户编号”。字段后面的COMMENT主要是为了方便查看表结构和理解字段含义。这次学习的重点不是单独记住某一条 SQL,而是理解数仓分层的整体思路。原始数据不规范,需要清洗用户、地区等基础信息需要统一管理多张表经常需要关联,查询比较麻烦最终,地铁数仓的核心流程可以概括为:原始数据进入 ODS清洗后进入 DWD用户信息进入 DIMDWD 和 DIM 关联。
2026-10-09 20:20:38
390
原创 Hive 窗口函数详解:让数据在分组中完成排名、累计和跨行计算
窗口函数也叫分析函数。它会在当前数据周围划出一个“窗口”,然后对窗口中的数据进行计算。窗口函数() over (partition by 分组字段order by 排序字段rows between 窗口起点 and 窗口终点:对数据进行分组;2.order by:规定组内数据的顺序;:规定当前行可以看到哪些数据;4.over():表示前面的函数按照窗口规则进行计算。selectid,cid,score,这段代码表示:按照学生id分组,计算每名学生的总成绩,同时保留每一科的成绩。id。
2026-10-08 20:46:43
547
原创 用 MediaPipe 做一个能“看懂”手势的计算机视觉小项目
这个项目把计算机视觉中的几个常见步骤串了起来:读取图像、提取关键点、构造特征、训练分类器,以及根据几何关系进行图像变换。模型并没有真正“看懂”手或脸,而是把它们表示成坐标、距离、角度和像素值。只要找到合适的特征,就可以让程序完成识别和判断。如果想继续完善这个项目,可以在连续多帧中进行投票,减少手势快速移动时的识别跳变;也可以把关键点转换成相对于手腕的位置,降低手在画面中远近变化带来的影响。
2026-09-20 17:55:50
582
原创 Word2Vec的CBOW模型的简单实现:49个词的练习
这次 CBOW 实验完整展示了 Word2Vec 的基本思路。首先准备一段文本,把文本切分成单词;然后建立词典,将每个单词转换为数字编号;接着根据上下文窗口构造训练样本;再使用。
2026-09-16 16:08:11
491
原创 用 PyTorch 做一个食品图片分类模型:从整理数据到保存模型
PyTorch 提供了Dataset类,我们可以在它的基础上创建自己的食品数据集。for x in f初始化时,程序打开train.txt或test.txt,读取每一行中的图片路径和标签,然后分别保存到self.imgs和中。自定义数据集还需要实现两个方法。第一个是__len__()它负责告诉程序数据集中一共有多少张图片。第二个是当程序需要第idx张图片时,这个方法会读取图片,执行对应的图片处理,再把标签转换成张量,最后返回图片和标签。
2026-09-10 21:40:08
499
1
原创 HDFS 文件写入流程详解
客户端请求创建文件↓NameNode 检查目录和权限↓NameNode 返回允许创建↓客户端请求第一个 Block↓NameNode 返回 DataNode 列表↓建立 DataNode Pipeline↓客户端将数据切分为 Packet↓Packet 依次写入 DataNode1、DataNode2、DataNode3↓DataNode 逐级返回 ACK↓第一个 Block 写入完成↓客户端请求下一个 Block↓重复上述过程↓所有 Block 写入完成。
2026-09-08 14:56:44
436
原创 PyTorch 手写数字识别学习笔记
PyTorch 提供了比较完整的深度学习开发工具。通过Dataset和DataLoader,可以方便地读取数据;通过nn.Module,可以灵活地构建模型;通过自动微分机制,可以自动计算梯度;通过优化器,可以快速完成参数更新。MNIST 手写数字识别虽然是一个基础任务,但它包含了深度学习训练的完整流程。从数据准备到模型测试,每一步都对应着实际的机器学习思想。这次学习让我认识到,深度学习并不是简单地调用一个模型,而是需要理解数据如何进入网络、参数如何变化、损失如何下降,以及模型为什么能够逐渐提高准确率。
2026-09-06 20:12:38
225
原创 OpenCV 学习实践:从人脸检测到人脸识别
通过这次 OpenCV 实践,我对人脸检测和人脸识别有了更清晰的理解。人脸检测主要负责定位,结果是图像中的矩形框;微笑检测是在脸部区域中寻找符合笑容特征的局部区域;人脸识别则需要利用带标签的训练图片,判断输入人脸与哪个类别更加相似。整个项目的基本流程可以总结为:读取图像,灰度化处理,加载分类器,检测人脸,提取人脸区域,训练识别模型,预测测试图像,显示识别结果。
2026-09-06 19:48:38
463
原创 从零理解 PyTorch:用神经网络完成 MNIST 手写数字识别
PyTorch 为深度学习提供了非常灵活和方便的开发方式。通过Dataset和DataLoader,可以快速准备训练数据;通过继承nn.Module,可以自由设计网络结构;通过自动微分机制,可以自动完成梯度计算;通过优化器,可以方便地更新模型参数。MNIST 手写数字识别虽然是一个入门案例,但它完整展示了深度学习项目的基本流程。理解这个案例之后,再去学习卷积神经网络、目标检测、图像分割和自然语言处理,就会有更加扎实的基础。
2026-09-03 19:15:06
488
1
原创 深度学习:torch实战,使用神经网络识别手写数字
今天通过 MNIST 手写数字识别,完整体验了 PyTorch 的基本训练流程。首先使用加载数据,再通过ToTensor()将图片转换为 Tensor,使用DataLoader按批次读取数据。模型部分使用了三个全连接层,中间加入 Sigmoid 激活函数,将 28×28 的图片转换为 10 个数字类别的预测结果。训练时,通过前向传播计算预测值,再使用交叉熵损失衡量误差,最后通过反向传播和 Adam 优化器更新模型参数。
2026-08-28 21:21:48
632
4
原创 SQL 快速入门:题目单知识点精炼总结
IS NULL、聚合函数、GROUP BY、HAVINGJOIN、LEFT JOIN、子查询、UNIONCASE WHEN、IFNULL、日期函数、字符串函数REGEXP、窗口函数、排名、累计统计FROM/JOIN→ WHERE→ GROUP BY→ HAVING→ SELECT→ ORDER BY→ LIMIT掌握这些常用语法后,再结合具体业务理解题目要求,SQL 查询题基本就能形成稳定的解题思路。
2026-08-27 20:54:10
355
原创 机器学习项目实战:缺失值填充、随机森林与网格搜索
今天的课程围绕矿物分类项目,完成了从数据预处理到模型评价的重要步骤。首先统计各特征的缺失情况,然后依次使用线性回归和随机森林预测空缺数据,并分别处理训练集和测试集。完成填充后,再将数据保存为不同版本,使用多种分类模型比较效果,最后通过网格搜索寻找更合适的模型参数。这次学习让我认识到,数据预处理并不是模型训练前无关紧要的准备工作。缺失值采用平均数、线性回归还是随机森林填充,可能直接改变后续模型的分类效果。真正可靠的处理方案,应当通过测试集指标和交叉验证结果进行选择,而不是只关注数据是否已经补齐。
2026-08-27 19:38:41
353
原创 OpenCV实战学习记录:图像拼接与答题卡识别
8月25日的课程主要学习了两个 OpenCV 实战项目:图像拼接和答题卡识别。结合视频中的代码讲解,我对 SIFT 特征匹配、透视变换、轮廓检测、二值化和掩膜运算等内容有了更具体的认识。这次课程让我感受到,计算机视觉项目通常不是依靠某一个函数完成的,而是将多个图像处理步骤组合起来,最终实现完整功能。
2026-08-26 21:05:11
539
原创 深度学习入门:从神经元、损失函数到反向传播
人工智能、机器学习和深度学习之间存在一定的包含关系:人工智能└── 机器学习└── 深度学习人工智能是一个比较大的概念,目标是让计算机具备类似人类的分析、判断和决策能力。机器学习是实现人工智能的一种方法。它不需要程序员把所有规则都写出来,而是通过数据训练模型,让模型自己学习规律。深度学习则是机器学习中的一个重要方向,它以人工神经网络为基础,通过构建多层网络自动提取数据特征。例如,在传统图像识别中,可能需要人工提取边缘、颜色和纹理等特征。
2026-08-24 19:41:37
579
原创 第一篇:OpenCV特征检测与SIFT特征匹配
本篇学习了 OpenCV 中的特征检测和特征匹配。Harris 算法可以检测图像中的角点,适合寻找局部灰度变化明显的位置。SIFT 不仅可以检测关键点,还可以计算特征描述符,使图像在发生缩放、旋转后仍然能够进行匹配。两张图片的匹配流程可以概括为:1,读取图片2,检测关键点3,计算描述符4,使用FLANN寻找近邻5,通过比例测试筛选6,统计有效匹配点数量这些知识为后面的指纹验证和指纹识别打下了基础。
2026-08-23 21:28:58
392
2
原创 OpenCV实战——透视变换与身份证号码模板识别
本篇主要学习了透视变换和模板匹配的实际应用。透视变换可以将倾斜的发票、身份证和纸张矫正成正面图像。它的关键是找到目标区域的四个角点,并按照左上、右上、右下、左下的顺序排列,然后使用和完成变换。模板匹配可以通过比较图像相似度,在图片中找到目标区域。课程中使用数字模板识别身份证号码,主要步骤是:1,准备数字模板2,模板二值化3,查找每个数字轮廓4,定位身份证号码5,统一数字大小6,逐个匹配0到97,得到识别结果。
2026-08-21 20:52:21
439
原创 OpenCV图像增强基础——图像金字塔、直方图与特征提取
本篇学习了 OpenCV 的图像增强和特征提取基础。图像金字塔可以对图像进行多尺度处理;直方图可以分析像素分布;掩膜可以选择局部区域;直方图均衡化可以增强对比度;角点和 SIFT 可以提取图像中的关键特征;图像旋转则可以调整图片方向。这些操作虽然看起来比较基础,但它们经常作为后续图像识别任务的预处理步骤。只有先把图片处理好,后面的轮廓检测、模板匹配和 OCR 识别才能取得更好的效果。
2026-08-21 20:43:27
507
原创 矿物数据缺失值处理:从数据清洗到均值、中位数和众数填充
本次实验围绕矿物数据缺失值处理展开,完整经历了数据读取、异常值清洗、标签编码、训练集划分、缺失值填充和文件保存等步骤。CCA 方法最简单,但会删除数据;均值填充适合分布较均匀的数据;中位数填充更适合含有异常值的数据;众数填充则适合类别型或离散型数据。在机器学习中,缺失值处理不能只追求代码能够运行,还要注意数据处理流程是否合理。训练集和测试集必须分开,填充值和标准化参数都应该从训练集计算,然后应用到测试集。这样才能避免数据泄漏,使模型评估结果更加真实。
2026-08-20 21:02:07
432
原创 把 DeepSeek Harness 打包成类似 Codex 的 Windows 桌面应用:Electron、一键启动、插件管理和动态壁纸
最近我尝试把 DeepSeek Harness 做成一个类似 Codex 的 Windows 桌面程序。最终实现的功能包括:一键启动 DeepSeek Harness独立的 Electron 桌面窗口开机自动启动桌面快捷方式插件管理界面Wallpaper Engine 动态壁纸程序、插件、缓存和会话尽量存放在 D 盘不再需要每次手动打开浏览器地址本文记录完整的实现思路、目录结构、打包方法,以及过程中遇到的 pnpm、Electron 和动态壁纸问题。
2026-08-19 17:39:10
800
原创 MySQL 进阶查询:聚合函数、分组查询与多表连接
IF和CASE:每一行应该显示什么结果?聚合与分组:每一组应该计算什么结果?多表连接:数据应该从哪些表中取得?SUMAVGMAXMIN和COUNT用于汇总数据;GROUP BY决定按照什么规则分组;WHERE在分组前筛选,HAVING在分组后筛选。多表连接中,内连接只保留匹配成功的数据,左连接保留左表全部数据,右连接保留右表全部数据。等值连接按照相等条件匹配,非等值连接可以按照范围匹配,自连接则用于处理员工与领导这种同表关系。
2026-08-18 19:29:28
417
原创 MySQL 入门笔记:DQL 基础查询与常用函数
今天学习的核心是SELECT查询。SELECT 字段FROM 表WHERE 条件ORDER BY 排序规则;在此基础上,又学习了比较运算、逻辑运算、BETWEENINLIKE、空值判断以及排序。函数部分则包括字符串处理、数值计算和日期格式转换。初学 SQL 时,最容易出现的问题包括:忘记字段之间的逗号、把字符串拼接写成加号、使用= NULL判断空值,以及没有注意AND和OR的优先级。练习时可以先用自然语言描述需求,再分别确定查询表、字段、条件和排序方式,最后组合成完整 SQL。
2026-08-17 21:12:17
690
原创 机器学习文本分类入门:从数据清洗到中文评论词向量转换
今天学习的重点并不是某一个模型,而是理解“文本如何进入机器学习模型”。文字 → 清洗 → 分词 → 词表 → 数字向量 → 分类模型通过统计词语出现次数建立词频向量,则会进一步降低常见词的权重。可以加入二元词组和三元词组,让模型保留更多局部语义。多项式朴素贝叶斯实现简单、训练速度快,是文本分类的优秀入门模型。但在实际项目中,不能只看准确率,还要检查类别是否平衡,并重点观察少数类别的精确率、召回率和 F1 值。另外,数据清洗会直接影响模型效果。
2026-08-14 21:09:29
219
原创 第二篇:Linux 入门第二天——用户权限、文件查找、磁盘管理、进程与软件安装
第二天的重点已经从简单文件操作进入了基础系统管理。用户身份:whoami、id、su用户管理:useradd、passwd、userdel用户组:groupadd、usermod、groups权限管理:chmod、chown、chgrp文件查找:find、locate、which、whereis压缩打包:tar磁盘查看:df、du、lsblk、fdisk进程管理:ps、top、kill软件安装:yum、rpm、源码编译环境加载:source学习这些命令时,要特别注意权限和操作范围。
2026-08-14 19:27:51
544
原创 第一篇:Linux 入门第一天——系统安装、目录结构、Vim 与常用命令
第一天的重点,是建立对 Linux 操作方式和目录结构的基本认识。常用命令可以整理为:查看位置:pwd查看目录:ls切换目录:cd创建目录:mkdir创建文件:touch复制文件:cp移动文件:mv删除文件:rm查看内容:cat、less、head、tail编辑文件:vim查看日期:date查看帮助:man、--helpLinux 命令通常遵循以下结构:命令 选项 参数其中ls是命令,-lh是选项,/home是操作对象。
2026-08-13 20:35:39
330
原创 机器学习实战:DBSCAN 聚类与 TF-IDF 文本搜索
在监督学习中,训练数据通常带有标签。例如:身高、体重 → 男性或女性房屋面积 → 房屋价格邮件内容 → 垃圾邮件或正常邮件而聚类属于无监督学习。它没有提前给出标签,算法需要根据数据之间的相似程度,自动把相近的数据分到同一组。年龄、收入、消费金额第1组:年轻、收入较低、消费较少第2组:中年、收入中等、消费稳定第3组:收入较高、消费金额较大DBSCAN 就是一种常见的聚类算法。
2026-08-12 09:32:18
699
原创 OpenCV 入门:轮廓检测、模板匹配与物体跟踪
轮廓可以理解为图像中物体的边界。例如,在一张花朵图片中,我们可能希望找到花朵的外部边界;在一张手机图片中,我们可能希望找到手机的矩形轮廓。轮廓检测常用于:1,物体边界提取;2,目标定位;3,形状识别;4,图像分割;5,物体面积和周长计算;6,轮廓近似。轮廓检测一般要求输入图像是二值图像,也就是像素值主要为 0 和 255。今天学习了 OpenCV 中非常实用的三个方向。轮廓检测需要先得到合适的二值图,再使用查找轮廓。通过可以绘制轮廓,通过和可以计算面积和周长,通过和。
2026-08-07 21:11:25
201
原创 Python 爬虫入门:Requests 请求与 XPath 数据解析
爬虫程序可以自动访问网页,并从网页中提取我们需要的信息。获取新闻标题;抓取商品名称和价格;提取电影评分;下载图片;统计网页中的链接;获取公开网页中的表格数据。浏览器访问网页时,背后也会向服务器发送 HTTP 请求。服务器处理请求后,会返回 HTML、JSON、图片或其他内容。Python 爬虫做的事情,就是用代码模拟这种请求,再解析服务器返回的数据。准备目标网址↓使用 requests 发送请求↓获取 response 响应对象↓读取 HTML 内容↓。
2026-08-05 16:07:30
1300
原创 OpenCV 计算机视觉:图像膨胀与腐蚀,图像边缘检测
图像形态学是一类基于图像形状的处理方法,通常需要使用一个小矩阵扫描图像。这个小矩阵叫作结构元素,也可以理解为形态学运算中的kernel。(3, 3),np.uint8这里创建了一个3×31 1 11 1 11 1 1结构元素的大小和形状会影响处理结果:结构元素越大,处理效果通常越明显;迭代次数越多,腐蚀或膨胀程度越明显;不同形状的结构元素可能得到不同结果。常见的形态学操作包括:腐蚀;膨胀;开运算;闭运算;形态学梯度;顶帽;黑帽。
2026-08-04 20:48:29
554
原创 机器学习实战:决策树训练、回归树、随机森林与垃圾邮件识别
今天的课程从单棵决策树逐步学习到了随机森林,并完成了客户流失预测、血压数值预测和垃圾邮件识别等练习。决策树通过特征不断划分数据,结构直观且容易解释,但容易出现过拟合。通过限制树的深度、节点划分样本数和叶节点样本数,可以控制模型复杂度。回归树与分类树的结构相似,但分类树输出类别,回归树输出连续数值。评价回归模型时,可以使用 MSE、RMSE、MAE 和 R²。随机森林会训练多棵具有差异的决策树,再通过投票得到分类结果。它利用随机样本和随机特征降低单棵决策树的不稳定性,通常拥有更好的泛化能力。
2026-08-03 21:23:14
586
原创 OpenCV 计算机视觉入门:从图像读取到平滑降噪
通过这两天的课程,我们建立了 OpenCV 图像处理的基础认识。OpenCV 读取的图片是 NumPy 数组,彩色图片默认按照 BGR 顺序保存。通过数组切片可以提取 ROI 和颜色通道,也可以直接修改局部像素。视频本质上是连续的图片,可以通过循环逐帧读取和处理。图像加法、加权融合、边界填充和缩放则属于常见的基础操作。阈值处理可以根据像素大小分割图像,平滑滤波可以减少噪声。其中,均值滤波简单直接,高斯滤波效果自然,中值滤波适合椒盐噪声,双边滤波则能够尽量保护边缘。
2026-08-03 15:06:46
1240
原创 Python 入门第七天:面向对象进阶与正则表达式
正则表达式是一种用于匹配字符串的规则。例如,判断一个字符串是否是手机号、从文章中提取邮箱地址、查找所有数字,都可以使用正则表达式。Python 中使用reimport re今天主要学习了两部分内容。__init__()用于初始化对象;__str__()可以定义对象的显示形式;__lt__()__le__()和__eq__()可以定义对象比较规则;封装可以保护对象内部数据;继承可以复用父类代码;super()可以调用父类方法;多态让不同对象使用相同接口完成不同操作;
2026-08-02 18:58:52
146
原创 逻辑学习:交叉验证,下采样,过采样和决策树
今天的学习进入了机器学习的实战部分,主要学习了五个内容:交叉验证的代码实现,下采样,过采样,决策树以及决策树剪枝。在机器学习中,我们要学会如何正确评估模型,如何处理类别不平衡,以及如何避免过拟合之类的。
2026-07-31 20:19:01
721
原创 Python 入门第六天:异常、模块、包与面向对象基础
程序运行过程中出现的错误,通常称为异常。number = int(input("请输入一个数字:"))输入"Python"时,无法转换为整数,会出现ValueError;输入0时,除数不能为零,会出现。异常信息可以帮助我们找到错误的位置和原因。异常并不完全等于程序中的 bug,例如文件不存在、用户输入错误和网络中断,都可能产生异常。我们的目标不是让程序永远不出现异常,而是提前考虑可能发生的问题,并进行合理处理。自定义模块就是自己编写的.py文件。假设。
2026-07-31 15:30:37
161
原创 从线性回归到逻辑回归:一个初学者的机器学习入门笔记
线性回归用于预测连续数值;fit()用于训练模型,predict()用于进行预测;均方误差越小,通常说明预测误差越小;R² 用于衡量模型对数据变化的解释能力;逻辑回归虽然名字中有“回归”,实际主要用于分类;Sigmoid 函数可以把结果转换到 0 和 1 之间;分类模型不能只看准确率;精确率、召回率、F1 和 AUC 可以从不同角度评价模型;L1 和 L2 正则化可以限制模型复杂度;参数C越小,正则化越强;交叉验证可以让模型评价更加稳定;
2026-07-30 21:13:22
319
原创 Python 入门第五天:函数进阶,文件读取,写入,追加
函数可以通过逗号返回多个值,也可以使用位置参数、关键字参数、默认参数和不定长参数接收数据。位置参数依赖参数顺序;关键字参数使用“参数名=值”传递;默认参数可以提供默认值;*args把位置参数收集为元组;**kwargs把关键字参数收集为字典;lambda适合定义简单的临时函数。文件操作方面,"r"用于读取,"w"用于覆盖写入,"a"用于追加写入。读取文件可以使用read()readline()或for循环。实际编程中推荐使用with open,它可以在操作完成后自动关闭文件。
2026-07-30 17:05:21
221
原创 Python 入门第四天:列表、元组、字符串、集合与字典
列表可以保存多个数据,并且列表中的数据可以修改。names = ["小明", "小红", "小刚"]不过,实际开发中通常会让一个列表保存含义相近的数据,以便阅读和处理。list1 = []列表中的每一个数据都叫作元素。数据容器是 Python 中非常重要的基础知识。列表有序、可重复并且可以修改;元组有序但不能修改;字符串用于保存文本;集合中的元素不能重复;字典通过键值对保存数据。
2026-07-29 14:00:42
596
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅