使用python代码实现KNN
时间: 2023-10-10 18:05:12 浏览: 90
以下是使用Python实现KNN算法的示例代码:
```python
import numpy as np
from collections import Counter
class KNN:
def __init__(self, k=3):
self.k = k
def fit(self, X, y):
self.X_train = X
self.y_train = y
def predict(self, X):
y_pred = []
for x in X:
distances = []
for x_train in self.X_train:
distance = np.sqrt(np.sum((x - x_train) ** 2))
distances.append(distance)
indices = np.argsort(distances)[:self.k]
k_nearest_labels = [self.y_train[i] for i in indices]
most_common = Counter(k_nearest_labels).most_common(1)
y_pred.append(most_common[0][0])
return np.array(y_pred)
```
在上面的代码中,我们定义了一个KNN类,它有三个方法:__init__、fit和predict。__init__方法用于初始化一个KNN对象,并且可以指定k值(即KNN算法中的k)。fit方法用于训练模型,接收训练数据X和对应的标签y,将它们存储在KNN对象中。predict方法用于预测新的数据点的标签,接收测试数据X,对于每个测试数据点,计算它与训练数据点之间的距离,找到k个最近的训练数据点,然后对这k个数据点的标签进行投票,选择票数最多的标签作为预测结果,最终返回预测结果的数组。
下面是一个使用KNN类的示例:
```python
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
iris = load_iris()
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.2, random_state=42)
knn = KNN(k=3)
knn.fit(X_train, y_train)
y_pred = knn.predict(X_test)
print("Accuracy:", accuracy_score(y_test, y_pred))
```
在这个示例中,我们加载了鸢尾花数据集,并将其分成训练集和测试集。然后我们创建了一个KNN对象,将训练集输入到fit方法中进行训练,然后使用predict方法对测试集进行预测,最后计算准确率并打印出来。
阅读全文