实验目的: 掌握 kNN 算法,并使用 python 语言实现 2. 基本思想: 给定一个训练集,对新输入的实例,在训练数据集中找到与该实例最接近的 k 个实例,这 k 个实例的多数属于 某个类,就把该输入实例分为这个类。 输入:训练集 T={(x1,y1),(x2,y2),...(xn,yn)},其中 x 为样本的特征向量,为样本的类别 输出:样本 x 所属的类别 y (1)选定距离度量方法,在训练集 T 中找出与待预测样本 x 最接近的 k 个样本点,包含这 k 个点的 x 的邻 域记作; (2)在中根据分类决策规则(如多数表决法)来决定 x 所属的类别 y,k=5
时间: 2024-02-23 22:03:26 浏览: 65
好的,你想使用Python实现kNN算法,并且k的值为5。那么,你需要先准备好训练集和测试集,在代码中读入数据。然后,你需要选择距离度量方法,例如欧氏距离或曼哈顿距离等。接下来,你可以编写代码来计算每个测试样本与训练集中所有样本的距离,并找到距离最近的k个邻居。最后,你需要根据分类决策规则(如多数表决法)来决定测试样本的类别。
下面是一个简单的kNN算法实现的Python代码示例:
```python
import numpy as np
from collections import Counter
# 读入数据
def load_data(file):
data = np.loadtxt(file, delimiter=",")
X = data[:, :-1]
y = data[:, -1]
return X, y
# 计算距离
def euclidean_distance(x1, x2):
return np.sqrt(np.sum((x1 - x2)**2))
# kNN算法
def knn(X_train, y_train, X_test, k):
y_pred = []
for x in X_test:
# 计算测试样本与所有训练样本的距离
distances = [euclidean_distance(x, x_train) for x_train in X_train]
# 找到距离最近的k个邻居
k_nearest_neighbors = np.argsort(distances)[:k]
# 根据多数表决法来决定测试样本的类别
k_nearest_labels = [y_train[i] for i in k_nearest_neighbors]
most_common_label = Counter(k_nearest_labels).most_common(1)[0][0]
y_pred.append(most_common_label)
return np.array(y_pred)
# 测试
X_train, y_train = load_data("train.csv")
X_test, y_test = load_data("test.csv")
y_pred = knn(X_train, y_train, X_test, k=5)
accuracy = np.sum(y_pred == y_test) / len(y_test)
print("Accuracy:", accuracy)
```
在这个例子中,我们使用了欧氏距离作为距离度量方法,并且计算了测试样本与所有训练样本的距离。然后,我们找到了距离最近的k个邻居,并使用多数表决法来决定测试样本的类别。最后,我们计算了模型的准确率,以评估模型的性能。
阅读全文