K-近邻(K-Nearest Neighbors,KNN)算法是一种简单的监督学习算法,通常用于分类任务,但也可以用于回归任务。KNN算法的核心思想是,一个新样本的分类可以通过查询其最近的K个邻居的类别来确定。这些邻居是基于距离度量的,例如欧几里得距离。
以下是KNN算法的基本步骤:
选择一个距离度量(例如,欧几里得距离)。
确定邻居的数量K。
对于新的输入样本,计算它与训练集中每个样本的距离。
根据距离对训练集中的样本进行排序,并选择最近的K个样本。
对这K个样本的类别进行投票,以确定新样本的类别。
在这个实现中,我们首先定义了一个计算欧几里得距离的函数。然后,我们创建了一个KNN类,其中包含了fit和predict方法。fit方法用于训练模型,即保存训练数据。predict方法用于预测测试数据的类别,它使用私有方法_predict来为每个测试样本找到最近的K个邻居,并基于这些邻居的类别进行投票。
最后,我们使用鸢尾花(Iris)数据集来演示KNN算法的分类效果,并计算了预测的准确性。在实际应用中,通常使用scikit-learn库中的KNeighborsClassifier