python写一个KNN算法代码
时间: 2023-10-03 19:08:27 浏览: 96
好的,下面是一个简单的 Python KNN 算法代码实现:
```python
import numpy as np
class KNN:
def __init__(self, k):
self.k = k
def fit(self, X, y):
self.X_train = X
self.y_train = y
def predict(self, X):
y_pred = []
for i in range(len(X)):
distances = []
for j in range(len(self.X_train)):
distance = np.sqrt(np.sum(np.square(X[i] - self.X_train[j])))
distances.append((distance, self.y_train[j]))
distances.sort()
neighbors = distances[:self.k]
classes = {}
for neighbor in neighbors:
if neighbor[1] in classes:
classes[neighbor[1]] += 1
else:
classes[neighbor[1]] = 1
sorted_classes = sorted(classes.items(), key=lambda x: x[1], reverse=True)
y_pred.append(sorted_classes[0][0])
return y_pred
```
其中,KNN 类包含三个方法:
- `__init__`:初始化 KNN 类,传入一个参数 k,表示要选择几个最近邻;
- `fit`:训练模型,传入训练数据 X 和对应的标签 y;
- `predict`:预测新的数据,传入测试数据 X,返回预测标签 y_pred。
KNN 算法的思路是,对于测试集中的每个数据点,计算其到所有训练集数据点的距离,选择距离最近的 k 个训练集数据点,统计这 k 个数据点中出现最多的标签,作为测试数据点的预测标签。
阅读全文