##TPKNN

##Q1
import matplotlib.pyplot as plt
from random import random
import os 
os.chdir("à compléter")

#à exécuter
plt.close("all")
import matplotlib.pyplot as plt
donnees = []
fichier = open("iris.txt","r")
for ligne in fichier:
    L = ligne.split(",")
    donnees.append((float(L[0]),float(L[1]),int(L[2])))
fichier.close()
style = ('or','*b','xg')
for tuple in donnees:
    x,y,s = tuple
    plt.plot(x,y,style[s])
    
plt.plot(donnees[0][0],donnees[0][1],'or',label='setosa')
plt.plot(donnees[-1][0],donnees[-1][1],color='green',marker='x',label='versicolor')
plt.plot(donnees[50][0],donnees[50][1],color='blue',marker='*',label='virginica')
plt.xlabel("longueur des pétales (cm)",size=12)
plt.ylabel("largeur des pétales (cm)",size = 12)
plt.title("représentation des iris",size=12)
plt.legend()
plt.show()

##Q2

def nombre_iris(donn):
    return None
print(nombre_iris(donnees))

##Q3
from math import sqrt

def distance(P1,P2):
    return None
    
print(distance((0,1),(1,0)))

##Q4   
    
def liste_dist(donnees,P):
    return None
    
print(liste_dist([(1.4,0.2,0),(4.5,1.5,1)],(1.0,1.0)))

##Q5

test = [(7.3,2),(2.8,1),(1.3,0)]


##Q6

def indice_max(L):
    return None
    
test = [1,5,9,2]
print(indice_max(test))

##Q8 et Q9

def knn(donnees, P, k, n=3):
   return None
    
print(knn(donnees,(2.5,0.75),3,3))
print(knn(donnees,(6.2,2.2),10,3))
    
##Q10

#compléter la liste inc
inc = []

#à exécuter
cat = []
for P in inc:
    cat.append(knn(donnees,P,10))

plt.close("all")
for i in range(len(inc)):
    if cat[i] == 0:
        plt.plot(inc[i][0],inc[i][1],color='red',marker='p',markersize=12)
    elif cat[i] == 1:
                plt.plot(inc[i][0],inc[i][1],color='blue',marker='p',markersize=12)
    else:
                plt.plot(inc[i][0],inc[i][1],color='green',marker='p',markersize=12)
for tuple in donnees:
    if tuple[2] == 0:
        plt.plot(tuple[0],tuple[1],'or')
    elif tuple[2] == 1:
        plt.plot(tuple[0],tuple[1],marker ='*', color='blue')
    else:
        plt.plot(tuple[0],tuple[1],marker='x',color='green')
plt.plot(donnees[0][0],donnees[0][1],'or',label='setosa')
plt.plot(donnees[-1][0],donnees[-1][1],color='green',marker='x',label='versicolor')
plt.plot(donnees[50][0],donnees[50][1],color='blue',marker='*',label='virginica')
plt.xlabel("longueur des pétales (cm)",size=12)
plt.ylabel("largeur des pétales (cm)",size = 12)
plt.title("représentation des iris",size=12)
plt.legend()
plt.show()


##Q11 et Q12
from random import shuffle    

def test(donnees, k, n=3):
    return None

K = [1,5,10,50,80,100]
for i in K:
    print("le test pour k = {} a conduit à {:.1f} % de bonnes prédictions".format(i,test(donnees,3,i)))
 
 
##Q13
def matrice_confusion(donnees,k,n=3):
    return None

import numpy as np
print(np.array(matrice_confusion(donnees,10,3)))
  
## Q14
def kmax(donnees, n=3):
    return None
    
print(kmax(donnees,3))
        
        
        
        