From afe2db0ff8411d8a59f692ab2dd9606d0698e2b7 Mon Sep 17 00:00:00 2001 From: Xionghaoran <719929980@qq.com> Date: Tue, 22 Oct 2024 19:45:38 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20function.py?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- function.py | 25 ------------------------- 1 file changed, 25 deletions(-) diff --git a/function.py b/function.py index e86ac2c..bf7ac7c 100644 --- a/function.py +++ b/function.py @@ -1,6 +1,5 @@ import numpy as np import os -from sklearn.neighbors import KDTree """ 实验说明: @@ -58,26 +57,6 @@ def classify(input_vector, dataSet, labels, k=1, distance_metric='euclidean', we return predicted_label -def classify_with_kdtree(input_vector, dataSet, labels, k=1): - """ - 使用 KD-tree 进行加速的 kNN 分类算法。 - - Args: - - input_vector (numpy array): 输入待分类的样本。 - - dataSet (numpy array): 训练数据集。 - - labels (list or numpy array): 训练集对应的标签。 - - k (int): kNN 算法参数,默认值为1。 - - Returns: - - int: 预测的分类标签。 - """ - tree = KDTree(dataSet) # 构建 KD-tree - dist, indices = tree.query(input_vector.reshape(1, -1), k=k) # 查询最近邻 - nearest_labels = np.array(labels)[indices[0]] - predicted_label = np.bincount(nearest_labels).argmax() - return predicted_label - - def load_dataset(directory): """ 从文件夹中加载数据,若不自行正确实现,则无法通过评测,不记录成绩。 @@ -162,7 +141,3 @@ if __name__ == "__main__": # 使用默认的欧氏距离和不加权的投票机制 predicted_label = classify(test_vector, train_data, train_labels) print(f"预测的标签(普通分类): {predicted_label}") - - # 使用 KD-tree 进行加速的分类 - predicted_label_kdtree = classify_with_kdtree(test_vector, train_data, train_labels) - print(f"预测的标签KD-tree 加速: {predicted_label_kdtree}")