k近邻算法Python实现
时间: 2024-05-13 08:11:32 浏览: 111
k近邻算法(k-Nearest Neighbor,k-NN)是一种基本的分类和回归方法,它的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。
以下是一个简单的k近邻算法Python实现:
```python
import numpy as np
from collections import Counter
def knn(X_train, y_train, x, k):
distances = [np.sqrt(np.sum((x - x_train) ** 2)) for x_train in X_train]
nearest = np.argsort(distances)
top_k = [y_train[i] for i in nearest[:k]]
votes = Counter(top_k)
return votes.most_common(1)
# 示例
X_train = np.array([[1, 2], [1, 4], [2, 1], [4, 2], [4, 4]])
y_train = ['A', 'A', 'B', 'B', 'B']
x = np.array([3, 2.5])
print(knn(X_train, y_train, x, k=3))
```
在上述代码中,`X_train`是训练集数据,`y_train`是训练集标签,`x`是待分类的数据点,`k`表示选取的最近邻个数。
函数首先计算待分类数据点与训练集中所有数据点的距离,并将距离从小到大排序。然后选择距离最小的前k个数据点,并统计它们所属的类别。最后返回出现次数最多的类别作为预测结果。