自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 西南交通大学【机器学习实验10】

个点作为初始聚类中心,并设置迭代次数为100。值时聚类结果图,用不同颜色表示不同的类。了解无监督任务范式概念,掌握聚类思想,掌握。均值聚类算法,对如下数据进行聚类。,计算相应聚类结果的簇内平方误差指标。-means算法基本原理和实现方法。均值算法,随机从样本中选出。值增加的变化曲线图。

2025-07-02 10:09:53 284

原创 西南交通大学【机器学习实验9】

编程实现随机森林模型,对手写数字识别数据集进行分类。基模型采用决策树模型,划分属性指标采用信息熵指标,随机选取属性子集数目为50。,计算随机森林在测试集上的精度,并绘制随机森林精度随基模型数量增加的变化曲线。参考随机森林,以决策树为基学习器,构建bagging集成器用于多分类任务。

2025-07-02 10:05:28 160

原创 西南交通大学【机器学习实验8】

编程实现AdaBoost集成方法,对如下数据集进行分类。基模型采用决策树模型,划分属性指标采用信息熵指标,决策树最大深度设置为1。掌握集成学习思想,掌握boosting策略,基于AdaBoost实现多分类任务。,计算集成模型在测试集上的精度,并绘制集成模型精度随基模型数量增加的变化曲线。

2025-07-02 10:03:23 294

原创 西南交通大学【机器学习实验7】

理解和掌握朴素贝叶斯基本原理和方法,理解极大似然估计方法,理解先验概率分布和后验概率分布等概念,掌握朴素贝叶斯分类器训练方法。给定数据集,编程实现朴素贝叶斯分类算法,计算相应先验概率,条件概率,高斯分布均值和方差的估计值,并给出模型在测试集上的精度。

2025-07-02 10:01:12 339

原创 西南交通大学【机器学习实验6】

理解和掌握支持向量机基本原理和方法,理解数据线性可分性,理解支持向量机对偶问题,理解支持向量机核函数等概念,掌握间隔、支持向量、对偶、核函数等概念及计算方法。基于给定数据集,编程实现软间隔线性支持向量机模型,采用随机梯度下降方法对模型进行训练。绘制训练集精度迭代曲线,绘制分类超平面,给出最终支持向量机表达式和模型在测试集上的精度。测试集精度:100.0000%

2025-07-02 09:57:37 222

原创 西南交通大学【机器学习实验5】

输入层784个节点,隐层12个节点,输出层10个节点,隐层和输出层均采用sigmoid激活函数,损失函数为均方损失函数。采用标准正态分布初始化权重和阈值参数,梯度下降最大迭代次数设置为2000,对比学习率为0.001,0.005,0.01时模型的损失函数迭代曲线和模型在测试集上的精度(accuracy)。理解神经网络原理与计算框架,包括前馈神经网络、激活函数、损失函数、后向传播过程等,学会使用梯度下降法对神经网络进行训练,学会分析不同学习率对梯度下降法收敛性影响。

2025-07-02 09:54:21 249

原创 西南交通大学【机器学习实验4】

使用sklearn中tree.DecisionTreeClassifier构建决策树,设置random_state=1(消除随机性,多次实验结果相同),划分标准依次选择criterion = ‘gini’和criterion = ‘entropy’,决策树最大层数依次设置max_depth = 1,max_depth = 2,max_depth = 3,填写如下实验结果。理解和掌握决策树原理,包括划分选择中三种经典指标信息增益、增益率和基尼指数的优缺点,剪枝处理方法及作用、连续值与缺失值处理等。

2025-07-02 09:52:55 331

原创 西南交通大学【机器学习实验3】

编程实现逻辑回归模型,在给定数据集上,绘制损失函数曲线图。使用混淆矩阵、错误率、精度、查全率、查准率、F1指标评估逻辑回归模型性能表现。理解和掌握逻辑回归模型基本原理和方法,学会使用逻辑回归模型对分类问题进行建模和预测,掌握分类问题上模型评估方法。,0] ,学习率设为0.1,迭代次数为100。错误率(error rate)查准率(precision)精度(accuracy)查全率(recall)

