自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(52)
  • 收藏
  • 关注

原创 【机器学习】支持向量机

支持向量机(SVM)是一种线性分类器,其核心是寻找最优超平面以最大化分类间隔。SVM通过拉格朗日乘子法将原始优化问题转化为对偶问题,并利用支持向量确定分类边界。SMO算法通过每次优化两个拉格朗日乘子来高效求解对偶问题。SVM的优势在于能够处理非线性分类问题(通过核技巧)且具有较好的泛化能力。

2026-02-12 22:14:05 694

原创 【机器学习】决策树

决策树是一种基于"分而治之"策略的分类方法,通过递归划分属性构建树结构,包含三种停止条件。常用的划分标准包括信息增益(选择增益最大的属性)、增益率(先筛选高于平均增益再选最高增益率)和基尼指数(反映数据纯度)。为防过拟合,采用预剪枝或后剪枝策略。处理缺失值时,采用样本赋权方法,先计算有值数据的信息增益,再按权重划分缺失样本。这些方法使决策树能有效处理不完整数据并提高泛化能力。

2026-02-10 09:43:08 480

原创 【机器学习】10_特征选择与稀疏学习

本文介绍了特征选择的基础概念和主流方法。特征选择旨在从特征集合中筛选出与任务相关的子集,分为过滤式、包裹式和嵌入式三类。过滤式方法如Relief通过统计量评估特征重要性;包裹式方法如LVW直接以学习器性能为准则,但计算成本高;嵌入式方法如L1正则化将特征选择融入训练过程。文章还分析了稀疏学习、字典学习、压缩感知和矩阵补全等技术,其中L1正则化通过几何特性和软阈值算子实现稀疏解,字典学习通过KSVD算法优化,压缩感知利用信号稀疏性进行高效采样,矩阵补全则通过核范数近似求解缺失值。

2026-01-24 01:16:58 342

原创 【机器学习】09_强化学习

强化学习(Reinforcement Learning, RL)研究智能体(Agent)如何在复杂环境中通过。:当前状态的价值 = (当前动作的即时奖赏) + (折扣后的未来状态价值)。它揭示了值函数在时间上的相关性。TD 学习克服了蒙特卡罗法必须等整个轨迹结束才能更新的缺点,实现增量式更新。这是大语言模型(如 ChatGPT)对齐的关键。值函数用于评估一个状态或动作的“好坏”。针对搜索空间巨大、奖赏函数难设计的问题。强化学习常用 MDP 四元组。

2026-01-23 02:38:31 372

原创 【机器学习】08_聚类

摘要:本文系统介绍了聚类分析的关键技术,包括性能度量、距离计算和经典算法。性能度量分为外部指标(如JC、FMI)和内部指标(如DBI、DI)。距离计算涵盖闵可夫斯基距离(含曼哈顿和欧氏距离)及马氏距离。四大经典算法包括:k-means(原型聚类)、LVQ(监督聚类)、GMM(概率模型)和DBSCAN(密度聚类)。层次聚类通过合并/拆分构建树状结构,采用单/全/均链接计算类间距离。各方法在适用场景、计算复杂度和结果解释性上各具特点。

2026-01-22 01:17:01 380

原创 【机器学习】07_降维与度量学习

贝叶斯最优分类器是理论上的性能上限,这个结论从数学上证明了即便只看一个邻居,kNN 的效果也是有底线保证的。流形在局部具有欧氏空间的性质(可计算距离)当数据在原始空间中不是线性可分或映射关系非线性时,PCA 效果较差 21。方法,其工作机制非常直观:对于给定的测试样本,在训练集中找到距离最近的。PCA 是最常用的线性降维方法。,通过非线性映射将数据映射到高维特征空间,再在该空间执行 PCA。度量学习的本质是:与其通过降维寻找合适空间,不如直接。在高维空间下,数据样本会变得极其稀疏 8。

2026-01-21 20:28:09 573

原创 【机器学习】06_集成学习

