Bonjour, est-ce que quelqu'un pourrait m'aider à corriger mon code (je sais que c'est problablement la dernière fonction qui est pleine de fautes...). Il s'agit d'un chapitre de NSI sur le learning machine, et ceci est el code pour l'algoritme des "K plus proches voisins". J'en ai vraiment besoin merci d'avance !
def Kvoisins(L,k,nouvel_element):
ListDistIndice = []
for i in range (0, len(L)-1):
D = Distance(nouvel_element,i)
ListeDistIndice.append[D,i]
ListeDistIndice.sort
Voisins = []
for i in range (O, k-1):
Voisins.append[ListeDistIndice[i][1]]
return(Voisins)
def Distance(Abcisses):
return abs(Abcisses)
def PredireLaClasse(LindiceV, Classe):
Dico_decompte = {}
Presence = 'Classe[v]' in Dico_decompte
for v in LindiceV:
if Presence == True:
Classe[v] = Classe[v] + 1
else:
Dico_decompte['Classe[v]']='1'
val_max = 0
classe_max = ""
for val in Dico_decompte.value:
if val > val_max:
val_max = val
classe_max = val
return classe_max
Abscisses = [0.5, 1.0, 2.0, 3.7, 5.1, 6.0, 7.0]
Classes = ['C', 'L', 'L', 'C', 'C', 'L', 'L']
nouvel_element = 3.0
k = 3
lst_voisins = Kvoisins(Abscisses, k, nouvel_element)
print("La classe d'appartenance prédite de l'élément d'abscisse",nouvel_element,"est",PredireLaClasse(lst_voisins, Classes ))
Lista de comentários
Salut !
je te propose un code plus optimisé qui normalement fonctionne
def Kvoisins(L, k, nouvel_element):
ListDistIndice = []
for i in range(len(L)):
D = abs(nouvel_element - L[i])
ListDistIndice.append([D, i])
ListDistIndice.sort()
voisins = []
for i in range(k):
voisins.append(ListDistIndice[i][1])
return voisins
def PredireLaClasse(LindiceV, Classes):
Dico_decompte = {}
for v in LindiceV:
if Classes[v] in Dico_decompte:
Dico_decompte[Classes[v]] += 1
else:
Dico_decompte[Classes[v]] = 1
val_max = 0
classe_max = ""
for val in Dico_decompte.values():
if val > val_max:
val_max = val
classe_max = [k for k, v in Dico_decompte.items() if v == val_max][0]
return classe_max
Abscisses = [0.5, 1.0, 2.0, 3.7, 5.1, 6.0, 7.0]
Classes = ['C', 'L', 'L', 'C', 'C', 'L', 'L']
nouvel_element = 3.0
k = 3
lst_voisins = Kvoisins(Abscisses, k, nouvel_element)
print("La classe d'appartenance prédite de l'élément d'abscisse", nouvel_element, "est", PredireLaClasse(lst_voisins, Classes))