From efa3fcebe5a04edbf4c18c486a8a777f52ab0fde Mon Sep 17 00:00:00 2001
From: selalimi <saraelalami2001@gmail.com>
Date: Thu, 9 Nov 2023 21:15:27 -0500
Subject: [PATCH] Update knn file

---
 knn.py | 57 +++++++++++++++++++++++++++------------------------------
 1 file changed, 27 insertions(+), 30 deletions(-)

diff --git a/knn.py b/knn.py
index 6b00003..f0efd4c 100644
--- a/knn.py
+++ b/knn.py
@@ -5,16 +5,15 @@ import matplotlib.pyplot as plt
 import plotly.graph_objects as go
 
 
-# Commentaire global expliquant le but du code
-'''Here is the code to compute the L2 Euclidean distance matrix and predict labels using k-nearest neighbors:'''
+
 # Create distance Matrix
 '''
-Arguments :
--Deux matrices.
+Arguments:
+- Two matrices.
 
-Returns :
-dists : la matrice de distances euclidiennes L2.
-La computation de cette fonction doit être effectuée uniquement avec des manipulations de matrices.
+Returns:
+dists: the L2 Euclidean distance matrix.
+The computation of this function should be done solely through matrix manipulations.
 '''
 def distance_matrix(X, Y):
     XX = np.sum(X ** 2, axis=1, keepdims=True)
@@ -25,13 +24,13 @@ def distance_matrix(X, Y):
 
 # KNN predict
 '''
-Arguments :
--dists : la matrice de distances entre l'ensemble d'entraînement et l'ensemble de test.
--labels_train : les étiquettes d'entraînement.
-- k : le nombre de voisins.
+Arguments:
+- dists: the distance matrix between the training set and the test set.
+- labels_train: training labels.
+- k: the number of neighbors.
 
-Returns :
--Les étiquettes prédites pour les éléments de data_test.
+Returns:
+- Predicted labels for the elements in data_test.
 '''
 def knn_predict(dists, labels_train, k):
     n_test = dists.shape[0]
@@ -45,16 +44,15 @@ def knn_predict(dists, labels_train, k):
 # evaluate_knn
 '''Here is the code to evaluate k-nearest neighbors and plot the accuracy as a function of k:'''
 '''
-Arguments :
--data_train : les données d'entraînement.
--labels_train : les étiquettes correspondantes.
--data_test : les données de test.
--labels_test : les étiquettes correspondantes.
--k : le nombre de voisins.
+Arguments:
+- data_train: training data.
+- labels_train: corresponding labels.
+- data_test: test data.
+- labels_test: corresponding labels.
+- k: the number of neighbors.
 
-Returns :
--La précision du modèle Knn : le taux de classification entre les valeurs prédites et les observations
-réelles des données de test.
+Returns:
+- Accuracy of the Knn model: the classification rate between predicted values and actual observations from test data.
 '''
 def evaluate_knn(data_train, labels_train, data_test, labels_test, k):
     dists = distance_matrix(data_test, data_train)
@@ -63,20 +61,19 @@ def evaluate_knn(data_train, labels_train, data_test, labels_test, k):
     return accuracy
 
 # Plot Accuracy of KNN model
+'''The function plots the variation of accuracy with the number of neighbors K.'''
 '''
-******La fonction trace la variation de la précision en fonction du nombre de voisins K****
-Arguments :
--X_train : données d'entraînement
--y_train : étiquettes d'entraînement
--X_test : données de test
--y_test : étiquettes de test
+Arguments:
+- X_train: training data.
+- y_train: training labels.
+- X_test: test data.
+- y_test: test labels.
 '''
 def plot_KNN(X_train, y_train, X_test, y_test, max_k=20):
     neighbors = np.arange(1, max_k + 1)
     accuracies = [evaluate_knn(X_train, y_train, X_test, y_test, k) for k in neighbors]
-    plt.plot(neighbors, accuracies, 'b-o') 
+    plt.plot(neighbors, accuracies, 'b-o')
     plt.xlabel('K')
     plt.ylabel('Accuracy')
     plt.title('Variation of Accuracy with K')
     plt.savefig("Results/knn.png")
-
-- 
GitLab