帮我用python写一个KNN算法训练自己数据集的代码
时间: 2023-08-28 10:24:46 浏览: 92
好的,以下是一个简单的KNN算法训练自己数据集的代码示例:
```python
import numpy as np
# 定义KNN算法函数
def knn(train_data, train_labels, test_data, k):
# 计算测试数据与训练数据之间的距离
distance = np.sqrt(np.sum(np.square(test_data - train_data), axis=1))
# 对距离进行排序
sorted_index = np.argsort(distance)
# 统计k个最近邻的类别
class_count = {}
for i in range(k):
label = train_labels[sorted_index[i]]
class_count[label] = class_count.get(label, 0) + 1
# 返回出现次数最多的类别
max_count = 0
max_label = -1
for label, count in class_count.items():
if count > max_count:
max_count = count
max_label = label
return max_label
# 加载数据集
train_data = np.array([[1, 2], [2, 1], [3, 4], [4, 3]])
train_labels = np.array([0, 0, 1, 1])
test_data = np.array([[1.5, 2.5], [3.5, 3.5]])
# 对测试数据进行预测
for i in range(test_data.shape[0]):
label = knn(train_data, train_labels, test_data[i], k=3)
print('测试数据{}的预测类别为{}'.format(test_data[i], label))
```
以上代码中,我们首先定义了一个knn函数,用于计算测试数据与训练数据之间的距离,并统计k个最近邻的类别,最后返回出现次数最多的类别。然后我们加载了一个简单的数据集,包含4个训练样本和2个测试样本,并使用knn函数对测试样本进行了预测。
阅读全文