自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 最大似然估计:损失函数的底层数学原理

摘要:本文揭示了损失函数背后的数学原理——最大似然估计(MLE)。均方损失(MSE)对应回归任务中观测噪声服从高斯分布的假设,其最小化等价于最大化高斯分布的对数似然;交叉熵损失则对应分类任务中类别标签服从伯努利/多项式分布的假设,其最小化等同于最大化相应分布的对数似然。两种损失函数的本质差异源于对标签生成过程的不同概率假设,这种从概率角度对损失函数的推导展现了数学理论在机器学习中的深刻应用。

2025-09-06 23:55:05 617

原创 吴恩达机器学习合集

本文系统梳理了吴恩达机器学习课程12个核心作业的应用场景,涵盖线性回归、逻辑回归、神经网络等经典算法。每个作业都配有典型应用示例:如线性回归预测房价/股票,逻辑回归用于垃圾邮件分类,神经网络处理图像识别,SVM支持文本分类等。特别强调了机器学习算法的数学可解释性,建议通过数学推导理解算法原理。文章还补充了决策树和随机森林在医疗诊断、金融风控等领域的应用,完整呈现了机器学习技术在实际问题中的丰富应用图谱。(149字)

2025-09-06 12:37:37 914

原创 吴恩达机器学习补充:决策树和随机森林

本文介绍了决策树和随机森林两种机器学习算法的原理与实现。决策树通过树状结构对特征逐步划分进行预测,包含根节点、内部节点、分支和叶节点;随机森林则通过集成多棵决策树(采用样本和特征双重随机性)来提高预测性能。文章提供了完整的Python实现代码,包括数据加载、预处理、决策树构建、随机森林训练等核心功能模块,并采用k折交叉验证评估模型性能。通过sonar数据集实验,展示了从数据准备到模型评估的完整机器学习流程,特别强调了随机森林在抗过拟合和稳定性方面的优势。

2025-09-01 23:56:55 898 3

原创 吴恩达机器学习作业十二:协同过滤(电影推荐系统)

这篇文章介绍了一个基于模型的协同过滤电影推荐系统实现。系统通过矩阵分解方法学习电影特征矩阵X和用户偏好矩阵Theta,利用用户-物品评分数据Y和指示矩阵R进行训练。文章详细说明了数据读取、参数序列化、损失函数设计(包含正则项)、梯度计算等关键步骤,并特别强调了均值归一化对解决冷启动问题的重要性。最后通过优化算法训练模型,实现了对新用户电影评分的预测和个性化推荐。整个流程涵盖了从数据处理到模型训练、预测的完整实现步骤。

2025-09-01 23:28:03 897

原创 吴恩达机器学习作业十一:异常检测

本文介绍了基于概率模型的异常检测方法。通过计算数据集的均值与方差建立正态分布模型,利用概率密度函数识别异常点。算法流程包括:1)计算均值和方差;2)构建概率密度函数;3)通过验证集确定最佳阈值;4)标记异常点。文中提供了Python实现代码,包括数据读取、可视化、参数估计、概率计算和阈值选择等步骤,最终通过绘制等高线图和标记异常点完成检测。该方法适用于发现与主要数据分布显著偏离的离群点。

2025-08-31 23:25:54 496

原创 吴恩达机器学习作业十 PCA主成分分析

本文介绍了PCA主成分分析的原理与实现流程。PCA是一种通过线性变换将高维数据降维的技术,其核心是寻找数据方差最大的正交方向作为主成分。文章详细阐述了PCA的数学原理、算法步骤(包括数据预处理、协方差矩阵计算、SVD分解等),并配合Python代码演示了完整实现过程:从数据标准化、特征向量计算、数据投影到低维空间,再到数据重建和差异评估。通过可视化展示了主成分方向和数据投影效果,最终计算出保留86.78%的原始信息。该流程完整展现了PCA从理论到实践的实现路径。

2025-08-31 23:15:02 714

原创 吴恩达机器学习作业九:kmeans聚类

K-means是一种无监督聚类算法,通过迭代将数据划分为k个簇,使簇内相似度高、簇间差异大。文章展示了K-means的实现过程:首先读取二维数据集并可视化;然后定义簇分配函数和计算聚类中心函数;接着通过迭代执行两个核心步骤(分配样本到簇、更新簇中心)完成聚类;最后可视化聚类结果和中心点移动轨迹。整个过程包括数据准备、簇分配、中心点计算和迭代优化等关键步骤,完整演示了K-means算法的实现逻辑。

2025-08-30 22:51:32 558

原创 吴恩达机器学习作业八:SVM支持向量机