集成学习通过组合多个学习器提升性能,主要分为同质(基学习器)和异质(组件学习器)集成。Boosting类方法(如AdaBoost、GBDT)通过串行优化降低偏差,调整样本权重或拟合梯度;Bagging和随机森林则通过并行采样降低方差,引入双重随机性增强多样性。Stacking采用元学习器自动组合初级学习器结果。集成效果依赖于个体学习器的准确性和多样性,可通过数据、属性、输出或参数扰动增强多样性。不同方法适用于不同场景:Boosting适合欠拟合,Bagging/RF适合过拟合,Stacking适合复杂任务。

2026-01-20 00:41:22 642

原创 【机器学习】05_决策树

本文介绍了决策树的基本概念、核心算法及其应用。决策树是一种监督学习方法,通过递归划分数据集构建树形结构,包含根节点、内部节点和叶节点。重点解析了三种经典算法:ID3基于信息增益,C4.5引入增益率解决偏好问题,CART使用基尼指数并支持回归任务。为防止过拟合,讨论了前剪枝和后剪枝策略,以及连续属性和缺失值的处理方法。最后对比了三种算法的特性差异,包括度量指标、树结构和适用任务类型。决策树因其直观性和广泛适用性,成为机器学习中的重要方法。

2026-01-18 22:37:15 567 1

原创 【机器学习】04_支持向量机_拉格朗日对偶法

分离超平面0.5x10.5x2−200.5x1​0.5x2​−2016决策函数fxsign0.5x10.5x2−2fxsign0.5x1​0.5x2​−217物理意义:这两个点都是支持向量(因为α∗0α∗0)18181818。超平面正好位于33(3,3)33和11(1,1)11连线的中垂线上。我们根本没有直接去解复杂的www方程组,而是通过解简单的α\alphaα。

2026-01-17 16:52:21 583

原创 Notes About Technical Writing

本文摘要总结了学术论文写作的关键要点,包括写作目的、论文分类、规范表达和撰写格式。学术论文分为学术性论文和技术性论文,需体现创新性;学位论文则要求形成自己的论点。撰写格式涵盖题名、署名、摘要、关键词、引言、正文、结论等部分,强调准确性、规范性和逻辑性。表达规范涉及层次标题、量符号、计量单位、数字书写和图表处理等细节要求,确保论文的科学性和可读性。全文旨在为学术写作提供系统指导,帮助研究者规范表达研究成果。

2026-01-08 15:14:20 630

原创 【机器学习】03_贝叶斯决策

本文系统梳理了贝叶斯分类器的核心理论与算法。首先介绍了贝叶斯决策论的基本公式和两种决策准则(最小错误率与最小风险)。重点讲解了朴素贝叶斯分类器的原理、计算步骤(包括先验概率和条件概率的估计)以及拉普拉斯修正方法。对比了极大似然估计和贝叶斯估计的区别,并简要说明了EM算法处理隐变量的思路。最后列举了半朴素贝叶斯和贝叶斯网等拓展概念。文章提供了完整的贝叶斯分类知识框架,特别强调了考试中可能出现的计算题和概念辨析题。

2026-01-08 11:47:56 492

原创 【机器学习】02_线性模型

本文系统介绍了机器学习中的线性模型,包括线性回归、对数几率回归和线性判别分析三大核心算法。重点讲解了线性回归的最小二乘法求解和L1/L2正则化特性,对比了岭回归与Lasso回归的几何意义和应用场景。详细推导了对数几率回归的sigmoid函数和交叉熵损失函数,并解释其优于均方误差的原因。此外,阐述了LDA算法的类内散度和类间散度矩阵,以及多分类策略和类别不平衡处理方法。全文通过数学公式推导、几何直观解释和对比表格,为理解线性模型提供了全面的理论基础。

2025-12-31 18:04:02 895

原创 【机器学习】01_模型选择与评估

摘要 本文系统梳理了机器学习模型选择与评估的核心理论和方法。主要内容包括:(1) VC维理论,阐释模型复杂度与样本量的关系,指出VC维反映模型学习能力,泛化误差受其约束;(2) 偏差-方差分解,将误差分解为偏差(拟合能力)、方差(稳定性)和噪声(不可约减误差),分析欠拟合与过拟合的权衡;(3) 模型评估方法,比较留出法、k折交叉验证和自助法的优缺点;(4) 性能度量指标,详细说明查准率、查全率、F1值、ROC曲线和AUC的计算方法及其意义。这些内容是机器学习考试和实际应用中的重点,需要掌握相关公式和计算技巧

