knn算法python代码
时间: 2023-10-12 19:20:57 浏览: 30
以下是一个简单的knn算法的Python代码,用于分类任务。
```python
import numpy as np
from collections import Counter
def knn(X_train, y_train, X_test, k):
"""
:param X_train: train data features, shape=(m, n)
:param y_train: train data labels, shape=(m,)
:param X_test: test data features, shape=(m', n)
:param k: the number of nearest neighbors to consider
:return: the predicted labels for test data, shape=(m',)
"""
y_pred = []
for i in range(X_test.shape[0]):
distances = np.sqrt(np.sum((X_train - X_test[i])**2, axis=1)) # 计算训练数据和测试数据之间的距离
nearest_neighbors = np.argsort(distances)[:k] # 取出距离最近的前k个数据的索引
nearest_labels = y_train[nearest_neighbors] # 取出距离最近的前k个数据的标签
c = Counter(nearest_labels) # 统计标签出现的次数
y_pred.append(c.most_common(1)[0][0]) # 取出出现次数最多的标签作为预测结果
return np.array(y_pred)
```
注意,这只是一个简单的实现。在实际应用中可能需要进行一些改进,比如特征归一化、距离权重等。