Skip to content
Snippets Groups Projects
Commit 6f61e091 authored by Sucio's avatar Sucio
Browse files

avancement

parent 9da89970
No related branches found
No related tags found
No related merge requests found
data/
test.py
Source diff could not be displayed: it is too large. Options to address this: view the blob.
......@@ -21,6 +21,25 @@ def knn_predict(dist, labels_train, k):
resultat.append(val[indexe])
return (resultat)
def knn_predict2(dist, labels_train, k):
resultat=[]
for im in dist:
dico={}
kmax=np.argpartition(im, k)[:k]
for indexe in kmax:
if labels_train[indexe] in dico:
dico[labels_train[indexe]][0]+=1
dico[labels_train[indexe]][1]+=im[indexe]
else:
dico[labels_train[indexe]]=[1,im[indexe]]
dico = sorted(dico.items(), key=lambda item: item[1][0], reverse=True)
max_value = dico[0][1][0]
dico = [item for item in dico if item[1][0] == max_value]
if len(dico) > 1:
dico = sorted(dico, key=lambda item: item[1][1])
resultat.append(dico[0][0])
return(resultat)
def affichage(d_train, l_train, d_test, l_test):
long, large = 5,4
......@@ -65,7 +84,6 @@ def evaluate_knn(data_train, labels_train, data_test, labels_test, k):
if __name__ == "__main__":
#d, l = read_cifar_batch("data/cifar-10-batches-py/data_batch_1")
t=time.time()
nbr_knn = 20
nbr_val = 10
x = range(1, nbr_knn)
......@@ -73,12 +91,20 @@ if __name__ == "__main__":
for essai in range(nbr_val):
d_train, l_train, d_test, l_test = split_dataset(d, l, 0.9)
dist_matrice = distance_matrix(d_train, d_test)
y = []
y1 = []
#y2 = []
for knn in x:
stat = 0
res = knn_predict(dist_matrice, l_train, knn)
y.append(np.sum(l_test == res) / len(l_test))
plt.plot(x, y)
res2 = knn_predict2(dist_matrice, l_train, knn)
y1.append(np.sum(l_test == res) / len(l_test))
#y2.append(np.sum(l_test == res2) / len(l_test))
plt.plot(x, y1, label=f'Précision knn mesure {essai}')
#plt.plot(x, y2, label='Précision knn2')
plt.xlabel('nombre de plus proche voisins concidérés')
plt.ylabel('taux de bonne calification')
plt.xticks(range(1, nbr_knn)) # Afficher des valeurs entières sur l'axe des abscisses
plt.yticks(np.arange(0, 1.1, 0.1))
plt.legend()
plt.show()
result/comparaison_knn_0to20.png

27.4 KiB

result/knn_1_20_valid_10test.png

186 KiB | W: | H:

result/knn_1_20_valid_10test.png

57.2 KiB | W: | H:

result/knn_1_20_valid_10test.png
result/knn_1_20_valid_10test.png
result/knn_1_20_valid_10test.png
result/knn_1_20_valid_10test.png
  • 2-up
  • Swipe
  • Onion skin
import numpy as np
def count_matching_elements(vector1, vector2):
if len(vector1) != len(vector2):
raise ValueError("Les vecteurs doivent avoir la même taille.")
label=np.array([1,2,2,3,3])
dist=np.array([[10,25,10,42,3],[75,63,87,64,1]])
for im in dist:
dico={}
kmax=np.argpartition(im, 3)[:3]
for indexe in kmax:
if label[indexe] in dico:
dico[label[indexe]][0]+=1
dico[label[indexe]][1]+=im[indexe]
else:
dico[label[indexe]]=[1,im[indexe]]
dico = sorted(dico.items(), key=lambda item: item[1][0], reverse=True)
matching_elements = np.sum(vector1 == vector2)
return matching_elements
max_value = dico[0][1][0]
dico = [item for item in dico if item[1][0] == max_value]
print(dico)
if len(dico) > 1:
filtered_dict = sorted(dico, key=lambda item: item[1][1])
return(dico[0][0])
# Exemple d'utilisation
vector1 = np.array([1, 2, 3, 4, 5])
vector2 = np.array([1, 0, 3, 3, 5])
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment