logistic回归
将特征通过线性变换再通过sigmoid函数得到了对应预测值0或1.如果我们从另一个角度看,把整个sigmoid看成预测成1的概率,那么也是一样的表达式,因为z小于0时预测为1的概率很小;由于1-P(y=1)=P(y=0)即非1即0的概率之和为1,那么为0 的概率就是1减去sigmoid函数我们的目标是这个概率应该最大化,
ML习题和零散知识点
1梯度下降法是求解机器学习模型最常用的方法之一,下面关于梯度下降方法错误的是A梯度下降法可分为批量梯度下降法、小批量梯度下降法、随机梯度下降法B梯度下降法用来求解最小值,梯度提升法用来求解最大值C梯度下降法有很多优化方法,常用的有Adagrad、RMSprop、AdamD小批量梯度下降法、随机梯度下降法求解可能是局部最优,但批量梯度下降法一定是全局最优解
批量梯度下降法
BGD 使用全部训练数据计算梯度: 每次迭代时,计算损失函数对参数的梯度需要用到整个训练集的所有样本。例如,如果有10,000个样本,每次更新参数时都会基于这10,000个样本的平均梯度。
优点:梯度方向稳定,收敛到全局最优解(对于凸函数)。
缺点:计算开销大,尤其是数据量很大时,每次迭代都需要遍历全部数据。
关键点: BGD 的“批量”是指全部训练数据,而不是“一个批次”(后者是小批量梯度下降的概念)。
小批量梯度下降(Mini-batch GD)的定义
Mini-batch GD 使用一个批次的子集数据计算梯度: 每次迭代随机选取一小部分样本(如32、64、128个)计算梯度。例如,10,000个样本可能被分成多 ...
BM90 最小覆盖子串
无法使用哈希表组合的方式,因为子串T中可能存在重复元素
BM44 有效括号序列
使用栈,遇到左括号,入栈,遇到右括号,出栈顶元素与之匹配,若是匹配的左括号,则继续,否则return false,如果栈没有元素也是false;最后判断栈是否为空,不空为false
BM95 分糖果问题
技巧题
12345678910111213141516171819## 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可## pick candy# @param arr int整型一维数组 the array# @return int整型#class Solution: def candy(self , arr: List[int]) -> int: res = [1 for i in range(len(arr))] for i in range(len(arr)-1): if arr[i]<arr[i+1]: # 如果右边大,则调整为左边的加1 res[i+1]=res[i]+1 for i in range(len(arr)-1)[::-1]: if arr[i]>arr[i+1] and res[i]<=res[i+1]: # 如果左边大,但是分配的不够,则更新 res[i]=r ...
BM10 两个链表的第一个公共结点
想法1:两个指针到达两个链表末尾,然后不断向前直到不相同的结点,缺点:单向链表做不到向前想法2:暴力法,比较两个链表两两成对的地址是否一致,Python可以比较id,缺点:复杂度为O(n^2)想法3:改进想法1,使用栈存储遍历过的节点,不断出栈,缺点:空间复杂度为O(n)双指针法:想法4:参照题解,遍历完链表后从另一个链表继续遍历,直到两个指针相遇,缺点:难想到;两个链表长度不同时,无法第一次就在共同部分的同一位置遇见;当长度相同时,速度极快,且最优想法5:先计算长度差,再领先长度差遍历直到遇见
模拟运算
BM49 表达式求值
双栈法中缀转后缀(逆波兰表达式)为什么括号不入栈:如果入栈,当只有加号和一个运算符,如(1+2)*3,就会无法判定运算栈为空,直接出错
numpy
矩阵求逆np.linalg.inv
矩阵乘法@,matmult
保留小数位数导致的答案错误123np.round()res = [round(r,1)for r in res]
点积: np.dot,当都是一维行向量自动处理元素取出
明确知道是 0 维 → arr.item()
明确知道是 1 维 → arr[0] arr.item()
不确定维度时 → np.ravel(arr)[0] # 展平后取第一个元素
sql缩进格式
在 SQL 中,合理的换行格式可以提高代码的可读性和维护性。以下是推荐的 SQL 换行格式规范,适用于大多数数据库(MySQL、PostgreSQL、SQL Server、ClickHouse 等):
📜 SQL 换行格式规范1. 子句分行每个主要子句(SELECT, FROM, WHERE, GROUP BY 等)单独一行:
123456789101112SELECTcolumn1,column2FROMtable_nameWHEREcondition1AND condition2GROUP BYcolumn1ORDER BYcolumn2;
2. 多列分行查询多列时,每列单独一行并缩进:
1234567SELECTuser_id,username,email,created_atFROMusers;
3. JOIN 语句JOIN 和 ON 条件分行对齐:
12345678SELECTu.user_id,o.order_idFROMusers uJOINorders oON u.user_id = o.user_id;
4. WHERE 条件多条件时,每个条件一行,逻辑运算 ...
BM21 旋转数组的最小数字
比右不比左,因为除法取整在只有两个元素时,会取到左边的元素,会导致判断取等,但是如果和右边在左右区间相差一就不会出现这种情况,而是继续操作直到区间端点相等
在元素值相等但是区间没有缩减应该如何?缩减右区间端点值,因为此时left<right,缩减右边既不会错过最小值,因为mid和right的值相等;也不会导致区间出错,最多left=right-1时,right-=1后,left=right
为什么left = mid+1?如果不这样,当left+1=right时,mid会等于left,导致left=mid陷入死循环;而nums[mid]> nums[right]保证了mid=left不会是最小的,还有right比它更小