怎么用python代码实现knn算法

34次阅读
没有评论

共计 917 个字符,预计需要花费 3 分钟才能阅读完成。

下面是一个简单的示例代码,实现了 knn 算法:

python
import numpy as np
from collections import Counter

def knn(train_X, train_y, test_X, k):

   distances = []

   

   # 计算测试样本与训练样本之间的距离

   for i in range(len(train_X)):

       distance = np.sqrt(np.sum(np.square(test_X - train_X[i])))

       distances.append((distance, train_y[i]))

   

   # 按距离从小到大排序

   distances.sort(key=lambda x: x[0])

   

   # 选择距离最近的 k 个样本

   neighbors = []

   for i in range(k):

       neighbors.append(distances[i][1])

   

   # 根据 k 个样本的标签进行投票,选择出现次数最多的标签作为预测结果

   counter = Counter(neighbors)

   prediction = counter.most_common(1)[0][0]

   

   return prediction

# 测试数据
train_X = np.array([[1, 1], [1, 2], [2, 2], [3, 3], [4, 4]])
train_y = np.array([0, 0, 1, 1, 1])
test_X = np.array([[2, 3]])

# 使用 knn 算法进行预测
prediction = knn(train_X, train_y, test_X, 3)
print(" 预测结果:", prediction)

在这个示例中,我们使用 numpy 库进行数据处理,collections 库中的 Counter 类用于计算标签的出现次数。首先,计算测试样本与训练样本之间的欧式距离,并将距离和对应的标签保存在列表中。然后,根据距离从小到大排序,选择距离最近的 k 个样本。最后,根据 k 个样本的标签进行投票,选择出现次数最多的标签作为预测结果。在这个例子中,我们使用一个简单的二维数据集进行测试,预测结果为 1。

丸趣 TV 网 – 提供最优质的资源集合!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-12-21发表,共计917字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)