117.info
人生若只如初见

怎么用python代码实现knn算法

下面是一个简单的示例代码,实现了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。

未经允许不得转载 » 本文链接:https://www.117.info/ask/fe135AzsLBAVWAFQ.html

推荐文章

  • access中group by怎么使用

    在Access中,GROUP BY子句用于对查询结果进行分组。它通常与聚合函数(如SUM、COUNT、AVG)一起使用,以便对每个组执行计算。
    以下是在Access中使用GROUP B...

  • access分类汇总查询如何做

    要对access数据库进行分类汇总查询,可以按照以下步骤进行操作: 打开Access数据库并进入查询设计视图。 从“表”选项卡中选择要查询的表格,并将其添加到查询设...

  • PHP define()函数的参数有哪些

    在 PHP 中,define() 函数用于定义一个常量。它接受两个必填参数和一个可选参数。下面是 define() 函数的参数列表:1. name(必填):指定常量的名称。常量名可以...

  • filebeat怎么收集多个目录日志

    Filebeat可以通过配置多个输入来收集多个目录的日志。以下是一个示例配置文件:
    filebeat.inputs:
    - type: log
    enabled: true
    paths:
    ...