From 3be0dbc035f6c5d0eb6a9803fc1f9177c93a8885 Mon Sep 17 00:00:00 2001 From: Yijuehen <1906265724@qq.com> Date: Fri, 11 Oct 2024 20:13:45 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20function.py?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- function.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/function.py b/function.py index 932af46..83ce202 100644 --- a/function.py +++ b/function.py @@ -1,6 +1,6 @@ # function.py import numpy as np - +from scipy.spatial.distance import mahalanobis """ 挑战说明: - 自行编写实现 KNN 分类算法。 @@ -40,7 +40,7 @@ name = "尹家立" # 这里写自己的代码实现 -def classify0(inX, dataSet, labels, k=0): +def classify0(inX, dataSet, labels, k=3): """ KNN 分类算法。 @@ -58,9 +58,9 @@ def classify0(inX, dataSet, labels, k=0): invCovMat = np.linalg.inv(covMat) # 计算协方差矩阵的逆 # Step 2: 计算马氏距离 - diffMat = dataSet - inX # 计算差值矩阵 - left = np.dot(diffMat, invCovMat) # 左乘协方差矩阵的逆 - mahalanobisDist = np.sqrt(np.sum(left * diffMat, axis=1)) # 计算马氏距离 + mahalanobisDist = np.array([ + mahalanobis(inX, dataSet[i], invCovMat) for i in range(dataSet.shape[0]) + ]) # 使用 scipy 的 mahalanobis 函数计算马氏距离 # Step 3: 按距离排序,得到索引 sortedDistIndices = mahalanobisDist.argsort()