2025-12-28 17:27:14 737

原创 【计算机视觉】09_分割

图像分割是将图像划分为具有相似特征的区域,广泛应用于医学影像、遥感等领域。传统方法包括基于边缘(如Canny算子)、区域(如大津法)和形态学(如分水岭算法)的分割技术。深度学习时代,FCN通过转置卷积和跳跃连接实现了端到端语义分割,U-Net采用编码器-解码器结构优化医学图像分割,DeepLab则引入空洞卷积和ASPP增强多尺度特征提取。2023年提出的SAM模型通过提示工程实现了零样本通用分割。核心技术进步体现在从分类到像素级预测的转变,关键技术包括转置卷积和空洞卷积。

2025-12-28 03:27:24 442

原创 【计算机视觉】08_识别分类

识别分类

2025-12-25 17:42:28 760

原创 【计算机视觉】07_几何变换

摘要:本文介绍了图像形变与几何变换的类型,包括平移、刚体、相似、仿射和投影变换,并重点分析了单应性变换的特点及其在图像拼接中的应用。针对特征匹配中的误匹配问题,详细阐述了RANSAC算法的流程及其关键参数(如最少样本数s)对迭代次数的影响。通过数学推导说明,随着变换复杂度增加(s增大),RANSAC所需迭代次数呈指数级增长。最后还简要提及了几何形变中的反向变形方法。

2025-12-24 20:11:40 1094 1

原创 【计算机视觉】06_描述子

摘要: 特征描述子是将图像关键点转换为向量以实现跨图像匹配的关键步骤。理想描述子需具备旋转、缩放、光照不变性和可判别性。常见方法包括简单图像块、MOPS(多尺度定向补丁)和SIFT(尺度不变特征变换)。SIFT通过梯度直方图构建128维向量,具有强鲁棒性。匹配时采用L2距离和比值测试(最佳匹配与次优匹配的距离比)来剔除歧义匹配。算法性能通过ROC曲线评估,曲线下面积(AUC)越大,匹配效果越好。本课程重点介绍了SIFT描述子的构建与匹配策略。

2025-12-24 11:06:01 351

原创 【计算机视觉】05_不变性

本文探讨了特征检测在几何变换(如尺度变化)和光学变换下的稳定性问题,重点介绍了具有尺度不变性的Blob检测方法。首先区分了不变性与等变性概念:特征需对光学变换(光照)保持属性不变,对几何变换(移动、旋转)保持位置同步变化。分析了Harris检测器在平移和旋转下的等变性,以及尺度变化下的局限性。为解决尺度问题,提出了基于高斯拉普拉斯(LoG)的Blob检测方法,LoG算子通过“墨西哥草帽”形状匹配亮斑点特征。进一步引入尺度归一化(乘以σ²)来消除尺度对响应幅值的影响,确保不同尺度特征的公平比较。最后指出特征尺

2025-12-22 19:48:15 1074

原创 【计算机视觉】04_角点

本文探讨了计算机视觉中局部特征检测的核心问题及其应用。重点介绍了Harris角点检测器的数学原理,通过分析二阶矩矩阵H的特征值实现角点分类,并提出基于R评分的角点检测方法。文章还对比了简单窗口与高斯加权窗口的效果,指出后者通过中心加权机制提高了旋转不变性和稳定性。这些技术在图像配准、3D重建、目标识别等领域具有广泛应用价值。

2025-12-20 08:43:48 865

原创 【计算机视觉】03_重采样

本文探讨了图像缩放中的下采样与上采样技术。下采样时,朴素方法(直接丢弃行列)会导致走样问题,解决方案是采用高斯预滤波(低通滤波)以降低高频信号,满足奈奎斯特采样定理。上采样则需通过插值重建连续图像函数,常见方法包括:最近邻插值(简单但质量差)、双线性插值(1D线性扩展到2D)和双三次插值(效果更优)。此外,多帧超分辨率(如Google Pixel 3)利用多图对齐提升放大质量,而几何变形中反向变形也依赖插值避免空洞问题。这些技术共同解决了缩放过程中的走样和细节损失问题。

