悲观剪枝
悲观剪枝(Pessimistic Pruning)是决策树剪枝的一种方法,主要用于C4.5算法(ID3算法的改进版本),而其他决策树算法(如CART)通常采用不同的剪枝策略。以下是详细说明和剪枝方法的分类:
1. 悲观剪枝的应用场景
主要算法:C4.5
C4.5使用基于统计的悲观剪枝方法,通过比较剪枝前后子树的错误率估计(增加惩罚项)来决定是否剪枝。
核心思想:假设子树可能过拟合,因此对它的错误率估计持“悲观”态度(即高估其错误率),从而倾向于剪枝到更简单的结构。
不适用算法:
CART:采用代价复杂度剪枝(Cost-Complexity Pruning)。
ID3:无剪枝机制(C4.5是其改进版,加入了剪枝)。
其他现代算法(如随机森林、GBDT)通常通过预剪枝(如最大深度、最小样本分裂)或集成方法抑制过拟合。
2. 决策树剪枝方法的分类剪枝分为两大类:预剪枝(Pre-Pruning)和后剪枝(Post-Pruning)。
(1) 预剪枝(Pre-Pruning)在树生长过程中提前停止分裂,常见方法包括:
最大深度限制(Max Depth)
最小样本分裂(Min ...
sql:查询每个用户每天最近的评分
123456789101112131415161718WITH ranked_ratings AS ( SELECT user_id, rating, rating_date, ROW_NUMBER() OVER ( PARTITION BY user_id, DATE(rating_date) ORDER BY rating_date DESC ) AS rn FROM ratings)SELECT user_id, rating, rating_date, DATE(rating_date) AS rating_dayFROM ranked_ratingsWHERE rn = 1;
回溯(Backtracking)、DFS(深度优先搜索)和枚举(Enumeration)之间的关系
回溯(Backtracking)、DFS(深度优先搜索)和枚举(Enumeration)之间的关系12345枚举(最general的概念) ↓DFS(特定的枚举实现方式) ↓回溯(带"选择"和"撤销"的DFS)
DFS(深度优先搜索)
枚举的一种具体实现方式
按深度优先的顺序进行枚举
回溯(Backtracking)
DFS的一种特殊形式
包含**”选择”和“撤销选择”**的过程
通常用于求解排列、组合等问题
回溯模板和浅拷贝问题全排列问题:正确代码:
123456789101112131415161718192021222324class Solution: def permuteUnique(self , num: List[int]) -> List[List[int]]: results = [] self._backtrace([],num,[False,]*len(num),results) return results @staticmethod def ...
k8s
Python:熟练掌握多进程、类型注解、数据验证和日志管理,参与多个项目C++:熟练掌握Cmake工具和STL,熟悉OpenCV、eigen、PCL,理解Boost,参与多个项目
Python:熟练掌握多进程/协程、类型注解typing、数据验证pydantic、日志管理logging,熟练使用异步网络框架FastAPI,熟悉Autogluon自动机器学习和MLops工具wandb,熟悉torch、tf/keras、transformers深度学习框架,熟练掌握日志管理logging、环境管理uv/conda、异常调试,具备定时任务调度、配置管理使用经验,熟练使用numpy、Pandas、sklearn等机器学习库,掌握Playwright网络自动化,了解测试框架pytest
BM69 把数字翻译成字符串
1234567891011121314151617181920212223242526272829303132class Solution: def solve(self, nums: str) -> int: """ 计算给定字符串译码的可能数 """ # 步骤1:特殊处理0、10、20的情况 if nums == "0": return 0 if nums == "10" or nums == "20": return 1 # 以及这种特殊情况:首位为0或者当0的前面不是1或2时,无法译码,0种 if nums[0] == "0": return 0 for i in range(1, len(nums)): ...
BM96 主持人调度(二)
123456789101112131415161718192021222324252627282930313233## 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可## 计算成功举办活动需要多少名主持人# @param n int整型 有n个活动# @param startEnd int整型二维数组 startEnd[i][0]用于表示第i个活动的开始时间,startEnd[i][1]表示第i个活动的结束时间# @return int整型#将活动开始时间写入一个列表starts,进行排序。# 将活动结束时间写入一个列表ends,进行排序。# 每次活动开始时,需要增加一个主持人上场,每次活动结束时候可以释放一个主持人。# 所以按照时间先后顺序对starts进行遍历,每次有活动开始count++,每次有活动结束count--# 在count最大的时候,即是需要主持人最多的时候class Solution: def minmumNumberOfHost(self , n , startEnd ): starts=[] ends=[ ...
hf
12export HF_ENDPOINT=https://hf-mirror.comhf download pangda/word2vec-skip-gram-mixed-large-chinese --local-dir ./
mihomo 代理配置
1.下载metacubex-gh-pages和mihomo,注意,都放在/root/.config/mihomo目录下,
1234567891011gzip -d mihomo-linux-amd64-v1.19.10.gz # 重命名 mv mihomo-linux-amd64-v1.19.10 mihomo # 增加执行权限 chmod +x mihomo # 解压控制面板 unzip metacubexd-gh-pages.zip # 重命名 mv metacubexd-gh-pages ui # 运行 sudo ./mihomo -f config.yaml
…不宜公开
k近邻算法,KNN算法
原理:找到与给定样本最近的k个样本的类别,其中最多的类别即是分类器结果要点:1.最近——距离度量 2.集合决策——多数选举投票 3.k的选择补充:最近邻算法:k=1;没有显式学习步骤,由上面三个唯一决定该算法结果问题:找到k邻近的快速方法?[[ANN(近似最近邻搜索)]] KD树 (k-dimensional tree)、局部敏感哈希(LSH)
KNN算法中k值选择指南KNN(K-最近邻)算法中k值的选择对模型性能有重大影响。以下是关于k值选择的详细分析:
1. k值的影响模型表现
小k值:
复杂度高(因为分类边界复杂),容易过拟合
对噪声敏感,决策边界不规则
低偏差但高方差
大k值:
模型更平滑,减少噪声影响
可能导致欠拟合
高偏差但低方差
计算效率
较大k值需要计算更多邻居,略微增加计算成本
2. 选择k值的方法经验法则
分类问题:通常从k=√n开始(n为样本数)
回归问题:常用3-10之间的奇数
交叉验证最佳实践是使用交叉验证选择k值:
将数据分为训练集和验证集
尝试不同的k值
选择在验证集上表现最好的k值
启发式方法
对于类别不平衡 ...