Implémentation de l’algorithme ‘kNN’ en langage Python, appliquée au cas des Iris.
Etape 1 – Construction du dataset à partir des données contenues dans le fichier au format ‘csv’
Celle-ci prend en argument :
- le nom d’un fichier ‘csv’
- le caractère utilisé pour la séparation des données (virgule par défaut)
- un booléen qui vaut ‘faux’ par défaut et qui permet de conserver (si ‘vrai’) ou non (si ‘faux’) la première ligne du fichier csv.
Elle renvoie le ‘dataset’ sous la forme d’une liste de listes. Chaque élément de la liste principale est une liste de trois valeurs, respectivement la longueur d’un pétale (type : float), la largeur d’une pétale (type ; float et le chiffre correspondant à l’espèce d’appartenance( type : int ; 0, 1 ou 2).
Compléter le code qui suit en remplaçant les ??? par ce qui convient [ Téléchargement]
On rappelle que la méthode ‘split()’ permet de découper une chaîne de caractères en éléments de liste, à partir du caractère passé en paramètre.
Sauvegarder ce module dans un dossier contenant également le fichier « iris.csv ».
"""Module knn_module."""
def constructDataset(csvname, separ=",", firstline=False):
ress = open(csvname, mode='r', encoding="UTF-8")
# lecture de la première ligne du fichier csv
if firstline is False:
# si cette ligne contient les intitulés de colonnes
# on ne conserve pas ces données.
ress.readline()
dataset=[]
data = ress.readline()
while data :
data = data.replace("\n", "") # suppression du retour à la ligne
data = data.split(???)
data[0], data[1], data[2] = float(data[0]), ???(data[1]), ???(data[2])
dataset.???(data)
data = ress.readline()
ress.close()
return ???
if __name__ == '__main__':
assert len(constructDataset('iris.csv')) == 150
éponse à télécharger
Écrire les instructions qui :
- importe le contenu du module ‘knn_module’ ;
- affecte à une variable le nom du fichier au format csv contenant les données (ici : ‘iris.csv’)
- appelle la fonction permettant de créer le ‘dataset’
"""kNN : programme principal."""
from ???
# Etape 1 : construction d'un dataset à partir des données enregistrées dans
# un fichier csv
csvname ???
dataset ???