2025-07-02 09:50:52 317

原创 西南交通大学【机器学习实验2】

实验目的理解和掌握线性回归模型基本原理和方法,学会使用线性回归模型对分析问题进行建模和预测,掌握线性问题上模型评估方法。实验内容假设线性模型为y=w1x+w2,在给定数据集上训练模型,得到模型参数,计算模型在测试集上均方误差,并将训练数据、测试数据、训练模型绘制在一张图中。假设二次线性模型为y=w1x2+w2x+w3,在给定数据集上训练模型,得到模型参数,计算模型在测试集上均方误差,并将训练数据、测试数据、训练模型绘制在一张图中。实验环境pythonnumpymatplotlib实验代码代码代码

2025-07-02 09:49:21 280

原创 西南交通大学【机器学习实验1】

给定回归问题的真实标签和多个算法的预测结果,编程实现MSE、MAE、RMSE三种评测指标,对模型进行对比分析。给定二分类问题真实标签和多个算法的预测结果,编程实现混淆矩阵评测,采用。理解和掌握回归问题和分类问题模型评估方法,学会使用均方误差、最大绝对误差、均方根误差指标评估回归模型,学会使用错误率、精度、查全率、查准率、F1指标评价分类模型。率、精度、查全率、查准率、F1指标对结果进行对比分析。查准率(precision)查全率(recall)

2025-07-02 09:44:33 199

原创 算法【乘法快速幂、矩阵快速幂】

乘法快速幂用于求一个数的高次方,矩阵快速幂用于求一个方阵的高次方。固定关系的1维k阶递推表达式,用矩阵快速幂求解时间复杂度O(logn * k的3次方)固定关系的k维1阶递推表达式,用矩阵快速幂求解时间复杂度O(logn * k的3次方)下面通过题目加深理解。题目一分析:对于次方进行二进制判断,如果当前位是1,则结果乘上当前算子,否则结果不变,每次判断后次方右移一位直到为0,算子最开始是底数,每次循环后,算子更新为自身的平方。代码如下。

2025-02-21 14:51:18 1021

原创 算法【质数判断、质因子分解、质数筛】

本文讲解判断值较小的数字是否为质数、判断值较大的数字是否为质数,了解Miller-Rabin测试的大概过程 + 会用模版即可、某个数字所有质数因子的分解,掌握最常用的方法足够了、找出1~n范围内所有的质数,埃氏筛、欧拉筛,其实掌握埃氏筛足够。判断n是否是质数,Miller-Rabin测试大概过程:1.每次选择1 ~ n-1范围上的随机数字,或者指定一个比n小的质数,进行测试2.测试过程的数学原理不用纠结,不重要,因为该原理除了判断质数以外,不再用于别的方面。

2025-02-21 14:51:10 578

原创 算法【博弈类问题】

本文最开始讲解一些常见博弈类问题如巴什博弈(Bash)、尼姆博弈(Nim)、斐波那契博弈(Fibonacci)、威佐夫博弈(Wythoff)。通过这些讲解会发现,这些博弈问题在考场上要临时想清楚是不太可能的,所以需要后面的内容即SG函数、SG定理的内容,大多数博弈类问题都可以根据SG定理来解决。博弈类问题大致分为,公平组合游戏、非公平组合游戏(绝大多数的棋类游戏)、反常游戏。只需要关注公平组合游戏(ICG),反常游戏是公平组合游戏的变形,经济类博弈也不是课程所讨论的范围。

2025-02-21 14:50:46 892

原创 算法【贪心经典题目专题6】

然后先将前k-1名工人放入大根堆维护他们的工作质量,从第k名工人开始遍历,因为已经有序,所以这第k名工人和堆里的工人进行工资计算时,是用遍历到的工人的最小期望除以工作质量乘总质量。更新答案之后,将遍历到的工人的工作质量和堆顶的工作质量进行比较,如果比堆顶的工作质量小,则将堆顶的工作质量弹出,遍历到的工作质量入堆。然后将这两种可能性产生的集合的最后一个下标和累加和入堆,将答案数组填满即可。分析:首先进行词频统计,然后对前导零进行判断,如果1到9的词频都小于等于1,则取0到9中最大的词频不为0的数返回。

