<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>kNN on Colommar Blog</title><link>https://www.colommar.asia/ml-notes/knn/</link><description>Recent content in kNN on Colommar Blog</description><generator>Hugo</generator><language>zh-CN</language><lastBuildDate>Wed, 08 Jul 2026 07:33:44 +0000</lastBuildDate><atom:link href="https://www.colommar.asia/ml-notes/knn/index.xml" rel="self" type="application/rss+xml"/><item><title>01. k-近邻算法概述</title><link>https://www.colommar.asia/ml-notes/knn/01-k-%E8%BF%91%E9%82%BB%E7%AE%97%E6%B3%95%E6%A6%82%E8%BF%B0/</link><pubDate>Wed, 08 Jul 2026 07:33:44 +0000</pubDate><guid>https://www.colommar.asia/ml-notes/knn/01-k-%E8%BF%91%E9%82%BB%E7%AE%97%E6%B3%95%E6%A6%82%E8%BF%B0/</guid><description>k 近邻 （k Nearest Neighbor, 简称 kNN）是一种常见的监督学习算法，它是 Cover T 和 Hart P 在 1967 年提出的一种既可以用于分类，也可以用于回归的学习方法。它的工作原理非常简单：用一句古话来说就是，“近朱者赤，近墨者黑”，给定测试样本，基于某种距离度量找出训练集中与其最靠近的 k 个训练样本，这</description></item><item><title>02. 距离度量方法</title><link>https://www.colommar.asia/ml-notes/knn/02-%E8%B7%9D%E7%A6%BB%E5%BA%A6%E9%87%8F%E6%96%B9%E6%B3%95/</link><pubDate>Wed, 08 Jul 2026 07:33:44 +0000</pubDate><guid>https://www.colommar.asia/ml-notes/knn/02-%E8%B7%9D%E7%A6%BB%E5%BA%A6%E9%87%8F%E6%96%B9%E6%B3%95/</guid><description>在前一节中，我们学习了 kNN 算法就是要找到距离输入样本最近的 k 个样本，然后再通过多数表决规则进行分类。那么这里的距离应该如何定义？ 我们在中学时就学过怎么计算平面几何中（二维空间）两点之间的距离： 如上图所示，点 和 点 之间的距离可以定义为： 在立体几何中（三维空间）两点之间的距离为： 这其实就是 欧氏距离 （Euclidean</description></item><item><title>03. k-近邻的算法实现：kd 树</title><link>https://www.colommar.asia/ml-notes/knn/03-k-%E8%BF%91%E9%82%BB%E7%9A%84%E7%AE%97%E6%B3%95%E5%AE%9E%E7%8E%B0-kd-%E6%A0%91/</link><pubDate>Wed, 08 Jul 2026 07:33:44 +0000</pubDate><guid>https://www.colommar.asia/ml-notes/knn/03-k-%E8%BF%91%E9%82%BB%E7%9A%84%E7%AE%97%E6%B3%95%E5%AE%9E%E7%8E%B0-kd-%E6%A0%91/</guid><description>根据前面的学习，我们知道实现 k 近邻算法的关键就是如何找到距离某个样本最近的 k 个样本。最简单的实现方法是线性扫描（linear scan），或者叫做暴力搜索，也就是依次计算输入样本和每个训练样本的距离，不过当训练集非常大时，这种计算非常耗时，是行不通的。 为了提高 k 近邻搜索的效率，人们想出了很多特殊的数据结构存储训练数据，以减少</description></item><item><title>04. sklearn 实战 k-近邻算法</title><link>https://www.colommar.asia/ml-notes/knn/04-sklearn-%E5%AE%9E%E6%88%98-k-%E8%BF%91%E9%82%BB%E7%AE%97%E6%B3%95/</link><pubDate>Wed, 08 Jul 2026 07:33:44 +0000</pubDate><guid>https://www.colommar.asia/ml-notes/knn/04-sklearn-%E5%AE%9E%E6%88%98-k-%E8%BF%91%E9%82%BB%E7%AE%97%E6%B3%95/</guid><description>这一节我们使用 sklearn 自带的鸢尾花数据集来实现 kNN 算法，和前面一样，我们只取数据集中的两个维度： 使用 sklearn 的 kNN 算法和 sklearn 的其他算法流程是一样的：首先定义分类器（在这里分类器为 KNeighborsClassifier ），然后通过 fit 训练数据得到模型，最后通过 predict 对新</description></item></channel></rss>