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