更新 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: Args:
- inX (numpy array): 输入待分类的样本。 - inX (numpy array): 输入待分类的样本。
@@ -54,14 +54,14 @@ def classify0(inX, dataSet, labels, k=2):
Returns: Returns:
- int: 预测的分类标签。 - int: 预测的分类标签。
""" """
# 计算输入样本与数据集中每个样本的欧氏距离 # 计算马氏距离
diffMat = np.tile(inX, (dataSet.shape[0], 1)) - dataSet inv_cov = np.linalg.inv(np.cov(dataSet.T)) # 计算协方差矩阵的逆
sqDiffMat = diffMat ** 2 meanVals = np.mean(dataSet, axis=0) # 计算均值
sqDistances = sqDiffMat.sum(axis=1) diffMat = inX - meanVals # 计算差值
distances = sqDistances ** 0.5 mahalDist = np.sqrt(diffMat.dot(inv_cov).dot(diffMat.T)) # 计算马氏距离
# 对距离进行排序,选择距离最小的 k 个样本 # 对距离进行排序,选择距离最小的 k 个样本
sortedDistIndices = distances.argsort() sortedDistIndices = np.argsort(mahalDist)
classCount = {} classCount = {}
# 遍历距离最小的 k 个样本,统计每个类别的出现次数 # 遍历距离最小的 k 个样本,统计每个类别的出现次数