news 2026/9/2 6:35:37

DAY12@浙大疏锦行

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
DAY12@浙大疏锦行

笔记和作业

使用bayes_opt库的流程

1.# 定义目标函数

def knn_cv_score(n_neighbors, weights, metric): """ 输入KNN参数,返回交叉验证平均准确率 参数说明: - n_neighbors: 近邻数(整数,贝叶斯优化会自动处理浮点转整数) - weights: 权重方式(0=uniform,1=distance) - metric: 距离度量(0=euclidean,1=manhattan,2=chebyshev) """
# 将连续参数转换为整数(贝叶斯优化默认传浮点,需转为KNN要求的类型) n_neighbors = int(round(n_neighbors)) # 近邻数必须是整数 weights = "uniform" if weights < 0.5 else "distance" # 类别参数映射 metric_map = {0: "euclidean", 1: "manhattan", 2: "chebyshev"} metric = metric_map[int(round(metric))] # 创建模型 knn = KNeighborsClassifier( n_neighbors=n_neighbors, weights=weights, metric=metric, n_jobs=-1 # 并行计算加速 ) # 5折交叉验证,返回平均准确率 cv_scores = cross_val_score(knn, X_train, y_train, cv=5, scoring="accuracy") return cv_scores.mean()

2.# 定义参数搜索空间

# 注意:贝叶斯优化仅支持连续型参数,类别型需映射为数值区间 pbounds = { "n_neighbors": (3, 30), # 近邻数范围:3~30 "weights": (0, 1), # 0→uniform,1→distance "metric": (0, 2) # 0→euclidean,1→manhattan,2→chebyshev } for param, (low, high) in pbounds.items(): # items方法返回字典的键值对 range_size = high - low print(f" {param:20s}: [{low:7.1f}, {high:7.1f}] (范围: {range_size:7.1f})")

3.# 创建贝叶斯优化器,优化的过程已经被这个对象封装了

# 初始化优化器(verbose=2:打印迭代过程) optimizer = BayesianOptimization( f=knn_cv_score, pbounds=pbounds, random_state=42, verbose=2 ) start_time = time.time() # 开始优化(n_iter:迭代次数,init_points:初始随机搜索点数) # init_points越多,初始探索越充分;n_iter越多,优化越精细 optimizer.maximize(init_points=5, n_iter=20) end_time = time.time() print(f"优化完成!总耗时: {end_time - start_time:.2f} 秒".center(80))

4.# 提取所有迭代的结果

terations = [] scores = [] for i, res in enumerate(optimizer.res): # res包含每次迭代的结果,index从0开始 iterations.append(i + 1) # 迭代次数从1开始 scores.append(res['target']) # 提取得分

5.# 计算累计最优值

best_scores = [] current_best = -np.inf # 初始化为负无穷大 for score in scores: if score > current_best: # 检查当前得分是否打破历史记录 current_best = score best_scores.append(current_best)

6.# 绘制优化轨迹

# 左图:每次迭代的得分 ax1.plot(iterations, scores, 'o-', label='每次迭代得分', alpha=0.7, markersize=6) ax1.plot(iterations, best_scores, 'r--', label='累计最优得分', linewidth=2) ax1.axhline(y=optimizer.max['target'], color='green', linestyle=':', label=f'最终最优: {optimizer.max["target"]:.4f}') # axhline绘制水平线 ax1.set_xlabel('迭代次数', fontsize=12) ax1.set_ylabel('准确率', fontsize=12) ax1.set_title('贝叶斯优化收敛曲线 (超大空间100次迭代)', fontsize=14, fontweight='bold') ax1.legend() ax1.grid(True, alpha=0.3) # 右图:初始探索 vs 贝叶斯优化 init_points = 20 # 更新为20 ax2.plot(iterations[:init_points], scores[:init_points], 'bo-', label=f'随机探索 (前{init_points}次)', markersize=8, alpha=0.7) ax2.plot(iterations[init_points:], scores[init_points:], 'go-', label=f'贝叶斯优化 (后{len(iterations)-init_points}次)', markersize=8, alpha=0.7) ax2.axvline(x=init_points, color='red', linestyle='--', alpha=0.5, label='探索→利用') # axvline绘制垂直线 ax2.set_xlabel('迭代次数', fontsize=12) ax2.set_ylabel('准确率', fontsize=12) ax2.set_title('探索阶段 vs 利用阶段', fontsize=14, fontweight='bold') ax2.legend() ax2.grid(True, alpha=0.3) plt.tight_layout() plt.show()
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/3 3:40:37

基于SpringBoot的东方红食品公司采购管理系统的设计与实现_usr5txay

目录具体实现截图项目介绍论文大纲核心代码部分展示项目运行指导结论源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作具体实现截图 本系统&#xff08;程序源码数据库调试部署讲解&#xff09;同时还支持java、ThinkPHP、Node.js、Spring B…

作者头像 李华
网站建设 2026/9/2 23:53:31

嵌入式项目之温湿度闹钟

在个人职业发展的经济模型中&#xff0c;薪资水平本质上是对个人“不可替代性”和“价值创造范围”的定价。许多人长期困在低薪的“基础项目”中&#xff0c;并非不努力&#xff0c;而是因为他们始终停留在“螺丝钉”的角色——精通单一技能&#xff0c;但对整个系统的商业价值…

作者头像 李华
网站建设 2026/9/2 15:33:44

Flutter:跨平台开发的未来之选——从入门到进阶全攻略

Flutter&#xff1a;跨平台开发的未来之选——从入门到进阶全攻略 一、引言&#xff1a;为什么Flutter是跨平台开发的最佳选择&#xff1f; 在移动开发领域&#xff0c;跨平台框架的竞争从未停歇。React Native、Xamarin等方案虽各有优势&#xff0c;但Flutter凭借其独特的自…

作者头像 李华
网站建设 2026/9/2 5:09:29

PHP 8.6 即将支持部分函数应用

什么是部分函数应用&#xff1f;PHP 8.6 的部分函数应用允许你通过调用函数时传入部分参数&#xff0c;并用占位符表示剩余参数&#xff0c;来创建一个"预配置"的 callable。PHP 不会立即执行函数&#xff0c;而是返回一个 Closure&#xff0c;其参数列表会根据缺失的…

作者头像 李华
网站建设 2026/9/3 3:33:51

大龄程序员转行做了网安,网络安全的红利还能吃几年?

在IT行业&#xff0c;35岁似乎成了一个分水岭。许多程序员在这个年龄开始焦虑&#xff0c;担心自己的职业生涯会因年龄增长而走向下坡路。但确实到了这个年纪竞争力会快速下降&#xff0c;薪资收入长期停滞甚至下降。 还有一部分过了35岁真的就失业了。知乎上很多人认为这么说就…

作者头像 李华
网站建设 2026/9/3 1:37:04

物理Data Guard技术深度解析:配置、原理与运维实践

一、Data Guard核心原理与架构1.1 核心工作机制物理Data Guard的本质是"异机备份日志实时恢复"的闭环体系&#xff0c;核心依赖主备库间的日志传输与应用流程&#xff0c;关键进程交互如下&#xff1a;主库&#xff08;Primary Database&#xff09;&#xff1a;LGWR…

作者头像 李华