当前位置: 首页 > news >正文

【小白笔记】KNN 核心预测函数 _predict_one 的过程

KNN 核心预测函数 _predict_one 的过程,本质上就是在用 PyTorch 的能力,一步步实现欧几里得距离公式,并进行多数表决


核心预测函数 _predict_one 记忆口诀(三步法)

步骤目标核心口诀 (PyTorch 链式操作)记忆代码行 (骨架)
第一步算距离 (L2 范数)扩展 → 相减 → 平方 → 求和 → 开方torch.sqrt(torch.sum( (X_train - x_new.unsqueeze(0)).pow(2), dim=1))
第二步找邻居距离排序 → 取前 K 个索引k_indices = torch.argsort(distances)[:self.k]
第三步定类别标签索引 → 移回 CPU → 多数表决Counter(y_train[k_indices].cpu().tolist()).most_common(1)[0][0]

核心代码精简解读与记忆点

下面是您需要背诵的、最核心的部分,每行都给出了精简的记忆提示:

A. 步骤 1:计算欧几里得距离 (L2 Distance)
代码行目的/功能关键记忆点
x_new_expanded = x_new.unsqueeze(0)形状准备。将 (Nfeat,)(N_{\text{feat}},)(Nfeat,) 变成 (1,Nfeat)(1, N_{\text{feat}})(1,Nfeat), 准备广播。unsqueeze(0):加 1 维,激活广播。
differences = self.X_train - x_new_expanded算差值。利用广播机制,计算新点与所有训练点的差。X_train - …:张量广播相减。
squared_differences = differences.pow(2)算平方。对所有差值进行平方。.pow(2):欧氏距离公式的第一步。
sum_squared_diff = torch.sum(squared_differences, dim=1)算求和。沿着特征轴 (dim=1) 求和,得到距离平方。torch.sum(…, dim=1):沿着特征维求和。
distances = torch.sqrt(sum_squared_diff)算开方。最终得到欧几里得距离。torch.sqrt(…):距离计算完成。
B. 步骤 2:找到 K 个最近邻居
代码行目的/功能关键记忆点
k_indices = torch.argsort(distances)[:self.k]找索引。对所有距离排序,并取出前 K 个最小距离的索引argsort()[:self.k]:排序后取前 K 个。
C. 步骤 3:多数表决 (Majority Voting)
代码行目的/功能关键记忆点
k_nearest_labels_torch = self.y_train[k_indices]取标签。根据索引从训练标签中取出 K 个邻居的标签。y_train[k_indices]:张量索引。
k_nearest_labels_cpu = k_nearest_labels_torch.cpu().tolist()数据桥接。将标签张量移回 CPU 并转为 Python 列表,以使用 Counter.cpu().tolist():关键的 CPU 转换步骤。
most_common = Counter(k_nearest_labels_cpu).most_common(1)统计投票。找出出现次数最多的类别。Counter().most_common(1):多数表决。
return most_common[0][0]返回结果。提取出频率最高的类别标签。[0][0]:提取最终标签值。

掌握这三步法和对应口诀,就能快速重现 _predict_one 的核心逻辑了。

http://www.dtcms.com/a/495387.html

相关文章:

  • 营销人职业成长路径:从执行到战略的能力进阶与知识体系构建
  • Elasticsearch 推理 API 增加了开放的可定制服务
  • 做电影网站还能赚钱ace wordpress
  • 建设农家书屋官方网站临沂设计网站的公司
  • 10.queue的模拟实现
  • 有多少网站可以推广业务阿里云个人网站建设
  • 【知识点总结】Vue2 与 Vue2 区别
  • 【CV】神经网络中哪些参数需要被学习?
  • Spring两大漏洞可导致泄露敏感信息及安全防护绕过(CVE-2025-41253/41254)
  • 了解一个文件签名验证工具——sigverif
  • 河北建筑网站江小白网络营销案例
  • 张家口网站建设开发网站开发案例教程
  • 【NestJS】class-transformer什么用
  • 【word多文档docx合并】
  • Endnote | word中加载项消失不见,如何处理?
  • 聊聊 Unity(小白专享、C# 小程序 之 图片播放器)
  • 查询个人房产信息网站查看wordpress密码破解
  • 做网站用什么框架dede淘宝客网站
  • 高级篇:Python脚本(101-150)
  • pdf解析工具---Miner-u 本地部署记录
  • 怎么快速做网站文章新乡个人网站建设价格
  • 关于.net网站开发外文书籍wordpress子标题
  • 基于OpenIddict6.4.0搭建授权认证服务
  • 中国建设银行网站企业北京网站维护一般价格多少
  • shell编程语言---正则表达式,grep
  • JoyAgent问数多表关联Bug修复
  • 网站建设投标书报价表高端网站设计思路
  • 【玩泰山派】8、泰山派安装armbian,玩armbian
  • 雄安建设集团 网站推荐个在广州做网站的
  • vue3加载shp文件 并地图上展示