更新 function.py
Gitea Actions Experiment Test / Experiment-Actions (push) Successful in 34s

This commit is contained in:
2024-10-22 19:45:38 +08:00
parent 6327761f45
commit afe2db0ff8
-25
View File
@@ -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}")