K近邻法及Python实现输出结果
时间: 2023-11-05 21:07:25 浏览: 90
K近邻法是一种简单而有效的机器学习算法,常用于分类和回归问题。它的基本思想是找到最接近一个样本的K个样本,然后根据这K个样本的标签来确定该样本的标签。
下面是一个简单的Python实现K近邻法的例子:
```python
import numpy as np
from collections import Counter
# 定义KNN算法函数
def knn(x_train, y_train, x, k):
distances = [] # 记录距离
for i in range(len(x_train)):
distance = np.sqrt(np.sum(np.square(x - x_train[i]))) # 计算欧氏距离
distances.append((distance, y_train[i])) # 将距离和标签加入列表
distances.sort() # 按距离排序
k_labels = [label for _, label in distances[:k]] # 取前k个样本的标签
label = Counter(k_labels).most_common(1)[0][0] # 找出出现次数最多的标签
return label
# 测试数据
x_train = np.array([[1, 2], [2, 3], [3, 4], [4, 5], [5, 6], [6, 7]])
y_train = np.array([0, 0, 0, 1, 1, 1])
x_test = np.array([3, 3])
# 调用KNN算法
k = 3
label = knn(x_train, y_train, x_test, k)
# 输出结果
print("测试样本属于类别:", label)
```
在上面的代码中,我们定义了一个`knn()`函数来实现K近邻算法。该函数接受四个参数:训练数据集、训练数据集的标签、测试数据集和K值。在函数内部,我们计算了测试数据集与每个训练数据集之间的欧氏距离,并将距离和标签存储在一个列表中。然后,我们将这个列表按照距离从小到大排序,并取前K个样本的标签。最后,我们使用`Counter`函数找到出现次数最多的标签,并返回该标签作为测试样本的预测结果。
在该代码中,我们使用了一个简单的二维数据集来测试算法。如果你运行上述代码,你应该会看到输出结果“测试样本属于类别: 0”,这意味着该测试样本属于标签为 0 的类别。
阅读全文