From 30ace2058001ceb30e9fb0989651c11c3b0928d1 Mon Sep 17 00:00:00 2001
From: widad174 <azzouzi.widad.17@gmail.com>
Date: Wed, 8 Nov 2023 16:44:13 +0100
Subject: [PATCH] Update

---
 requirements.txt                              | Bin 1218 -> 45950 bytes
 ...tance_matrix.py => test_distance_matrix.py |   4 ++++
 ...st_evaluate_knn.py => test_evaluate_knn.py |  11 +++++++++--
 ...test_knn_predict.py => test_knn_predict.py |   1 -
 ...opy.py => test_learn_once_cross_entropy.py |   0
 ...earn_once_mse.py => test_learn_once_mse.py |   0
 tests/test_mode.py => test_mode.py            |   0
 tests/test_one_hot.py => test_one_hot.py      |   0
 ...test_predict_mlp.py => test_predict_mlp.py |   0
 .../test_read_cifar.py => test_read_cifar.py  |   0
 ...lp_training.py => test_run_mlp_training.py |   0
 tests/test_softmax.py => test_softmax.py      |   0
 ..._split_dataset.py => test_split_dataset.py |   0
 tests/test_train_mlp.py => test_train_mlp.py  |   0
 tests/test_unpickle.py => test_unpickle.py    |   0
 tests/__init__.py                             |   5 -----
 16 files changed, 13 insertions(+), 8 deletions(-)
 rename tests/test_distance_matrix.py => test_distance_matrix.py (67%)
 rename tests/test_evaluate_knn.py => test_evaluate_knn.py (64%)
 rename tests/test_knn_predict.py => test_knn_predict.py (92%)
 rename tests/test_learn_once_cross_entropy.py => test_learn_once_cross_entropy.py (100%)
 rename tests/test_learn_once_mse.py => test_learn_once_mse.py (100%)
 rename tests/test_mode.py => test_mode.py (100%)
 rename tests/test_one_hot.py => test_one_hot.py (100%)
 rename tests/test_predict_mlp.py => test_predict_mlp.py (100%)
 rename tests/test_read_cifar.py => test_read_cifar.py (100%)
 rename tests/test_run_mlp_training.py => test_run_mlp_training.py (100%)
 rename tests/test_softmax.py => test_softmax.py (100%)
 rename tests/test_split_dataset.py => test_split_dataset.py (100%)
 rename tests/test_train_mlp.py => test_train_mlp.py (100%)
 rename tests/test_unpickle.py => test_unpickle.py (100%)
 delete mode 100644 tests/__init__.py

diff --git a/requirements.txt b/requirements.txt
index 7f1215096558bd03b7e88ca51c98234756619615..736212482ea6d8dd58e327f03ebf2e546c3e4eff 100644
GIT binary patch
literal 45950
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
QMGPtMaedIN3+&_<0I%mMbpQYW