2025-02-19 09:29:44 395

原创 算法【贪心经典题目专题5】

如果当前水龙头数可以覆盖的最右下标等于遍历到的下标则需要判断,如果多用一个水龙头可以覆盖的最右下标依旧等于当前下标,则代表即使多用一个水龙头,也不能覆盖住后一个范围,所以返回-1;否则多用一个水龙头,当前最右下标更新为多用一个水龙头的最右下标。分析:这道题用cur代表走完当前步数可以来到的最大长度,next代表如果多走一步可以来到的最大长度,然后遍历索引,如果当前步数可以来到的最大长度小于遍历到的索引,步数加1,最大长度更新为多走一步可以来到的最大长度,每一次遍历索引都会更新多走一步可以来到的最大长度。

2025-02-19 09:11:25 316

原创 算法【贪心经典题目专题4】

分析:注意到操作并不会改变数字的奇偶性,所以可以将nums数组和target数组中的奇数和偶数分组,并且nums数组中的奇数个数等于target数组中的奇数个数,nums数组中的偶数个数等于target数组中的偶数个数,并且对这四个数组进行从小到大排序。如果当前员工阅读值较小,则加上之前员工中最大的阅读值,更新答案,最后返回时,答案除以2。分析:用一个大根堆维护可以加油的加油站,当当前无法到达终点时,加油量最大的那个加油站,如果还是无法到达终点更新可以加油的加油站,加油量最大的加油站,循环往复。

2025-02-17 21:28:04 520

原创 算法【贪心经典题目专题3】

Ki代表折扣系数,Bi代表票价,举个例子 : Ki = 2, Bi = 10,如果只有1个人买票,单张门票的价格为 : Bi - Ki * 1 = 8,所以这1个人游玩该项目要花8元,如果有2个人买票,单张门票的价格为 : Bi - Ki * 2 = 6,所以这2个人游玩该项目要花6 * 2 = 12元,如果有5个人买票,单张门票的价格为 : Bi - Ki * 5 = 0,所以这5个人游玩该项目要花5 * 0 = 0元,如果有更多人买票,都认为花0元。来自真实大厂笔试,没有在线测试。

2025-02-17 21:27:54 1013

原创 算法【贪心经典题目专题2】

遍历每一次选择项目的机会,对于当前资本可以解锁的项目的纯利润进入大根堆,选择当前纯利润最大的项目进行投资,将纯利润加入当前资本进行下一次的选择。分析:首先按照开始时间进行排序,然后用一个小根堆维护结束时间,遍历会议的时候,对于当前时间可以解锁的会议的结束时间进入小根堆,选择可以解锁的会议中结束时间最小的会议进行参加。分析:以会议的结束时间从小到大进行排序,对于当前时间如果小于等于当前会议的开始时间则代表可以参加,时间更新为当前会议的结束时间,遍历所有会议即可得到答案。来自真实大厂笔试,没有在线测试。

2025-02-16 20:14:21 870

原创 算法【贪心经典题目专题1】

对于遍历到的线段,先清除小根堆中线段的终点小于等于当前线段起点的终点,然后将当前线段的终点加入小根堆,现在小跟堆中终点的个数就是以当前线段起点为左边界的线段重合最大数,遍历所有线段即可得到答案。如果当前时间加上持续时间大于结束时间,则需要对已经修读的课程中持续时间最大的课程进行比较,如果当前课程的持续时间小于已经修读的课程中最大的持续时间则修读当前课程,不修读最大持续时间的课程。广义的贪心指通过分析题目自身的特点和性质,只要发现让求解答案的过程得到加速的结论,都算广义的贪心。下面通过题目加深理解。

2025-02-16 19:55:21 626

原创 算法【动态规划中根据数据量猜解法的技巧】