2025-12-20 00:41:28 644

原创 【计算机视觉】02_边缘

本文介绍了图像边缘检测的基本原理与方法。边缘定义为图像强度函数变化迅速的区域,表现为阶跃型或屋顶型变化。边缘检测通过计算图像导数实现,一阶导数极值点和二阶导数过零点分别对应边缘位置。为抑制噪声影响,需先进行高斯平滑处理。Canny边缘检测算法包含四个步骤:高斯滤波降噪、计算梯度幅值和方向、非极大值抑制细化边缘、双阈值处理连接边缘。算法性能受σ参数影响,大σ检测大尺度边缘,小σ捕捉精细边缘。在尺度空间中,边缘随σ增大可能移动或合并,但不会分裂。

2025-12-19 20:16:03 710

原创 【计算机视觉】01_滤波器

图像滤波通过改变像素值实现图像增强和信息提取,核心原理是利用像素间的空间相关性。低通滤波(如均值滤波)通过平均像素值去除噪点,但会使图像变模糊;高通滤波(如Sobel算子)通过检测像素差异提取轮廓;锐化则是将边缘信息叠加到原图以增强细节。这些操作本质都是通过分析像素与邻域的关系来实现不同效果:去噪让像素趋近邻域,轮廓检测寻找像素差异,锐化则放大这种差异。卷积运算通过滑动核矩阵与图像矩阵计算实现这些功能。

2025-12-19 00:03:57 1282

原创 拒绝 “update“:如何写出让同事为你点赞的 Git Commit 记录

本文介绍了如何撰写专业的 Git Commit 记录,重点推荐了"约定式提交"规范。文章首先讲解了基本的暂存和提交操作,然后详细说明了提交信息的标准格式:类型(范围):主题+正文+脚注,并列举了常见类型如feat、fix等。通过正反示例对比,展示了优质提交记录的特点。最后提出三个黄金法则:原子性提交、善用amend和团队语言统一。作者强调,规范的提交记录虽然多花30秒,但能显著提升团队协作效率,是开发者专业素养的体现。

2025-12-01 00:40:12 832

原创 【数据结构】二叉树的数组表示推导

本文介绍了用数组存储完全二叉树的方法。树按层存储,第k层有2^k个节点。节点位置可由层数k和偏移量m计算得出:(2^k-1)+m。推导出父节点i与子节点位置的关系:左子节点为2i+1,右子节点为2i+2。这种存储方式便于通过索引快速定位父子节点。

2025-09-30 15:20:02 473

原创 neovim复制提示clipboard:no provider

摘要:Neovim在WSL中提示"clipboard: no provider"时,需安装win32yank.exe解决剪切板支持问题。方法:从GitHub下载win32yank.exe,放入~/.local/bin目录,并确保该路径在环境变量中。完成后通过:checkhealth验证剪切板功能是否可用。

2025-09-20 00:29:56 397

原创 解决wsl访问失败问题:curl: (7) Failed to connect to xx.xxx.xxx.xxx port 7899: No route to host

摘要:WSL环境下无法访问GitHub的问题排查与解决方案。问题表现为DNS解析失败,通过取消代理变量设置、检查DNS配置、测试网络连接等步骤,最终通过修改WSL的DNS配置(使用8.8.8.8和1.1.1.1公共DNS)并关闭自动生成resolv.conf功能,成功恢复网络访问。关键操作包括编辑/etc/wsl.conf、重建resolv.conf文件并重启WSL。

2025-09-18 23:32:56 602

原创 remote: Invalid username or token. Password authentication is not supported for Git operations

【Git操作身份验证失败解决方案】文章介绍了在GitHub禁用密码验证后,如何配置SSH密钥进行推送。步骤包括:1)生成ED25519算法SSH密钥;2)在GitHub添加公钥;3)将仓库地址修改为SSH格式;4)测试连接;5)首次推送时使用-u参数建立分支关联。该方法可避免每次操作都需输入凭证,且ED25519算法比传统RSA更安全高效。配置成功后仅需简单命令即可完成后续推送操作。

