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

This commit is contained in:
hao
2024-10-15 20:03:20 +08:00
parent 2f530bd891
commit 4269f9a7f3
+13 -3
View File
@@ -61,10 +61,20 @@ def classify0(inX, dataSet, labels, k=3):
covMat = np.cov(dataSet, rowvar=False) covMat = np.cov(dataSet, rowvar=False)
meanVec = np.mean(dataSet, axis=0) meanVec = np.mean(dataSet, axis=0)
# 计算待分类样本与训练集中每个样本的马氏距离 # 计算协方差矩阵的逆
invCovMat = np.linalg.inv(covMat) invCovMat = np.linalg.inv(covMat)
diffVecs = dataSet - meanVec
dist = np.sqrt(np.sum((inX - meanVec).dot(invCovMat) * (inX - meanVec), axis=1)) # 初始化距离数组
dist = []
# 计算待分类样本与训练集中每个样本的马氏距离
for i in range(dataSet.shape[0]):
diffVec = dataSet[i, :] - inX
# 避免除以零的情况
if np.linalg.det(covMat) == 0:
dist.append(np.linalg.norm(diffVec))
else:
dist.append(np.sqrt(diffVec.dot(invCovMat).dot(diffVec.T)))
# 获取距离最近的 k 个样本的索引 # 获取距离最近的 k 个样本的索引
kNearestIndices = np.argsort(dist)[:k] kNearestIndices = np.argsort(dist)[:k]