对于一个具体的题目,方法运行的指令条数不能超过10^7 ~ 10^8规模,否则就会超时那么就可以利用这个条件:1.想出能通过的方法再去实现2.确定优化做到什么程度才能通过下面通过题目加深理解。

2025-02-15 16:10:34 989

原创 算法【动态规划中得到具体决策方案的技巧】

很多动态规划题目要求返回的答案不是一个简单数值,而是一个具体的方案1.利用动态规划表生成决策路径,如题目一、题目二、题目三2.有时候需要增加额外的路径收集结构,如题目四对这一类的题目来说,动态规划是最重要的,得到具体方案只是一个比较简单的处理技巧。下面通过题目来加深理解。

2025-02-15 16:10:24 449

原创 算法【动态规划中使用观察优化枚举】

动态规划的问题中,已经写出了记忆化搜索的版本,还要写出严格位置依赖的版本,意义在于不仅可以进行空间压缩优化;关键还在于,很多时候通过进一步观察,可以优化枚举,让时间复杂度更好。优化枚举的技巧很多,本文讲解根据观察优化。动态规划方法的复杂度大致可以理解为:O(状态数量 * 每个状态的枚举代价)。当每个状态的枚举代价为O(1),那么写出记忆化搜索的版本,就是时间复杂度最好的实现了。但是当每个状态的枚举代价比较高的时候,记忆化搜索的版本可能不是最优解,可能存在进一步的优化。

2025-02-15 16:10:11 895

原创 算法【数位dp】

数位dp的尝试方式并不特殊,绝大多数都是线性展开,类似从左往右的尝试。之前的文章已经讲过大量在数组上进行线性展开的题目,数位dp是在数字的每一位上进行线性展开而已。不同的题目有不同的限制,解题核心在于:可能性的整理、排列组合的相关知识。解决数位dp的问题推荐使用记忆化搜索的方式,可能性的展开会很好写,不必刻意追求进一步改写,递归写出来问题就解决了,位数多就挂缓存,位数不多甚至不挂缓存也能通过。下面通过题目加深理解。

2025-02-11 20:56:06 890

原创 算法【状压dp】

状压dp是指设计一个整型可变参数status,利用status的位信息,来表示某个样本是否还能使用,然后利用这个信息进行尝试。写出尝试的递归函数 -> 记忆化搜索 -> 严格位置依赖的动态规划 -> 空间压缩等优化。如果有k个样本,那么表示这些样本的状态,数量是2^k。所以可变参数status的范围: 0 ~ (2^k)-1样本每增加一个,状态的数量是指数级增长的,所以状压dp能解决的问题往往样本数据量都不大。

2025-02-11 20:55:47 921

原创 算法【树型dp】

树是指头节点没有父亲,其他节点只有一个父亲的有向无环图,直观理解为发散状。在树上,从头节点出发到任何节点的路径是唯一的,不管二叉树还是多叉树都如此。树型dp在树上做动态规划,依赖关系比一般动态规划简单。因为绝大部分多数都是父依赖子。树型dp套路1)分析父树得到答案需要子树的哪些信息2)把子树信息的全集定义成递归返回值3)通过递归让子树返回全集信息4)整合子树的全集信息得到父树的全集信息并返回dfn序用深度优先遍历的方式遍历整棵树,给每个节点依次标记序号,编号从小到大的顺序就是dfn序。

2025-02-06 15:26:02 749

原创 算法【区间dp】

区间dp是指大范围的问题拆分成若干小范围的问题来求解。可能性展开的常见方式:1)基于两侧端点讨论的可能性展开。2)基于范围上划分点的可能性展开。下面通过题目加深理解。题目一分析:这道题的思路非常简单,判断left到right区间的字符串成为回文串最少插入次数,只需要判断left和right处字符是否相等,相等则插入次数为left+1到right-1区间字符串最少插入次数;不相等,则left到right-1的最少插入次数和left+1到right的最小插入次数取最小值即可得到答案。

2025-02-06 11:46:27 887

原创 算法【混合背包】

