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

This commit is contained in:
2024-09-26 16:55:19 +08:00
parent 8cb08d6204
commit 8793a9b39c
+14 -12
View File
@@ -38,7 +38,7 @@ name = "潘宇豪"
# 这里写自己的代码实现
def classify0(inX, dataSet, labels, k=5):
def classify0(inX, dataSet, labels, k=3):
"""
KNN 分类算法。
@@ -51,24 +51,26 @@ def classify0(inX, dataSet, labels, k=5):
返回值:
- int: 预测的分类标签。
"""
# 计算输入样本与训练数据集中每个样本的欧氏距离
diffMat = np.tile(inX, (dataSet.shape[0], 1)) - dataSet
sqDiffMat = diffMat**2
sqDistances = sqDiffMat.sum(axis=1)
distances = np.sqrt(sqDistances)
# 计算协方差矩阵及其逆
covariance_matrix = np.cov(dataSet, rowvar=False)
inv_covmat = inv(covariance_matrix)
# 计算马氏距离
distances = np.array([mahalanobis(inX, dataSet[i], inv_covmat) for i in range(dataSet.shape[0])])
# 对距离进行排序并找到最近的k个邻居
sortedDistIndices = distances.argsort()
sortedDistIndices = distances.argsort()[:k]
# 进行简单投票
classCount = {}
for i in range(k):
voteIlabel = labels[sortedDistIndices[i]]
for i in sortedDistIndices:
voteIlabel = labels[i]
classCount[voteIlabel] = classCount.get(voteIlabel, 0) + 1
# 返回出现次数最多的类别
sortedClassCount = sorted(classCount.items(), key=lambda item: item[1], reverse=True)
return sortedClassCount[0][0]
def load_data(file_path):
"""
加载TSV格式的数据文件。