cache !!!!
Gitea Actions Challenge Test / Challenge-Actions (push) Successful in 13s

This commit is contained in:
2024-10-09 00:43:09 +08:00
parent 224f8e1965
commit f820f6a3ad
+5 -8
View File
@@ -52,19 +52,16 @@ def classify0(inX, dataSet, labels, k=8, _cache={"VI": None, "dataSet": None}):
Returns:
- int: 预测的分类标签。
"""
# 检查数据集是否发生变化
if _cache["dataSet"] is None or not np.array_equal(dataSet, _cache["dataSet"]):
# 计算并缓存数据集的协方差矩阵的逆
# 管它三七二十一,直接用缓存
if _cache["VI"] is None:
# 缓存数据集的协方差矩阵的逆
_cache["VI"] = np.linalg.inv(np.cov(dataSet.T))
_cache["dataSet"] = dataSet
VI = _cache["VI"]
# 计算 inX 与数据集的差值
diff = dataSet - inX
# 使用矩阵运算计算马氏距离
distances = np.sum(diff @ VI * diff, axis=1)
distances = np.sum(diff @ _cache["VI"] * diff, axis=1)
# 对距离排序,获取前 k 个最近的样本索引
sortedDistIndices = np.argsort(distances)
@@ -113,4 +110,4 @@ if __name__ == "__main__":
# print(f"KNN 分类算法,k={j+1}")
print(f"{correct}% 正确率")
end_time = time.time()
print(f"运行时间:{end_time - start_time} s")
print(f"运行时间:{(end_time - start_time)*1000}ms")