本文介绍了支持向量机(SVM)的基本原理及其在分类任务中的应用。通过Python代码展示了SVM从数据读取、模型构建到训练测试的完整流程。重点讲解了线性分类中C参数的影响,以及非线性分类中高斯核函数的使用方法。文章还详细说明了如何通过网格搜索寻找最优的C和sigma参数组合,并给出了可视化决策边界的具体实现方法。最后总结出SVM应用的通用流程:数据读取→模型构建(确定线性/非线性)→参数优化(非线性)→模型训练→测试评估。

2025-08-30 11:22:40 737

原创 吴恩达机器学习作业七:方差与偏差

本文探讨了机器学习中偏差和方差的概念及其解决方法。偏差反映模型对真实规律的偏离,高偏差导致欠拟合,表现为训练和测试误差都较大;方差体现模型对噪声的敏感性,高方差导致过拟合,表现为训练误差小但测试误差大。通过特征映射和正则化等方法可针对性解决。文章还以多项式回归为例,展示了数据预处理、模型训练和参数调优的完整流程,包括特征多项式扩展、均值归一化以及通过交叉验证选择最佳正则化参数。最终模型在测试集上取得较好效果。该研究为平衡模型偏差和方差提供了实用指导。

2025-08-29 20:47:55 1413

原创 吴恩达机器学习作业六:反向传播

摘要:本文介绍了神经网络中的反向传播算法实现过程。通过读取MNIST手写数字数据集,进行数据预处理(one-hot编码)和参数序列化处理,构建包含前向传播、Sigmoid激活函数、损失函数(带/不带正则项)和梯度计算的完整神经网络框架。重点阐述了反向传播过程中利用链式法则计算梯度的原理,并实现了带正则化的梯度计算。最后通过优化器训练网络参数,在测试集上达到了94.18%的准确率。整个流程包括数据读取、预处理、网络构建、训练优化和测试评估等步骤。

2025-08-29 20:23:17 399

原创 吴恩达机器学习作业五:神经网络正向传播

本文介绍了正向传播在神经网络中的实现过程,以手写数字识别为例。正向传播是神经网络的核心计算步骤,通过输入层、隐藏层(含激活函数)到输出层的逐层传递实现非线性变换。文中使用Python代码演示了数据读取、sigmoid激活函数定义和前向传播计算过程,最终通过预测函数实现准确率97.52%的数字识别。该过程涵盖数据集读取、神经网络构建和预测执行,为理解神经网络工作原理提供了实践案例。

2025-08-29 17:45:26 669

原创 吴恩达机器学习作业四:逻辑回归手写多分类问题

摘要:本文基于MNIST数据集实现手写数字多分类任务。采用"一对多"策略,将多分类转化为多个二分类问题,使用带L2正则化的逻辑回归模型。通过优化损失函数和梯度下降训练10个分类器(对应0-9数字),最终预测准确率达94.46%。主要步骤包括:数据加载与可视化、sigmoid函数实现、正则化损失函数和梯度计算、调用优化器训练分类器,以及使用最大概率法进行预测。

2025-08-29 10:17:57 468

原创 吴恩达机器学习作业三 线性不可分逻辑回归

本文探讨了线性不可分逻辑回归问题及其解决方案。针对无法用线性超平面完全分隔的数据集,通过特征映射创建高阶项(最高6次项)来增强模型拟合能力,同时引入L2正则化防止过拟合。实验使用梯度下降法优化含正则化项的交叉熵损失函数,经过20万次迭代后模型在测试集上达到84.75%的准确率。整个过程展示了如何通过特征工程和正则化技术处理线性不可分问题,平衡模型复杂度与泛化能力。

2025-08-29 09:44:00 522

原创 吴恩达机器学习作业二:线性可分逻辑回归

本文介绍了线性可分逻辑回归的实现过程,包括数据预处理、模型构建和预测分析。首先读取并可视化二分类数据集,然后定义sigmoid函数和交叉熵损失函数。通过梯度下降算法优化模型参数,最终实现分类预测并计算准确率。实验结果表明该方法能有效区分两类数据,决策边界可视化直观展示了分类效果。完整流程涵盖了从数据准备到模型评估的机器学习典型步骤。

2025-08-27 18:17:29 407

原创 吴恩达机器学习作业(一):线性回归预测

本文介绍了使用numpy实现线性回归的方法。主要内容包括:单变量线性回归的数据导入、可视化及处理,通过正规方程和梯度下降两种方法求解参数;多变量线性回归的数据预处理、损失函数计算和梯度下降实现。文中提供了完整的代码实现过程,包括数据切片转换、代价函数定义、参数更新公式等关键步骤,并对比了不同学习率下的损失变化。最后总结了线性回归的实现流程:数据导入→预处理→定义损失函数→梯度下降优化→测试验证。

2025-08-27 17:51:32 1213