2025-09-04 20:53:06 6026

原创 【初识数据结构】CS61B中的基数排序

本文介绍了CS61B课程中的基数排序算法。基数排序通过牺牲内存空间换取更高效率,在某些场景下性能优于归并排序和快速排序。文章首先讲解计数排序原理及其时间复杂度θ(N),强调其适用于元素编号连续的情况。随后对比计数排序与快速排序的适用场景,指出当元素种类k和字母表大小R较大时,计数排序会消耗较多空间。基数排序部分详细介绍了LSD(最低位优先)和MSD(最高位优先)两种实现方式,分析它们的时间复杂度θ(W(N+R))及稳定性差异。最后比较了基数排序与归并排序的性能差异:基数排序在数据量大且字符串相似时表现更优,

2025-07-29 17:20:23 974

原创 【初识数据结构】CS61B中的快速排序

本文介绍了CS61B中的快速排序算法。算法流程包括选取基准值、分区和递归处理子数组。时间复杂度分析显示,最好情况为θ(NlogN),最坏情况为θ(N²)。文章对比了快速排序与归并排序的性能,指出尽管快速排序最坏情况较差,但平均性能更优。通过10%分解案例证明即使不平衡分解仍保持O(NlogN)复杂度。快速排序与二叉搜索树(BST)的比较揭示了二者在比较序列上的本质相同性。最后提出了避免最坏情况的四种策略:随机性、智能选择基准、递归深度检查和预处理,并比较了不同排序算法的性能特点。

2025-07-25 23:14:50 1009

原创 【初识数据结构】CS61B 中的归并排序和选择排序

摘要:本教程介绍了两种排序算法:归并排序和插入排序。归并排序通过分治策略将数组不断分割并合并,时间复杂度为O(NlogN),具有良好的并行性能。插入排序则通过逐个元素比较和交换实现,时间复杂度在最好情况下为O(N),最坏情况下为O(N^2),特别适合已部分排序的数组。两种算法各有优势,适用于不同场景。

2025-07-24 23:55:26 997

原创 【Windows命令手册】Windows中的常用命令,并与 Linux 做比较

本文对比整理了Windows(PowerShell)与Linux(Bash)常用命令,涵盖文件操作、查找、压缩、软件管理、系统进程和网络等功能。Windows命令通常更直观但较长,如Get-ChildItem对应ls,Remove-Item对应rm;Linux命令更简洁,如cp、mv等。两者都支持多命令串联(用;分隔)和类似功能,如ping、netstat等。差异主要体现在语法和工具选择上,如Windows用taskkill结束进程,Linux用kill。该对比为跨平台用户提供了快速参考。

2025-07-23 23:09:39 465

原创 【初识数据结构】CS61B 中的堆以及堆排序算法

摘要:本文介绍了CS61B课程中的堆(heap)数据结构及其应用。堆是一种完全二叉树,满足最小堆或最大堆性质,能高效实现优先队列操作。文章详细讲解了堆的插入(上浮)和删除(下沉)操作,以及用数组表示堆的方法。重点分析了堆排序算法,通过就地构造最大堆和不断将最大值交换到数组末尾实现排序,将时间复杂度优化至O(N logN)。相比选择排序,堆排序在时间复杂度上有显著提升,且空间复杂度仅为O(1)。

2025-07-22 23:53:57 851

原创 【初识数据结构】CS61B中的最小生成树问题

本文介绍了最小生成树(MST)的概念及其两种经典算法。MST是指连通无向图中连接所有顶点且边权总和最小的树。基于割边属性,提出了通用MST查找方法。Prim算法从随机顶点开始,每次选取连接已选顶点和未选顶点的最短边,通过优先队列进行优化。Kruskal算法则按边权排序,使用并查集避免成环,逐步构建MST。两种算法均能保证找到最优解,但实现方式和适用场景有所不同。

2025-07-21 19:36:09 2410

原创 【windows 终端美化】Windows terminal + oh-my-posh 来美化命令行终端

