- 博客(248)
- 收藏
- 关注
原创 【小白笔记】用随机森林(RF)做“嵌入式特征选择(embedded feature selection)
用随机森林计算特征重要性,然后按重要性排序,选出前 k 个特征(k 由 max_features 控制)
2026-03-18 10:00:24
148
原创 【小白笔记】 Recursive Feature Elimination(RFE)里,step 的含义
在 Recursive Feature Elimination(RFE)里,step的含义是。这个参数有两种解释方式,取决于你给的是还是。
2026-03-16 15:48:28
269
原创 【小白笔记】XGboost的scale_pos_weight是什么?(超参数的本质)
虽然参数是内置的,但给它赋什么值,是你作为算法工程师根据“第一性原理”决定的。在你的项目中,没有手动写一个死数字(比如10),而是写一个自动计算逻辑。步骤执行者动作第一步:定义逻辑你w负样本数正样本数w = \frac{\text{负样本数}}{\text{正样本数}}w正样本数负样本数第二步:动态计算代码在训练每一折(Fold)之前,数一数当前y_train里有多少 0 和 1第三步:传递参数代码将算出的结果填入第四步:执行训练XGBoost模型根据这个权重去分裂树的节点。
2026-03-12 17:18:35
201
原创 【小白笔记】:损失函数选择、树结构/训练机制、迭代符号含义
PredictionTree1(x)+ Tree2(x)+ Tree3(x)+ ...+ TreeT(x)深度 <= max_depth。
2026-03-12 16:56:17
185
原创 【小白笔记】功能函数与主函数的布局
功能函数写在主函数内部(嵌套)是完全OK的,且是推荐写法(封装性+内聚性更好);可以把功能函数移到主函数外部(主函数写完再写),但需要额外传递参数,牺牲了部分简洁性;原代码的嵌套布局核心优势是共享变量、封装辅助函数,这也是快速选择/排序这类算法的常规写法;若追求主函数逻辑连贯,优先选「外部函数布局(布局2)」,而非「嵌套函数放末尾(布局3)」(会报错)。如果你的核心诉求是“主函数代码不被嵌套函数打断”,布局2是最优选择;如果更看重代码简洁和封装性,原嵌套布局更合适。
2026-03-05 10:52:29
230
原创 【小白笔记】迭代与递归的区别
迭代:用循环(for/while)重复执行一段代码,靠变量更新和循环条件终止,是「自下而上」的解决思路;递归:函数调用自身,把大问题拆成更小的同类型问题,靠「递归终止条件」停止,是「自上而下」的解决思路。
2026-03-05 10:41:47
16
原创 【小白笔记】“定位目标位置”的核心都是:选pivot分区→算左区数量→判断目标在左/中/右区→只处理目标所在的分区
选pivot分区→算左区数量→判断目标在左/中/右区→只处理目标所在的分区;对比完整排序:定位位置只处理“目标所在的小范围”,完整排序处理“全部范围”,这是快速选择效率更高的根本原因;例子中找第4高的过程,完美体现了“不排序、只缩小范围”的核心——哪怕k不是巧合值,逻辑依然成立。
2026-03-04 22:32:56
53
原创 【小白笔记】「分区的目的」和「排序的方向」“i找大、j找小(适配升序目标)”还是“i找小、j找大(适配降序目标)
k转换(第k大→第n-k小)只确定目标位置的下标,和分区逻辑的“找大/找小”无关;“i找大、j找小”是分区手段,目的是把数组分成“≤pivot”和“≥pivot”两部分,快速定位目标位置,不是“把大的挪后面”;快速选择的核心是“分区找位置”,不是“完整排序”,所以分区方向只要能缩小范围即可,不用和排序方向完全一致。
2026-03-04 22:15:04
115
原创 【小白笔记】双层循环嵌套≠双指针
i/j只是变量名,核心看逻辑和目的,而非是否嵌套;双指针的核心是“分工+协同+效率优化”,普通双层循环是“无脑枚举”;LIS的暴力解法是普通双层循环,最优解(二分)才用到指针思想。
2026-03-04 22:04:02
127
原创 【小白笔记】快速排序与快速选择
快速排序的核心是分治+递归:以pivot为界划分“左中右”,递归处理左右,终止条件是子数组长度≤1;你说的“return调用函数”是递归的关键,目的是把大问题拆解成可解决的小问题;快速选择是快速排序的“剪枝版”——只处理需要的分区,因此效率更高。这个逻辑理解透了,不仅能搞定排序,还能解决“第k大/小元素”“topk”等一系列问题~# 选最右侧元素作为基准i = left# 分区:把比基准大的元素移到左边i += 1# 把基准放到正确位置# 判断基准位置是否是第k大# 去右区找。
2026-03-04 21:59:54
256
原创 PyCharm 是支持多任务并行运行的,切换不同的运行标签页 (Run Tabs)
PyCharm 是支持的,你现在的情况是因为所有任务的输出窗口“叠”在一起了,或者你还没发现如何切换它们。在 PyCharm 底部区域(通常是Run或Services。
2026-03-04 20:05:41
19
原创 IntCastingNaNError: Cannot convert non-finite values (NA or inf) to integer
这个错误Pandas 发现Label列中包含了或。由于整数类型(int)在原生 Pandas 中不支持存储 NaN,程序直接罢工了。
2026-03-04 19:47:40
16
原创 RuntimeWarning: invalid value encountered in divide
这是一个计算层面的警告而非逻辑错误。它提示你数据中存在一些在子集下失去区分度的特征。既然你的best_k=100并且跑出了很高的 AUC,说明程序已经自动帮你剔除了那些表现异常的特征。
2026-03-04 11:29:35
224
原创 【小白笔记】「最大乘积子数组」**是标准的动态规划问题**,没有初始化dp数组的原因
最大乘积子数组」是动态规划问题,没有dp数组是因为状态压缩(仅依赖前一个状态,无需保存所有状态),而非不用DP。初始化形式不同的核心原因是状态转移的依赖关系:LIS依赖前面所有状态,必须用数组;最大乘积仅依赖前一个状态,可用变量替代数组。最大乘积代码中,本质是「滚动的dp状态」,替代了dp数组的作用,初始化nums[0]对应dp数组的第一个元素初始化。这两道动态规划题目的时间复杂度和空间复杂度题目版本时间复杂度空间复杂度最长递增子序列基础DP版O(n²)O(n)最大乘积子数组。
2026-03-04 09:50:32
339
原创 【小白笔记】「最大乘积子数组」动态规划解法的比较的三个值,分别对应哪三种情况?
覆盖以 x 为结尾的连续子数组的所有可能形态(只取自己、延续最大、反转最小);x:应对“前面乘积为负,重新开始更优”的场景;x*max_prod:应对“正数延续最大收益”的常规场景;x*min_prod:应对“负数反转最小收益(负负得正)”的特殊场景。这三个候选值缺一不可,少任何一个都会导致某些测试用例计算错误——这也是动态规划中“穷举所有子问题可能”的体现。
2026-03-03 22:41:01
169
原创 【小白笔记】动态规划中“子序列问题”和“子数组问题”的核心差异
没有双层嵌套,核心原因是子数组必须连续,以nums[i]结尾的子数组只能依赖前一个位置(i-1)的结果,而非所有j < i;LIS需要双层循环,是因为子序列不连续,必须遍历所有前驱j < i,找到能形成最长递增的那个;不是“乘积直接乘就行”,而是连续子数组的特性,让子问题的依赖范围缩小到仅前一个位置。这个区别是动态规划中“子序列问题”和“子数组问题”的核心差异,理解这一点,你就能快速判断大部分DP问题的循环层数了~
2026-03-03 22:30:25
241
原创 【BUAA_latex】VScode中编辑论文操作记录(四)-在 VS Code 中使用 LaTeX Workshop 插件配合 PDF 视图(如 PDF.js)时,出现黑屏且显示“0 / 0”页
开启draft。
2026-01-27 16:00:38
288
原创 【BUAA_latex】VScode中编辑论文操作记录(三)-目录生成中断(已解决)
目录出问题时,优先看编译日志,而不是直接怀疑\chapter和目录命令。图片/表格引用时,遵循统一格式:图~\ref{fig:xxx}表~\ref{tab:xxx}(顺序推荐 caption 在前)避免孤立的图~或表~要么跟\ref{...},要么写成纯文字“如图所示”之类,不要混写。遇到“加入新章节后目录突然不见了”这类问题时,排查顺序建议:编译日志中是否有!开头的错误(特别是检查新增章节文件中:括号是否配对;\ref{...}是否对应;环境(enumerate。
2026-01-19 18:29:17
547
原创 【BUAA_latex】VScode中编辑论文操作记录(二)-参考文献
根据北航(BUAATHESI)模板说明,执行参考文献引用的过程可以分为和三个核心步骤。
2026-01-16 11:21:27
663
原创 【小白笔记】使用 Excel 进行方差分析(ANOVA)
选中了标题吗?(选中了就要勾选“标志”)。选中区域里是否有完全空白的单元格?(尝试精准选择数据范围)。选中数据时,右下角的求和状态栏显示的是“计数”还是“求和”?如果是“计数”,说明数据是文本格式。由于我键入的是公式得到的两列,选择将其复制为数字。
2026-01-14 19:22:58
857
原创 【BUAA_latex】VScode中编辑论文操作记录(一)
如果把写论文比作装修房子LaTeX 核心:是房子的毛坯框架。宏包 (Package):是各种专业工具(如:专门铺地板的工具、专门装电线的工具)。比如graphicx宏包让你能插入图片,amsmath宏包让你能写复杂的公式。文档类 (Document Class):就是你的装修设计总图纸。,这里的buaa就是北航(BUAA)官方提供的学位论文模板(设计总图纸)。它规定了封面长什么样、字体多大、目录怎么排版等。def/buaa。
2026-01-13 21:14:05
693
2
原创 【小白记录】MATLAB 2025b
在 VS Code 里用 MATLAB: 安装官方出的,这样你就可以在 VS Code 的界面里写 MATLAB,同时享受 VS Code 的所有插件。拥抱 2025b 的新界面: 点击侧边栏的“Add-Ons”图标,搜索相关的工具,或者开启模式,你会发现它已经越来越像 VS Code 了。在 MATLAB R2025b 中做信号处理,最强大的地方在于它不仅有函数库,还有一系列**“交互式 App”和“实时编辑器任务”**,这些可以让你像在 VS Code 里拖拽插件一样直观地处理数据。
2026-01-06 22:24:34
1628
原创 【大白笔记】最长递增子序列,乘积最大的子数组
本题的关键在于:负数会使最大和最小值互换,因此需要同时维护以当前位置结尾的最大乘积和最小乘积,通过动态规划在 O(n) 时间内完成。
2025-12-27 23:33:49
288
原创 【大白笔记】数组的第k大元素
k <= jk <= j:目标在左堆。k >= i:目标在右堆。中间:目标被夹住了,直接返回。这种“区间收缩”的思路其实和二分查找非常像。你觉得这种“夹击法”比起之前那种“确定一个中心点”的写法,是不是更像是在内存里做动态的范围缩小?
2025-12-27 22:24:03
308
原创 【大白笔记】快速排序Lomuto Partition
不处理> pivot的情况,是为了保持算法的简洁和高效。i记录小数的边界。j记录探索的边界。大数会自动被“挤”到i和j之间。
2025-12-27 21:24:14
315
原创 【大白笔记】原地修改和return
返回什么?默认返回None。结果在哪?结果就在你传入的那个原始arr对象里。怎么拿到结果?函数运行完后,直接去读原始的那个变量名即可。**如果你非要在最后写一行return arr,代码逻辑上没问题,但这就不再是纯粹的“副作用函数”风格了。
2025-12-27 20:24:56
370
原创 【大白笔记】递归终止条件base case的理解
你看到的和这里的它们都定义了问题的最小边界。它们都保证了递归不会无限进行下去。它们都处理了**“不需要再处理”**的情况。
2025-12-27 20:18:17
413
原创 【大白笔记】快速排序
left = []for x in arr: # 遍历数组里的每一个数if x < pivot: # 如果这个数比基准小left.append(x) # 把它放进左边的小篮子里我不原地交换数据了,我直接准备三个新篮子(左、中、右),按大小分拣。在算法效率上,它们面临同样的风险如果数组已经是正序的,选第一个做基准会产生最差情况。如果数组已经是逆序的,选最后一个做基准也会产生最差情况。“既然选第一个和最后一个都有风险,AI 领域处理大规模不确定数据时,你会怎么选?“我会使用随机化基准。即先用。
2025-12-27 20:15:43
599
原创 【大白笔记】heapq (堆/优先队列) queue.Queue / deque (普通队列)
如果只需要先进先出,用。如果涉及多线程任务分发,用。如果你需要动态获取最小/最大值,用heapq。
2025-12-27 15:05:59
235
原创 【大白笔记】二叉树的直径,二叉树的最大深度,翻转二叉树,对称二叉树,二叉树的层序遍历
self在类的方法内部调用同一个类的其他(或同一个)实例方法时,self.是必不可少的连接纽带。这道题是二叉树中的经典题目。所谓的“翻转”,其实就是把每一个节点的左子节点和右子节点进行交换。我们可以通过递归的方式,从上到下或者从下到上依次交换所有节点的左右孩子。
2025-12-27 00:22:42
1022
原创 【大白笔记】给出二叉树三种遍历(前序 / 中序 / 后序)的迭代写法
前序遍历 = 访问节点时立刻处理弹出即访问压栈顺序:右 → 左中序遍历 = 左边走完了,才能记自己,然后再去右边记忆口诀:“左 → 记 → 右”“不走到最左,绝不记”这句话非常重要,后面所有代码都是为了实现它。
2025-12-26 12:35:39
623
原创 【大白笔记】二叉树的直径,数组中的第K个最大元素,编辑距离,有序矩阵中第K小的元素(第K大),最长递增子序列,冒泡排序,最长公共子序列,二维的最大子矩阵
给定一棵树(无向、连通、无环图),树的直径是指:树中任意两个节点之间的最长简单路径的长度。边数(更常见,尤其在 LeetCode)或节点数(需题目明确说明)直径的两个端点通常是树中“最远的两个节点”。树的最大直径问题,本质是求树中任意两点间的最长路径,常见解法包括一次 DFS 的树形 DP,或在一般树中使用两次 BFS/DFS。LeetCode 215:数组中的第 K 个最大元素(Kth Largest Element in an Array)下面我按题目本质 → 常见解法 → 面试如何选方案。
2025-12-25 00:10:27
697
原创 【大白笔记】两个数组的交集(I和II),存在重复元素,最长连续序列
题号是否唯一核心结构关键词349是Set去重350否计数一句话对比“349 是集合交集,350 是多重集合交集。面试金句“只要题目涉及‘出现次数’,第一反应一定是哈希计数,而不是集合。“这是一个典型的判重问题,用哈希集合可以在 O(n) 时间内完成。这道128. 最长连续序列是一道非常经典、非常“刁钻但优雅”的题,面试中用来区分“会用 set”和“真正理解 set 用法”的候选人。下面我按面试官认可的标准答案给你完整拆解。一个数xx - 1 不在集合中每个连续序列只会被遍历一次。
2025-12-24 23:44:17
878
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