top of page
Projet n°3

Dans ce projet nous cherchons a classer une fleurs dans plusieurs variétés différentes. Pour cela on utilise le l'algorithme des k plus proches voisins en 2 dimensions.

 Ce programme permet de visualiser les données sous forme de graphique

import pandas
import matplotlib.pyplot as plt

iris=pandas.read_csv("iris.csv")
x=iris.loc[:,"petal_length"]
y=iris.loc[:,"petal_width"]
lab=iris.loc[:,"species"]
plt.scatter(x[lab == 0], y [lab == 0], color='g', label='setosa')
plt.scatter(x[lab == 1], y[lab == 1], color='r', label='virginica')
plt.scatter(x[lab == 2], y[lab == 2], color='b', label='versicolor')
plt.legend()
plt.show()


 

Programme des k plus proches voisins en 2D  

import pandas
import matplotlib.pyplot as plt
import math

# Données labélisées et la donnée à classer

iris=pandas.read_csv("iris.csv")
x=iris.loc[:,"petal_length"]
y=iris.loc[:,"petal_width"]
lab=iris.loc[:,"species"]

longueur = 2.5
largeur = 0.75

def distance (x1 : float, y1 : float, x2 : float, y2 : float ) -> float :
  '''calcule la valeur absolue de la distance entre les points 1 et 2'''
  return math.sqrt( (x2 - x1)**2 + (y2 - y1)**2 )

distances =[]

for index in range(150):
  distances.append([distance(x[index],y[index],longueur,largeur),lab[index]])

distances.sort()

k=3

def determiner_classe(distances_classes : list, y : int) -> str:
  nombre_0=0
  nombre_1=0
  nombre_2=0
  for i in range (y):
       if distances[i][1] == 0:
           nombre_0=nombre_0+1
       if distances[i][1] == 1:
           nombre_1=nombre_1+1
       if distances[i][1] == 2:
           nombre_2=nombre_2+1
  if nombre_0 > nombre_1 and  nombre_0 > nombre_2:
       return " La fleur est une setosa "
  if nombre_1 > nombre_2 and  nombre_1 > nombre_0:
       return " La fleur est une versicolor "
  if nombre_2 > nombre_1 and  nombre_2 > nombre_1:
       return " La fleur est une virginica "

print(determiner_classe(distances,k))

plt.axis('equal')
plt.scatter(x[lab == 0], y[lab == 0], color='g', label='setosa')
plt.scatter(x[lab == 1], y[lab == 1], color='r', label='versicolor')
plt.scatter(x[lab == 2], y[lab == 2], color='b', label='virginica')
plt.scatter(longueur, largeur, color='y', label='à classer')
plt.legend()
plt.show()

Ceci est le graphique représentant toute les fleurs trier par variétées
Capture.PNG

messi = goat

NSI

messi=goat

© 2022 par NSI. Créé avec Wix.com

bottom of page