本文介绍了如何通过Windows Terminal和oh-my-posh美化命令行终端。主要内容包括:Windows Terminal的安装方法;通过winget或应用商店安装oh-my-posh;配置$PROFILE文件加载主题;安装Nerd字体解决图标显示问题;以及终端窗口的个性化设置(毛玻璃效果、背景图片、光标样式等)。还提供了语法建议模块和语法高亮功能的配置方法,帮助用户打造更美观实用的命令行环境。

2025-07-20 23:30:55 1350

原创 【初识数据结构】CS61B中的基本图算法:DFS, BFS, Dijkstra, A* 算法及其来历用法

本文总结了CS61B课程中关于图中路径查找的几种核心算法:DFS、BFS、Dijkstra和A算法。DFS采用深度优先策略,适合处理细长图结构;BFS采用广度优先策略,适合处理茂盛图结构。Dijkstra算法通过优先队列实现带权重图的最短路径查找,但无法处理负权重边。针对大规模图,A算法通过引入启发式函数避免不必要的遍历,提高搜索效率。文章还指出DFS和BFS的内存消耗问题(需要维护marked和edgeTo数组),以及Dijkstra算法在负权重场景下的局限性。作者通过Princeton的Graph AP

2025-07-19 22:26:42 2787

原创 【git 如何查看本地分支与远程分支之间的差异】

本文介绍了几种查看Git本地与远程分支差异的方法。通过git log branchA..branchB可查看提交差异,git diff比较文件内容差异,git status快速了解分支状态,以及git log --graph --all图形化展示分支关系。每种方法适用于不同场景,如排查提交差异、检查文件变更或直观查看分支拓扑结构。这些命令配合git fetch使用,能有效帮助开发者掌握本地与远程仓库的同步情况。

2025-07-18 00:03:10 589

原创 【add vs commit】Git 中的 add 和 commit 之间的区别

本文梳理了Git中git add和git commit的核心区别与联系。git add将工作区文件标记到暂存区,表示准备提交;git commit则将暂存区内容永久记录到本地仓库历史中。两者配合使用时,需先add后commit,未被add的修改不会被提交。提交后暂存区会清空,与最新提交保持一致。文中还通过打印文件的类比帮助理解这两个命令的关系,并给出了标准操作流程示例。

2025-07-16 23:49:32 657

原创 【Git 中的 branch 工作流】关于git 中 branch 的一些基本操作

本文介绍了Git分支协作的工作流程,重点讲解了当本地与远程仓库不一致时如何创建副本分支进行修改的方法。主要包括:1)使用git fetch更新远程状态;2)创建新分支my-feature保留本地修改;3)用git reset --hard覆盖原分支;4)可选的分支合并操作;5)使用git branch和git status查看分支状态。这些操作可以帮助开发者在多主机协作时有效管理不同版本。

2025-07-15 18:00:03 503

原创 【git fetch submodule报错】Errors during submodule fetch 如何解决?

Git子模块fetch报错问题解决方案 当协作开发时遇到Errors during submodule fetch错误,主要是由于主仓库引用的子模块commit不存在。本文提供了三种解决方案:1)手动checkout子模块到有效commit;2)修改.gitmodule文件中的子模块URL;3)重新初始化子模块。作者通过git submodule update --init --recursive命令成功解决了问题。该问题常见于多设备协作开发场景,如同时使用Win主机和WSL的情况。

2025-07-14 22:06:41 1134

原创 【hello Apollo 基础实验】

本文介绍了Apollo基础实验的完整流程。实验包括:1)创建工程目录和文件结构;2)编写包管理文件(BUILD和cyberfile.xml);3)编写源代码(main.cc)和对应的BUILD文件;4)使用buildtool进行编译;5)运行生成的可执行文件。实验过程中可能遇到服务器JAR文件缺失的错误,需删除指定缓存目录后重新编译。最终成功运行后会输出不同级别的"hello Apollo"日志信息。该实验展示了Apollo平台的基本开发流程和常见问题的解决方法。

2025-07-13 23:51:18 424

CS61B 所需辅助 jar 包

CS61B 所需辅助 jar 包

2025-07-18

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除