分析:这道题可以通过硬币的个数将其转化为01背包,完全背包和多重背包。如果硬币的个数是1个,则是01背包;如果硬币的面值×硬币的个数大于当前需要找零的数额,则是完全背包;对于不同的背包进行不同的可能性展开,最后统计,即可得到答案。其中,求dp数组循环中,i为在下标0~i的物品中取。当然,这道题其实可以直接将其当作一个多重背包,二进制优化后转化为01背包进行求解。混合背包是指多种背包模型的组合与转化。下面通过题目加深理解。

2025-02-01 20:01:34 277

原创 算法【多重背包】

就是将多重背包的件数转化为多个二进制背包的形式,这样可以通过转化出的多个物品不同的取舍方案得到对多重背包取不同件数的体现。比如件数为7,可以从1开始,转化为1,2,4三个背包,对于多重背包7件取多少件,可以通过1,2,4这三个背包取或不取得到。其中,dp数组的含义和记忆化搜索中f方法的含义基本相同,因为严格位置依赖的版本就是根据记忆化搜索写出来的。不过,严格位置依赖的版本依旧过不去。分析:这道题就是典型的多重背包模板,对于多重背包可能性的展开也十分容易想到,对于第i个物品不取或者依次取1个、2个、3个等。

2025-02-01 19:56:07 635

原创 算法【完全背包】

完全背包与01背包的区别仅在于每种商品可以选取无限次。时间复杂度O(物品数量 * 背包容量)下面通过题目加深理解。题目一分析:这是一道完全背包的模板题。对于第i个物品的可能性展开也有两种,第一种是不取第i个物品,即就是从0到i-1个物品里面取剩余重量为j的最大价值;第二种是只取一个第i个物品,即从0到i个物品取剩余重量为j-一个i物品重量的最大值+一个i物品的价值。

2025-01-31 16:42:14 987

原创 算法【分组背包】

分组背包是指多个物品分组,每组只能取1件。每一组的物品都可能性展开就可以了。注意时间复杂度不会升阶,O(物品数量 * 背包容量)。下面通过题目加深理解。

2025-01-31 16:41:55 515

原创 算法【有依赖的背包】

分析:对于这道题,可以参考01背包是对每个物品进行可能性的展开,有依赖的背包是对主件进行可能性的展开,所以可能性就比01背包的展开多。对于有两个附件的主件可能性的展开,就有五种,选主件、不选主件、主件和第一个附件一起选、主件和第二个附件一起选、主件和两个附件一起选。对于输入,代码中采用了几个数组结构存储信息,cost数组存储花费代价,value数组存储收益,king数组存储是否是主件,fans数组存储主件有多少个附件,follows数组存储每个主件拥有的附件。下面通过题目加深理解。

2025-01-27 21:42:21 486

原创 算法【01背包】

01背包是背包问题中最基础最简单的类型,只是对每个物品要和不要两种可能性展开,不存在过多的困难。下面通过几个题目加深理解。题目一分析:这个是01背包模板的题目。dp[i][j]表示,在前i个草药里面选,总共时间为j,可以采到的草药的最大总价值。对可能性的展开就是第i个草药选不选第i个草药有两种可能性,不选和选,比较它们的最大值。代码如下。进行空间压缩后的代码如下。

2025-01-27 21:42:07 626

原创 算法【最长递增子序列问题与扩展】

本文讲解最长递增子序列以及最长不下降子序列的最优解,以及一些扩展题目。本文中讲述的是最优解,时间复杂度是O(n*logn),空间复杂度O(n),好实现、理解难度不大。这个问题也可以用线段树来求解,时间和空间复杂度和本节讲的最优解没有区别。下面通过一些题目来加深理解。

2024-11-21 17:01:21 1132

原创 算法【子数组最大累加和问题与扩展】

子数组最大累加和问题是一个非常经典的问题,也比较简单。但是扩展出的问题很多,在笔试、面试中特别常见,扩展出的问题很多非常有趣,解法也比较巧妙。下面通过一些题目来加深理解。

2024-11-21 17:01:05 1189

原创 算法【从递归入手三维动态规划】

