怎么用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。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341