
MachineLearning
文章平均质量分 95
与机器学习,深度学习以及数学建模等有关的算法
码海探幽
遨游于数据之海,解析模型之妙,领略智能之美!
展开
-
Torch 自动求导
文章围绕 Torch 自动求导展开,全面介绍了相关知识,从链式求导法则基础,到传统求导方法对比,再深入自动求导原理与实践。原创 2025-02-15 19:03:16 · 944 阅读 · 0 评论 -
Python 多项式拟合
文章聚焦于 Python 中的多项式拟合,通过代码示例与理论阐述,全面介绍了相关内容。开篇引入多项式拟合主题,并给出 numpy 库实现的代码,展示如何利用该库生成原始数据、拟合曲线并绘制图像,直观呈现拟合效果。随后介绍 Torch 实现,涵盖数据准备、模型定义、损失函数与优化器设置以及模型训练的全过程,最后输出训练后的权重和偏置。接着深入探讨拟合程度,通过代码展示不同拟合情况的图像,包括过拟合与欠拟合,同时详细阐述了过拟合和欠拟合的概念、产生原因及解决方法.原创 2025-02-15 19:01:25 · 1156 阅读 · 0 评论 -
Python 梯度下降法(七):Summary
以降低算法的复杂度、资源占用率,并提升其在实际应用中的性能。批量梯度下降(BGD):使用全部数据计算梯度,稳定性高但计算开销大。随机梯度下降(SGD):每次迭代使用单个样本计算梯度,计算速度快但收敛不稳定。小批量梯度下降(Mini-batch GD):结合 BGD 和 SGD 的优点,使用小批量数据计算梯度。动量法(Momentum):引入动量项,加速收敛并减少震荡。自适应学习率方法:如AdaGradRMSPropAdadeltaAdam和NAdam,动态调整学习率,适合处理稀疏数据和非凸优化问题。原创 2025-02-01 17:52:12 · 1207 阅读 · 5 评论 -
Python 梯度下降法(六):Nadam Optimize
Nadam(Nesterov-accelerated Adaptive Moment Estimation)优化算法是 Adam 优化算法的改进版本,结合了 Nesterov 动量(Nesterov Momentum)和 Adam 算法的优点。Nadam 在 Adam 算法的基础上引入了 Nesterov 动量的思想。Adam 算法通过计算梯度的一阶矩估计(均值)和二阶矩估计(未中心化的方差)来自适应地调整每个参数的学习率。原创 2025-02-01 14:30:46 · 1127 阅读 · 0 评论 -
Python 梯度下降法(五):Adam Optimize
Adam 算法结合了Adagrad和RMSProp算法的优点。Adagrad 算法会根据每个参数的历史梯度信息来调整学习率,对于出现频率较低的参数会给予较大的学习率,而对于出现频率较高的参数则给予较小的学习率。RMSProp 算法则是对 Adagrad 算法的改进,它通过使用移动平均的方式来计算梯度的平方,从而避免了 Adagrad 算法中学习率单调下降的问题。原创 2025-01-31 22:36:27 · 1678 阅读 · 0 评论 -
Python 梯度下降法(四):Adadelta Optimize
Adadelta 是一种自适应学习率的优化算法,它是对 Adagrad 算法的改进,旨在解决 Adagrad 学习率单调递减过快的问题。Adagrad 算法会累积所有历史梯度的平方和,随着迭代次数的增加,学习率会不断减小,最终可能变得非常小,导致参数更新极其缓慢甚至停滞。Adadelta 算法通过引入梯度平方的指数加权移动平均,只关注近期的梯度信息,避免了学习率的过度衰减。同时,Adadelta 不需要手动设置全局学习率,它通过使用参数更新量的指数加权移动平均来自适应地调整学习率。原创 2025-01-31 08:58:21 · 851 阅读 · 0 评论 -
Python 梯度下降法(三):Adagrad Optimize
Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,常用于机器学习中模型参数的优化,能根据每个参数的历史梯度信息自适应地调整学习率。符号意义θ\thetaθ模型待优化的参数向量(n×1n\times 1n×1JθJ(\theta)Jθ模型的损失函数gt∇θJθtgt∇θJθt模型在第ttt次迭代时的梯度(n×1n\times 1n×1η\etaη全局学习率,控制整体学习的步长ϵ。原创 2025-01-30 17:52:08 · 1024 阅读 · 1 评论 -
Python 梯度下降法(二):RMSProp Optimize
RMSProp(Root Mean Square Propagation)是一种自适应学习率优化算法,广泛用于深度学习中的梯度下降优化。它通过调整每个参数的学习率来解决传统梯度下降法中学习率固定的问题,从而加速收敛并提高性能。RMSProp 的核心思想是对每个参数的学习率进行自适应调整。起到了归一化梯度的作用,使得学习率可以更具梯度的尺寸进行自适应的调整。可以理解为对梯度平方的一个平滑估计,它更关注近期的梯度信息,可以发现,其对于损失值的下降性能也较好,损失率也较为稳定。,以及收敛判断,减少计算资源。原创 2025-01-30 16:20:10 · 992 阅读 · 0 评论 -
Python 梯度下降法(一):Gradient Descent
其核心思想是在每次迭代时,使用训练数据集中的所有样本计算目标函数的梯度,然后沿着梯度的反方向更新模型参数,逐步使目标函数达到最小值。例如,在经过大量的迭代后,模型会逐渐 “学习” 到数据的整体分布特征,就像不断打磨一个雕塑,每次只做一点修改,但最终能塑造出理想的形状。在合适的学习率下,损失函数在梯度下降法的作用下,损失值会趋于收敛,但是拟合结果的稳定性不是很好,损失值会有微小波动,会产生误差。,来进行模型的训练。的图像上,梯度向量是与其等高线(使得函数值为常数的曲线)垂直的向量,并且指向函数值增大的方向。原创 2025-01-29 23:19:07 · 1569 阅读 · 0 评论 -
特征缩放:数据归一化
看本文之前,最好先看拟合损失函数-优快云博客在数据预处理中,数据的归一化和标准化是极为关键的特征缩放方法。实际应用里,不同评价指标常常带有不同的量纲与量纲单位,这会干扰数据分析的结果。为了消除这些指标间的量纲差异,让数据具有可比性,进行数据归一化或标准化处理就显得尤为重要。经过处理后,原始数据中的各个指标被调整到同一数量级,这为后续的综合对比评价提供了有利条件,能够更准确、有效地挖掘数据价值,助力数据分析与决策。原创 2025-01-29 00:33:53 · 346 阅读 · 0 评论 -
拟合损失函数
使用最小二乘法进行线性拟合,即,hθxθ0θ1xhθxθ0θ1x其中,θ0\theta_{0}θ0和θ1\theta_{1}θ1是参数,需要通过已经给出的数据进行拟合,这里不进行具体的计算.Jθ0θ112m∑i1mhθxi−yi2Jθ0θ12m1i1∑mhθxi−yi2即线性拟合的目的即是达到minθJθ0θ1min。原创 2025-01-27 20:13:22 · 774 阅读 · 0 评论 -
数学建模(一):LP 问题
在人们的生产实践中,经常会遇到如何利用现有资源来安排生产,以取得最大经济效益的问题。自从1947年G.B.Dantzig提出求解线性规划的单纯形方法以来,线性规划在理论上趋向成熟,在实用中日益广泛与深入。特别是在计算机能处理成千上万个约束条件和决策变量的线性规划问题之后,线性规划的适用领域更为广泛了,已成为现代管理中经常采用的基本方法之一。其中 c 和 x 为 n 维列向量,A、Aeq为适当维数的矩阵,b、beq为适当维数的列向量。当然,我们也可以使用 lingo 来求解线性规划的问题。原创 2023-03-04 10:52:28 · 1179 阅读 · 0 评论 -
Lingo 基本使用
LINGO是用来解决优化问题的一个特别好用的软件,可以快速求解线性规划、非线性规划、线性和非线性方程组等等,是数学建模中求优化问题的解不可缺少的工具之一(1)LINGO的数学规划模型包含目标函数、决策变量、约束条件三个要素;(2)LINGO程序中,每一个语句都必须要用一个英文状态下的分号结束,一个语句可以分几行输入;(3)LINGO的注释以英文状态的!开始,必须以英文状态下的分号结束;(4)LINGO的变量不区分字母的大小写,必须以字母开头,可以包含数字和下划线,不超过32个字符;.........原创 2022-07-22 09:53:05 · 25011 阅读 · 4 评论 -
Matlab基本语法(二)
但是,您可能需要创建其他文本文件,包括数字和字符数据的组合,非矩形输出文件或具有非ASCII编码方案的文件。MATLAB中的底层文件I/O函数允许对文件的读写数据进行最大程度的控制。从前面的讨论中可以明显看出,合并长度不同的字符串可能会很麻烦,因为数组中的所有字符串都必须具有相同的长度。匿名函数就像传统编程语言中的内联函数一样,是在单个MATLAB语句中定义的。每个函数文件都包含一个首先出现的必需主函数,以及在主函数之后并由其使用的任意数量的可选子函数。在MATLAB中,函数是在单独的文件中定义的。...原创 2022-07-20 15:36:56 · 2616 阅读 · 0 评论 -
Matlab基本语法(一)
MATLAB(矩阵实验室)是用于数字计算,可视化和编程的第四代高级编程语言和交互式环境。MATLAB由MathWorks开发。https它允许矩阵操作;功能和数据绘制;算法的实现;创建用户界面;与使用其他语言(包括C,C++,Java和FORTRAN)编写的程序进行交互;分析数据;开发算法;并创建模型和应用程序。它具有许多内置命令和数学函数,可帮助您进行数学计算,生成图和执行数值方法。MATLAB环境的行为就像一个超级复杂的计算器。您可以在>>命令提示符下输入命令。MATLAB是一个解释型环境。......原创 2022-07-20 12:20:37 · 8870 阅读 · 1 评论 -
python 实现贪心算法
贪心算法,又称贪婪算法,是一种在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是最好或最优的算法。[1]比如在旅行推销员问题中,如果旅行员每次都选择最近的城市,那这就是一种贪心算法。贪心算法在有最优子结构的问题中尤为有效。最优子结构的意思是局部最优解能决定全局最优解。简单地说,问题能够分解成子问题来解决,子问题的最优解能递推到最终问题的最优解。贪心算法与动态规划的不同在于它对每个子问题的解决方案都做出选择,不能回退。最优化问题,如求图中的最小生成树、求哈夫曼编码。.......原创 2022-07-24 22:36:16 · 3986 阅读 · 4 评论 -
Python实现dijkstra算法
Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。Dijkstra算法是很有代表性的最短路径算法,在很多专业课程中都作为基本内容有详细的介绍,如数据结构,图论,运筹学等等。注意该算法要求图中不存在负权边。问题描述在无向图G=(V,E)中,假设每条边E[i]的长度为w[i],找到由顶点V0到其余各点的最短路径。(单源最短路径)......原创 2022-07-28 22:01:24 · 12458 阅读 · 13 评论 -
Python最小二乘法
如果数据{(xiyii12⋯m含有误差或噪声,如果数据无法同时满足某个特定函数,那么只有要求逼近函数φx尽量靠近数据点,即向量Zφx1φx2⋯φxm))与Yy1y2⋯ym的误差或距离最小。按Z与Y之间误差最小的原则构造的逼近函数φx成为拟合函数。向量Z与Y之间的误差或距离有各种不同的定义方式。如,各种向量范数Z−Y1∑i1m∣φxi−yi∣。原创 2025-01-21 13:20:30 · 1083 阅读 · 0 评论 -
Python矩阵运算
若主元为或绝对值很小,就需要在该列中寻找绝对值较大的元素所在行,通过构建置换矩阵来交换行,以确保主元非零且尽可能大,提高分解的稳定性和准确性。即所用坐标法进行矩阵元素的索引,矩阵的索引从0开始,可以使用行、列的索引来访问特定元素。SVD 是将矩阵分解为三个矩阵:左奇异矩阵、对角矩阵(奇异值)、右奇异矩阵。通过指定多个索引来访问矩阵中的特定元素。布尔索引允许通过条件筛选矩阵中的元素,返回满足条件的元素。LU 分解将矩阵分解为一个下三角矩阵和一个上三角矩阵。QR 分解将矩阵分解为正交矩阵和上三角矩阵。原创 2025-01-20 20:38:41 · 1507 阅读 · 0 评论 -
数学建模(三):模拟退火算法(SA)
模拟退火算法(simulated annealing,SA)来源于固体退火原理,是一种基于概率的算法。模拟退火算法(SA)来源于固体退火原理,是一种基于概率的算法。将固体加温至充分高的温度,再让其徐徐冷却,加温时,固体内部粒子随温升变为无序状,内能增大,分子和原子越不稳定。而徐徐冷却时粒子渐趋有序,能量减少,原子越稳定。在冷却(降温)过程中,固体在每个温度都达到平衡态,最后在常温时达到基态,内能减为最小。原创 2023-04-04 12:40:15 · 3612 阅读 · 0 评论 -
数学建模(二):遗传算法(GA)
神经网络(Neural Network,NN);模糊逻辑(Fuzzy Logic,FL);遗传算法蚁群优化算法(Ant Colony Optimization,ACO);粒子群优化算法(Particle Swarm Op);免疫算法(Immune Algorithm,IA);分布估计算法(Estimation of Distribution Algorithm,EDA);Memetic算法(Memetic Algorithm,MA);原创 2023-03-31 21:21:44 · 3763 阅读 · 0 评论 -
Python中OpenCV库(二)
人眼对角点的识别通常是在一个局部的小区域或小窗口完成的。如果窗口在某一个方向移动时,窗口内图像的灰度发生了较大的变化,而在另一些方向上没有发生变化,那么,窗口内的图像可能就是一条直线的线段。特征检测是计算机视觉和图像处理中的一种概念,它指的是使用计算机提取图像信息,决定每个图像的点是否属于一个图像特征。特征检测的结果是把图像上的点分为不同的子集,这些子集往往属于孤立的点,连续的曲线或者连续的区域。W(x,y)W(x,y)是以点(x, y)(x, y)为中心的窗口,即加权函数,例如高斯加权函数。...原创 2022-09-01 14:44:29 · 2104 阅读 · 0 评论 -
Python中OpenCV库(一)
Opencv(Open Source Computer Vision Library)是一个基于开源发行的跨平台计算机视觉库,它实现了图像处理和计算机视觉方面的很多通用算法,已成为计算机视觉领域最有力的研究工具。在这里我们要区分两个概念:图像处理和计算机视觉的区别:图像处理侧重于“处理”图像–如增强,还原,去噪,分割等等;而计算机视觉重点在于使用计算机来模拟人的视觉,因此模拟才是计算机视觉领域的最终目标图是物体反射或透射光的分布,像是人的视觉系统所接受的图在人脑中所形成的印象或认识OpenCV用C++语言编原创 2022-07-19 10:48:41 · 5123 阅读 · 3 评论