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

This commit is contained in:
2024-10-20 13:44:26 +08:00
parent 42a492551b
commit c02a62fa22
+9 -5
View File
@@ -55,15 +55,19 @@ def classify(input_vector, dataSet, labels, k=2):
- input_vector (numpy array): 输入待分类的样本(1xN)。
- dataSet (numpy array): 训练数据集(MxN)。
- labels (list or numpy array): 训练集对应的标签。
- k (int): kNN 算法参数,默认值为 3。
- k (int): kNN 算法参数,默认值为 2。
返回:
- int: 预测的分类标签。
"""
# 计算输入向量与训练集之间的欧氏距离
distances = np.sum((input_vector - dataSet) ** 2, axis=1)
sorted_indices = distances.argsort()
k_nearest_distances = distances[sorted_indices[:k]]
# 将欧氏距离改为马氏距离
mean_vector = np.mean(dataSet, axis=0)
cov_matrix = np.cov(dataSet.T)
inv_cov_matrix = np.linalg.inv(cov_matrix)
diff_vector = input_vector - dataSet
mahalanobis_distances = np.sqrt(np.einsum('ij,jk,ik->i', diff_vector, inv_cov_matrix, diff_vector.T))
sorted_indices = mahalanobis_distances.argsort()
k_nearest_distances = mahalanobis_distances[sorted_indices[:k]]
k_nearest_labels = labels[sorted_indices[:k]]
# 计算权重(距离的倒数)