python k邻近搜索 代码实现
时间: 2024-01-10 14:44:24 浏览: 62
以下是 Python 中 k 近邻搜索算法的代码实现示例:
```python
from collections import Counter
import math
def euclidean_distance(x, y):
return math.sqrt(sum([(a - b) ** 2 for a, b in zip(x, y)]))
class KNN:
def __init__(self, k):
self.k = k
def fit(self, X, y):
self.X = X
self.y = y
def predict(self, X):
y_pred = []
for x in X:
distances = []
for i, x_i in enumerate(self.X):
distance = euclidean_distance(x, x_i)
distances.append((i, distance))
distances = sorted(distances, key=lambda x: x[1])
indices = [i for i, _ in distances[:self.k]]
labels = [self.y[i] for i in indices]
label = Counter(labels).most_common(1)[0][0]
y_pred.append(label)
return y_pred
```
这个示例实现了一个 KNN 分类器,其中 `euclidean_distance()` 函数计算两个向量之间的欧几里得距离,而 `KNN` 类的 `fit()` 方法用于训练分类器,而 `predict()` 方法用于使用训练好的分类器进行预测。
阅读全文