原创 竞赛小算法总结(二):gcd&lcm,拓展欧几里得&线性同余,逆元(含代码详解)

gcd” 是 “Greatest Common Divisor” 的缩写,中文名为最大公约数,也称最大公因数。它指的是两个或多个整数共有约数中最大的一个。例如,对于整数 12 和 18 ,12 的约数有 (1, 2, 3, 4, 6, 12) ,18 的约数有 (1, 2, 3, 6, 9, 18) ,它们共有的约数有 (1, 2, 3, 6) ,其中最大的是 6 ,所以 12 和 18 的最大公约数(gcd )是 6 ,可表示为 (gcd(12, 18)=6)。

2025-05-27 17:20:44 465

原创 竞赛小算法总结(一):位运算,因数分解和“马拉车”算法含代码详解

写在前面的话:这里之所以把下面要讲的算法叫做小算法,并不是说它不重要,而是说它的可改变程度小,这也就导致了如果它出现在了竞赛中,你不会这些算法就很难破题,而一旦你学会了,一般都可以一战,因为改变度小,基本和你之前写的差不多(亲身体验)。一 位运算这里之所以要讲位运算,是因为蓝桥杯里面这是经常出现的考点,而且往往是题目的补充,有时我因为不懂位运算就下不了笔,而且位运算中也有非常多有意思的点。

2025-05-25 12:02:49 999

原创 数据结构:二叉树详细分析讲解

主要还是处理流程的重复是利用current的改变来实现,所以关键还是什么时候插入栈,我们可以理解为当左子树不断传递到最后空,左叶子节点作为根节点输出后,转向右子树,执行完成后,倒数第二的左子树也执行完了,从栈中取出的是对应的根节点,依次类推。这是用了递归的方法,递归算法优点是形式简洁,可读性好,正确性容易得到证明,可以给程序的编制和调试带来很大的方便,缺点是递归调用比非递归调用消耗的时间与存储空间多,运行的效率较低。结点的层次:根结点的层数为0,根的孩子层数为1, 依此类推。树深度:树中结点的最大层次。

2025-05-19 23:44:36 695

原创 第十五届蓝桥杯Java国赛

我的考虑是用ArrayList和HashMap来作为主要数据结构,理由是每次要插入我们都要看之前是否有,那么我们用哈希表会好很多,同时我们又要查找如果之前存在的话,它前后的值,那么我们就比得到它的索引,而根据索引来找值ArrayList时间复杂度低,所以我们用它来进行存储,但是不删除,不然会超时。b=13的二进制为1101= 8+4+1,当它最后位置为1时表示要进行相加,result就加上a,a每次都会变成前一次的平方,这样13原本要13次计算,这就只要3次,实现了log n的时间复杂度。

2025-05-17 23:09:32 797

原创 单调队列详解(滑动窗口和动态规划优化)含例题讲解

对于这一句的实现,我们必须依据下标来处理,举个例子,你现在要找下标为3到5的区间里的max,但是你发现你已经找到的最值是下标为2的,那么你必须把它清除来确保结果正确,那你要怎么判断现在有最值的下标呢,就是代表我们需要用一个队列来进行存储,同时我们发现有了下标就有了具体的值,那么我们关于插入的操作也是关于下标。但是笔者发现自己的代码的执行速度并非最高,有兴趣的可以看看执行最快的代码,用的是动态规划,思路非常巧妙。首先我们要讲一下多重背包里的单调队列优化 ,不知道多重背包的可以看看我之前的。

2025-05-15 12:45:10 1161

原创 小白入门:手写数字识别MNIST实践

net = MNIST_Net()是我们之前搭建的神经网络模型的实例化,net.load_state_dict(torch.load('fcn_mnist_ckpt.pt', map_location='cpu'))这里你肯定会疑惑为啥有这个方法load_state_dict(),不是只写了两个方法吗,别忘了我们继承了nn.Module。由输入到输出的过程就是前向传播,它的结果表示输入数据经过我们搭建的模型所得到的结果,在本次实践中,我们输入由0到9的图片的读取参数,最后得到它识别的结果。

2025-05-11 23:45:52 748 2

原创 集合ArrayList源码解读

ArrayList是Java中基于数组实现的动态数组结构,与普通数组不同,其容量可根据元素的增减动态调整。通过源码分析,ArrayList的核心机制包括:1. 构造方法:无参构造时初始化一个空数组,首次添加元素时扩容至默认容量10;有参构造则根据指定容量初始化数组。2. 添加元素:通过add方法添加元素时,若当前数组容量不足,会调用grow方法扩容,新容量通常为原容量的1.5倍。3. 删除元素:删除操作通过System.arraycopy高效移动元素,并将最后一个元素置为null以帮助垃圾回收。4. 修改与