从递归到三维动态规划,包含多维费用背包,严格位置依赖的三维动态规划,三维动态规划的空间压缩注意:多维费用背包问题就是很普通的动态规划。但是后面文章里还会安排背包dp的内容,那时候会把其他几种背包问题做汇总讲述。尝试函数有1个可变参数可以完全决定返回值,进而可以改出1维动态规划表的实现。同理,尝试函数有2个可变参数可以完全决定返回值,那么就可以改出2维动态规划的实现。同理,尝试函数有3个可变参数可以完全决定返回值,那么就可以改出3维动态规划的实现。

2024-11-21 17:00:28 1015

原创 算法【更多二维动态规划题目】

本文不再从递归入手,而是直接从动态规划的定义入手,来解决更多二维动态规划问题。其中包含一些比较巧妙的尝试思路。

2024-10-07 22:56:29 588

原创 算法【从递归入手二维动态规划】

尝试函数有1个可变参数可以完全决定返回值,进而可以改出1维动态规划表的实现。同理,尝试函数有2个可变参数可以完全决定返回值,那么就可以改出2维动态规划的实现。一维、二维、三维甚至多维动态规划问题,大体过程都是:1.写出尝试递归。2.记忆化搜索(从顶到底的动态规划)。3.严格位置依赖的动态规划(从底到顶的动态规划)。4.空间、时间的更多优化。动态规划表的大小:每个可变参数的可能性数量相乘。动态规划方法的时间复杂度:动态规划表的大小 * 每个格子的枚举代价。

2024-10-07 22:43:54 911

原创 算法【从递归入手一维动态规划】

动态规划:用空间代替重复计算,包含一整套原理和技巧的总和。后面会有非常多的文章介绍动态规划。有些递归在展开计算时,总是重复调用同一个子问题的解,这种重复调用的递归变成动态规划很有收益。如果每次展开都是不同的解,或者重复调用的现象很少,那么没有改动态规划的必要。任何动态规划问题都一定对应着一个有重复调用行为的递归。所以任何动态规划的题目都一定可以从递归入手,逐渐实现动态规划的方法。尝试策略就是转移方程,完全一回事。推荐从尝试入手,因为代码好写,并且一旦发现尝试错误,重新想别的递归代价轻。

2024-09-26 20:41:27 1129

原创 算法【A星、Floyd、Bellman-Ford、SPFA】

假设从点P出发某条边,去往点S,边权为W。最短路存在的情况下,因为1次松弛操作会使1个点的最短路的边数+1,而从源点出发到任何点的最短路最多走过全部的n个点,所以松弛的轮数必然 <= n - 1,所以Bellman-Ford算法时间复杂度O(M*N)。分析:对于是否存在复环的判断,我们可以想到,使用Bellman-Ford算法,同时,加上SPFA优化。其中,在进行松弛操作时,使用了一个next_distance数组,表示所有的条件判断采用上一轮的状态,而不是实时更新的状态,这样就可以保证轮数对应中转次数。

2024-09-26 19:57:14 934

原创 算法【Dijkstra算法及分层图最短路】

Dijkstra算法:给定一个源点,求解从源点到每个点的最短路径长度。单源最短路径算法。适用范围:有向图、边的权值没有负数。彻底暴力的Dijkstra算法,不讲、时间复杂度太差、无意义。普通堆实现的Dijkstra算法,最普遍、最常用。算法核心过程:节点弹出过就忽略,节点没弹出过,让其它没弹出节点距离变小的记录加入堆。反向索引堆实现的Dijkstra算法,最快速、最极致。普通堆实现的Dijkstra算法,时间复杂度O(m * log m),m为边数。

2024-09-20 22:35:51 1149

西南交通大学机器学习理论课课程设计

西南交通大学机器学习理论课课程设计

2025-07-02

西南交通大学机器学习实验课程设计

西南交通大学机器学习实验课程设计

2025-07-02

西南交通大学【数电实验2-从代码到电路】

实验要求

2023-11-29

空空如也

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

TA关注的人

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