编写自定义函数knn_classify(train_data, test_data, k)
时间: 2024-05-07 18:23:12 浏览: 138
KNN.zip_K._knn分类_测试数据
好的,让我来为您编写一个自定义函数knn_classify(train_data, test_data, k):
```python
import numpy as np
from collections import Counter
def knn_classify(train_data, test_data, k):
"""
K-最近邻分类器。
参数:
train_data -- 训练数据,一个二维NumPy数组,每行表示一个训练样本,每列表示一个特征。
test_data -- 测试数据,一个一维NumPy数组,表示待分类的样本。
k -- 选择最近邻的个数。
返回值:
label -- 分类结果,一个字符串,表示测试样本所属的类别。
"""
# 计算训练数据中每个样本与测试样本之间的距离
distances = np.sqrt(np.sum((train_data - test_data) ** 2, axis=1))
# 找到距离最近的k个训练样本的索引
nearest_indices = np.argsort(distances)[:k]
# 找到这k个训练样本中出现次数最多的类别
nearest_labels = train_data[nearest_indices][:, -1]
label = Counter(nearest_labels).most_common(1)[0][0]
return label
```
该函数使用欧几里得距离作为样本间的距离度量,并使用Counter对象来统计k个最近邻样本中出现次数最多的类别,并将其作为预测结果返回。
阅读全文