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

This commit is contained in:
hao
2024-10-15 19:54:23 +08:00
parent 20a487e231
commit 377ce73c89
+8 -8
View File
@@ -41,9 +41,9 @@ name = "黎世浩"
# 这里写自己的代码实现
def classify0(inX, dataSet, labels, k=2):
def classify0(inX, dataSet, labels, k=3):
"""
KNN 分类算法。
KNN 分类算法,使用马氏距离。
Args:
- inX (numpy array): 输入待分类的样本。
@@ -54,14 +54,14 @@ def classify0(inX, dataSet, labels, k=2):
Returns:
- int: 预测的分类标签。
"""
# 计算输入样本与数据集中每个样本的欧氏距离
diffMat = np.tile(inX, (dataSet.shape[0], 1)) - dataSet
sqDiffMat = diffMat ** 2
sqDistances = sqDiffMat.sum(axis=1)
distances = sqDistances ** 0.5
# 计算马氏距离
inv_cov = np.linalg.inv(np.cov(dataSet.T)) # 计算协方差矩阵的逆
meanVals = np.mean(dataSet, axis=0) # 计算均值
diffMat = inX - meanVals # 计算差值
mahalDist = np.sqrt(diffMat.dot(inv_cov).dot(diffMat.T)) # 计算马氏距离
# 对距离进行排序,选择距离最小的 k 个样本
sortedDistIndices = distances.argsort()
sortedDistIndices = np.argsort(mahalDist)
classCount = {}
# 遍历距离最小的 k 个样本,统计每个类别的出现次数