探索 K近邻 (KNN)。了解这种监督学习算法如何用于分类和回归,其在视觉搜索中的应用,以及与 Ultralytics YOLO26 的集成。
K-近邻(KNN)是一种稳健且直观的算法,广泛应用于监督学习领域,用于分类和回归任务。KNN以其简单性著称,常被归类为“惰性学习器”,因为它在训练阶段不构建模型或学习参数。相反,它记忆整个训练数据集,并且仅在请求预测时才执行计算。该算法的核心原理依赖于特征相似性:它假设具有相似属性的数据点在多维特征空间中彼此靠近。
K-近邻的机制由距离计算驱动。当引入一个新的查询点时,算法会搜索存储的数据集,以找到与新输入点最近的“K”个训练样本。
选择最优的“K”值是超参数调优中的关键一步。K的选择显著影响模型的性能及其对新数据的泛化能力。
尽管与深度神经网络相比,KNN更为简单,但它在现代AI中仍然具有高度相关性,尤其是在与先进的特征提取技术结合时。
尽管有效,KNN面临着维度灾难。随着特征(维度)数量的增加,数据点变得稀疏,距离度量也失去了其有效性。此外,由于它存储所有训练数据,KNN可能占用大量内存,并且在大型数据集上遭受高推理延迟。为了解决这个问题,实践者通常使用降维技术,如主成分分析(PCA),或使用专门的数据结构,如KD树来加速搜索。对于数据集和模型训练的企业级扩展,利用Ultralytics Platform可以帮助管理预处理复杂数据所需的计算资源。
区分K-近邻与K-均值聚类很重要,因为它们相似的名称经常引起混淆。
以下代码片段演示了使用流行的Scikit-learn库的简单KNN分类工作流。在计算机视觉背景下,输入“特征”通常会由像YOLO26这样的深度学习模型提取,然后传递给KNN分类器。
from sklearn.neighbors import KNeighborsClassifier
# Simulated feature vectors (e.g., extracted from YOLO26) and labels
# Features: [Size, Redness], Labels: 0=Apple, 1=Orange
features = [[0.8, 0.9], [0.9, 0.8], [0.2, 0.3], [0.3, 0.2]]
labels = [0, 0, 1, 1]
# Initialize KNN with 3 neighbors
knn = KNeighborsClassifier(n_neighbors=3)
knn.fit(features, labels)
# Predict the class of a new object [Size=0.85, Redness=0.85]
prediction = knn.predict([[0.85, 0.85]])
print(f"Predicted Class: {prediction[0]} (0=Apple, 1=Orange)")
开启您的机器学习未来之旅