literal 1218
zcmezWFOi{`p@gA?A)g_eA(bJIp_svz!Ir^@L65<NL65<JftP`cA&DW8A(<hYA(<hO
zA%`Ictipgn53CBJBAFqdA%`KKp@<=oA(tT$t^#C+8Q2Vvid=?VxQrp#29W6~45<uB
z45bX|3<V68V0n<71>AO!JV-alY>+#Pz-mkx^cX<u48f+SGE^|6G9)vUGL$f6GUPF&
zgVlh10dgnAjhSHcLB1?v$YV%_`oj$D50Gg_V3Q!KN*FR2@)`2Lrhr^x$N*9Yu`7!q
zl_7;86D$WZ-H^c&>=uw;vKUIiwv;fWG88eyGbA(QFl2(mwFImlWELn)ATGjG4GO_j
zuu71N5Gp}oTEb8O4&xHAnMn+~V4s4_2l)mRYY^AyF+f5bBnpaKT?SAbS2E-=Br{|(
z<bzEIg&fER3$UN_7)lv(!R`i`0+KUA@^1k&_7fS>!8XFe))*XeAYX%2<T0dx?E#qp
z3U`nxknjS@7BLh<Z3ej!6bi;*n+q5+!6_?;A(f$+A%h{2p@;$Ee~>zJ20aE-sJa}6
zM1~TEG;kWr1&2S#Opt9LcNl`x0wh!m7>XG3!Tu>>&;_S#P}<C9$Yg-T0Z2W_bYlif
zsM*EPbOTA*pl|`jC?pgM7)rrz(q%|xC<CW|kewj?AYVe#OaMbALpnn)G@cPT$PgtI
zD;Z#^N*5efpfmzWuMm4d=7B;6VkRgrlrU6*W6OxafWe3X<ZciyV8{pOSy<>+GL(bk
z#hAeetlF5t0Ga|oW>hicG8BTvjTk^aL&QrlLncE7SOy{nO5u<Y1f?2Cj)%Dvk)uJX
zAaMuDi+K!*3@OmKg~;hKz~n(W78L5B*e!vUED$$<Y=rm|<VR4-DS?(6$bJQ-t#XEB
Pu>VrPp@$sykhBW`(_yh-

diff --git a/tests/test_distance_matrix.py b/test_distance_matrix.py
similarity index 67%
rename from tests/test_distance_matrix.py
rename to test_distance_matrix.py
index f602997..378b3a8 100644
--- a/tests/test_distance_matrix.py
+++ b/test_distance_matrix.py
@@ -2,6 +2,10 @@ from knn import *
 import numpy as np
 
 def test_distance_matrix():
+    '''
+    Check that's if the function distance_matrix 
+    returns the good shape of the output dists.
+    '''
     train = np.random.rand(100, 1000)
     test = np.random.rand(80, 1000)
     dists = distance_matrix(train, test)
diff --git a/tests/test_evaluate_knn.py b/test_evaluate_knn.py
similarity index 64%
rename from tests/test_evaluate_knn.py
rename to test_evaluate_knn.py
index c9f1d86..79b370e 100644
--- a/tests/test_evaluate_knn.py
+++ b/test_evaluate_knn.py
@@ -1,3 +1,4 @@
+
 from knn import *
 import numpy as np
 
@@ -6,5 +7,11 @@ def test_evaluate_knn():
     test = np.random.rand(80, 1000)
     labels_train = np.random.randint(10, size=100)
     labels_test = np.random.randint(10, size=80)
-    accuracy = evaluate_knn_for_k(train, labels_train, test, labels_test, k=3)
-    assert isinstance(accuracy, float) 
\ No newline at end of file
+    accuracy = evaluate_knn_for_k(train, labels_train, test, labels_test, 3)
+    
+    print("Type of accuracy:", type(accuracy))
+    print("Accuracy:", accuracy)
+    
+    assert isinstance(accuracy, list)
+
+test_evaluate_knn()
diff --git a/tests/test_knn_predict.py b/test_knn_predict.py
similarity index 92%
rename from tests/test_knn_predict.py
rename to test_knn_predict.py
index 01f332e..cb4d5e1 100644
--- a/tests/test_knn_predict.py
+++ b/test_knn_predict.py
@@ -9,4 +9,3 @@ def test_knn_predict():
     labels_pred = knn_predict(dists, labels_train, k=3)
     assert labels_pred.shape == (80,)
     
-print(test_knn_predict())
\ No newline at end of file
diff --git a/tests/test_learn_once_cross_entropy.py b/test_learn_once_cross_entropy.py
similarity index 100%
rename from tests/test_learn_once_cross_entropy.py
rename to test_learn_once_cross_entropy.py
diff --git a/tests/test_learn_once_mse.py b/test_learn_once_mse.py
similarity index 100%
rename from tests/test_learn_once_mse.py
rename to test_learn_once_mse.py
diff --git a/tests/test_mode.py b/test_mode.py
similarity index 100%
rename from tests/test_mode.py
rename to test_mode.py
diff --git a/tests/test_one_hot.py b/test_one_hot.py
similarity index 100%
rename from tests/test_one_hot.py
rename to test_one_hot.py
diff --git a/tests/test_predict_mlp.py b/test_predict_mlp.py
similarity index 100%
rename from tests/test_predict_mlp.py
rename to test_predict_mlp.py
diff --git a/tests/test_read_cifar.py b/test_read_cifar.py
similarity index 100%
rename from tests/test_read_cifar.py
rename to test_read_cifar.py
diff --git a/tests/test_run_mlp_training.py b/test_run_mlp_training.py
similarity index 100%
rename from tests/test_run_mlp_training.py
rename to test_run_mlp_training.py
diff --git a/tests/test_softmax.py b/test_softmax.py
similarity index 100%
rename from tests/test_softmax.py
rename to test_softmax.py
diff --git a/tests/test_split_dataset.py b/test_split_dataset.py
similarity index 100%
rename from tests/test_split_dataset.py
rename to test_split_dataset.py
diff --git a/tests/test_train_mlp.py b/test_train_mlp.py
similarity index 100%
rename from tests/test_train_mlp.py
rename to test_train_mlp.py
diff --git a/tests/test_unpickle.py b/test_unpickle.py
similarity index 100%
rename from tests/test_unpickle.py
rename to test_unpickle.py
diff --git a/tests/__init__.py b/tests/__init__.py
deleted file mode 100644
index 78e3810..0000000
--- a/tests/__init__.py
+++ /dev/null
@@ -1,5 +0,0 @@
-import os
-import sys
-sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
-
-
-- 
GitLab