2025-05-10 15:40:58 838

原创 动态规划入门:01背包,完全背包,多重背包

01背包问题是一个经典的组合优化问题,也是动态规划算法的典型应用场景。以下是对 01 背包问题的详细介绍:给定一个容量为W的背包,以及n个物品,每个物品有两个属性:重量w[i]和价值v[i]对于每个物品,只有两种选择:放入背包(取值为 1)或不放入背包(取值为 0),不能只放入物品的一部分。目标是在背包容量限制下,选择一些物品放入背包,使得放入物品的总价值最大。例如,有一个容量为 5 的背包,有 3 个物品,物品 A 重量为 2、价值为 3;物品 B 重量为 3、价值为 4;

2025-05-06 17:52:34 2199

原创 第十六届蓝桥杯Java大学A组真题解析

本次蓝桥杯共8题,2道选择题,6道编程题,先写一下我的感受:个人感觉较为简单(最后两题除外),前面基本思路较顺,所以下面代码主要是我自己当时的,由ai注释,欢迎讨论。答案是 40500答案:506754 这题是没思路,dp还不熟练 ,此题要用动态规划动态规划状态定义:状态转移:初始状态:结果计算:很明显这只是暴力求解,正确解法如下:问题分析:关键观察:贪心策略: 如果您觉得有帮助,可以点赞收藏关注(狗头保命)

2025-04-27 19:35:03 2092

原创 蓝桥杯中的DFS(含算法分析,蓝桥杯真题,解题思路和代码)

深度优先搜索算法 (DFS)1.定义:对每一个可能的分支路径深入到不能再转移为止,然后回退到前一步的状态,继续转移到其他状态,如此不断重复,直至找到最终的解。深度优先搜索采用递归函数实现,隐式栈实现。其实我们会发现深度优先搜索和宽度优先搜索很像,都是由父节点到子节点的过程,不过每次深度优先搜索都会优先选择子节点,而直到子节点完全搜索了,就会回到上一个节点,再到另一个子节点,就相当于原子节点一个兄弟节点,这与宽度优先搜索优先搜索兄弟节点相反。

2025-04-09 21:07:37 1260

原创 蓝桥杯中的BFS(含算法分析,蓝桥杯真题,解题思路和代码)

BFS(宽度优先搜索)值得注意的是BFS是依靠队列来进行实现,正如DFS是依靠栈,这个思想有助于我们理解算法。蓝桥杯真题:青蛙跳杯子。

2025-04-04 23:59:17 2196

原创 双指针算法总结(二):同向双指针(滑动窗口),背向双指针(分离指针),包括算法原理,适用场景,力扣原题(环形列表,长度最小的子字符串,最长回文子串),思路分析和总结反思,含java代码

环形列表,长度最小的子字符串,最长回文子串同向双指针(快慢指针)算法原理:两个指针从同一端开始,按照相同的方向移动,但移动速度不同。指针移动方向相同通常用于链表或数组中的滑动窗口问题如链表中的环检测滑动窗口问题删除数组中的重复元素。力扣原题:1.环形列表141. 环形链表 - 力扣(LeetCode)题目描述:给定一个链表,判断链表中是否有环。若有则返回true,反之false。

2025-03-18 10:40:29 1011

原创 双指针算法总结(一):同向双指针,包括算法原理,适用场景,力扣原题(两数之和 II - 输入有序数组 ,验证回文串),思路分析和总结反思,含C语言,java代码

对向双指针原理两个指针分别从数据结构(如数组、字符串)的两端开始,朝着对方的方向移动,直到两个指针相遇或者满足特定的终止条件。

2025-02-23 22:54:33 759

原创 贪心算法:由P3817小A的糖果入手(C语言,java解答)

思路:我们此时要将问题分解成子问题,也就先比较n盒糖果中前面的几个在满足题目要求时最少需要丢掉的糖果,不妨以第一个示例为例,我们发现前两个没有区别,去掉任意一盒子内的一个糖果就可,但此时我们会发现,去掉第二个盒子中的一个使得第三个盒子所需去掉的糖果数目减少,从而要去掉的总数减少。总结:在做贪心算法题时,我们通常会发现题目会询问一个最优解,如此题的最少,这可以作为我们判断进行贪心算法的依据,再把问题分解成子问题,将子问题得到局部最优解后,推理出贪心策略,从而运用贪心策略解决问题。行,每行包含两个整数。

2025-02-09 15:41:50 813 1

小白入门:手写数字识别MNIST实践训练参数

小白入门:手写数字识别MNIST实践训练参数

2025-05-08

小白入门:手写数字识别MNIST实践数据集

小白入门:手写数字识别MNIST实践数据集

2025-05-08

空空如也

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

TA关注的人

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