更新 function.py
Gitea Actions Experiment Test / Experiment-Actions (push) Has been cancelled

This commit is contained in:
cy
2024-10-15 11:16:45 +08:00
parent a825d46f30
commit fcbeacf5af
+14 -3
View File
@@ -42,11 +42,22 @@ def classify(input_vector, dataSet, labels, k=2):
- int: 预测的分类标签。
"""
num_samples = dataSet.shape[0]
diffs = np.tile(input_vector, (num_samples, 1)) - dataSet
distances = np.sum(diffs**2, axis=1)**0.5
mu = np.mean(dataSet, axis = 0)
cov = np.cov(dataSet.T)
try:
inv_cov = np.linalg.inv(cov)
except np.linalg.LinAlgError:
# 如果协方差矩阵不可逆,使用伪逆
inv_cov = np.linalg.pinv(cov)
distances = []
for i in range(num_samples):
diff = (input_vector - dataSet[i])
distance = np.sqrt(np.dot(np.dot(diff, inv_cov), diff.T))
distances.append(distance)
distances = np.array(distances)
sorted_indices = np.argsort(distances)
k_nearest_labels = [labels[i] for i in sorted_indices[:k]]
unique_labels, counts = np.unique(k_nearest_labels, return_counts=True)
unique_labels, counts = np.unique(k_nearest_labels, return_counts = True)
return unique_labels[np.argmax(counts)]