generated from LufsX/Experiment-kNN
This commit is contained in:
+8
-2
@@ -59,15 +59,21 @@ def classify(input_vector, dataSet, labels, k=2):
|
||||
Returns:
|
||||
- int: 预测的分类标签。
|
||||
"""
|
||||
if dataSet.ndim > 2:
|
||||
dataSet = dataSet.reshape(dataSet.shape[0], -1)
|
||||
|
||||
mean = np.mean(dataSet, axis=0)
|
||||
covmat = np.cov(dataSet, rowvar=0)
|
||||
inv_covmat = np.linalg.inv(covmat)
|
||||
|
||||
# 马氏距离计算
|
||||
dists = [mahalanobis_distance(input_vector, mean, inv_covmat)]
|
||||
|
||||
for data in dataSet:
|
||||
dists.append(mahalanobis_distance(data, mean, inv_covmat))
|
||||
|
||||
# 移除第一个距离,因为它是输入向量的马氏距离
|
||||
dists.pop(0)
|
||||
|
||||
k_indices = np.argsort(dists)[:k]
|
||||
k_nearest_labels = [labels[i] for i in k_indices]
|
||||
|
||||
@@ -79,7 +85,7 @@ def classify(input_vector, dataSet, labels, k=2):
|
||||
if most_common:
|
||||
return most_common[0][0]
|
||||
else:
|
||||
return None
|
||||
return None
|
||||
|
||||
|
||||
# 这里也写自己的代码实现
|
||||
|
||||
Reference in New Issue
Block a user