K-Nearest Neighbors

简介: 【6月更文挑战第6天】

KNN(K-Nearest Neighbors,K 最近邻)是一种基本的分类和回归算法,它的工作原理非常直观:通过测量不同特征值之间的距离来进行预测。

工作原理

KNN 算法的核心思想是,一个样本的类别可以由它的 "K" 个最近邻居(K 是一个正整数)的类别来决定。具体步骤如下:

  1. 确定 K 值:选择一个正整数 K,它决定了评估新数据点时将考虑多少个最近的邻居。

  2. 计算距离:计算待分类点与其他所有点之间的距离。常用的距离计算方法包括欧氏距离(Euclidean distance)、曼哈顿距离(Manhattan distance)和闵可夫斯基距离(Minkowski distance)等。

  3. 找到最近的 K 个邻居:根据计算得到的距离,选择距离最近的 K 个点作为邻居。

  4. 进行决策

    • 在分类问题中,可以通过对 K 个邻居的类别进行投票来确定新数据点的类别,即得票最多的类别将被赋予给新数据点。
    • 在回归问题中,可以通过计算 K 个邻居的值的平均值来预测新数据点的值。

KNN 的特点

  • 简单易懂:KNN 是一种非常简单的算法,易于理解和实现。
  • 无需训练:KNN 是一种惰性学习算法,它不需要在训练阶段构建模型,所有的计算都是在预测阶段进行的。
  • 可用于非线性问题:KNN 不需要假设数据的分布,因此可以用于非线性问题的分类和回归。
  • 敏感性:KNN 对数据规模、噪声和不相关特征比较敏感,这可能会影响其性能。

KNN 的缺点

  • 计算成本高:由于在预测时需要计算待分类点与所有训练数据点之间的距离,因此当数据集很大时,计算成本会很高。
  • 存储成本高:KNN 需要存储全部数据集,因此存储成本较高。
  • 对不平衡数据敏感:KNN 对类别不平衡的数据集比较敏感,可能会导致预测偏差。
  • 需要选择合适的 K 值:K 值的选择会对算法的性能产生重要影响,需要通过交叉验证等方法来选择最优的 K 值。

KNN 的应用

KNN 可以应用于多种场景,包括但不限于:

  • 图像识别
  • 推荐系统
  • 医疗诊断
  • 模式识别

实现 KNN

在 Python 中,可以使用 scikit-learn 库来轻松实现 KNN 分类器:

from sklearn.neighbors import KNeighborsClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report

# 加载数据集
iris = load_iris()
X = iris.data
y = iris.target

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 创建 KNN 分类器
knn = KNeighborsClassifier(n_neighbors=3)

# 训练模型
knn.fit(X_train, y_train)

# 预测
y_pred = knn.predict(X_test)

# 评估模型
print(classification_report(y_test, y_pred))

image.png

目录
相关文章
|
2月前
|
机器学习/深度学习 算法 PyTorch
K-Nearest Neighbors
【10月更文挑战第02天】
53 5
|
监控
DFNet: Enhance Absolute Pose Regression withDirect Feature Matching
DFNet: Enhance Absolute Pose Regression withDirect Feature Matching
147 0
|
算法 Windows
RANSAC算法理解
RANSAC算法理解
375 0
RANSAC算法理解
|
运维 安全 数据挖掘
Outlier and Outlier Analysis|学习笔记
快速学习 Outlier and Outlier Analysis
Outlier and Outlier Analysis|学习笔记
Open CASCADE之拟合Smooth curve
Open CASCADE之拟合Smooth curve
818 0
Open CASCADE之拟合Smooth curve
|
计算机视觉
Paper之CV:《One Millisecond Face Alignment with an Ensemble of Regression Trees》的翻译与解读
Paper之CV:《One Millisecond Face Alignment with an Ensemble of Regression Trees》的翻译与解读
Paper之CV:《One Millisecond Face Alignment with an Ensemble of Regression Trees》的翻译与解读
成功解决coordinate_descent.py:491: ConvergenceWarning: Objective did not converge. You might want to inc
成功解决coordinate_descent.py:491: ConvergenceWarning: Objective did not converge. You might want to inc
|
存储 传感器 计算机视觉
gamma correction是什么
gamma correction是什么 在看传统cv的时候遇到几个比较有意思的之前不了解的东西,比如gamma correction,gamma是几乎所有数字成像系统中都很重要但很少被人理解的概念,它定义了像素的数值与其实际亮度之间的关系。
2186 0
|
机器学习/深度学习 算法 数据挖掘
KNN(K-Nearest Neighbor)介绍
KNN(K-Nearest Neighbor)介绍 原文地址:https://www.cnblogs.com/nucdy/p/6349172.html Wikipedia上的 KNN词条 中有一个比较经典的图如下: KNN的算法过程是是这样的: 从上图中我们可以看到,图中的数据集是良好的数据,即都打好了label,一类是蓝色的正方形,一类是红色的三角形,那个绿色的圆形是我们待分类的数据。
1364 0
|
XML 编解码 API
Vectors For All (almost)
本文讲的是Vectors For All (almost),经常阅读 Styling Android 的读者会知道我有多么喜欢用 VectorDrawable 和 AnimatedVectorDrawable 。
1291 0