# Partie 1: Importation du jeu de données avec Pandas
import pandas as pd
df = pd.read_csv("[Link]")
print("L'entête du dataframe: \n\n", [Link]())
# sélectionner les observations des colonnes 1 à 4 dans X et de la colonne 5 dans Y
X = [Link][:, 1:5]
Y = [Link][:, 5]
print("\nL'entête de X: \n\n", [Link]())
print("\nL'entête de Y: \n\n", [Link]())
# Partie 2: Visualisation des données avec Matplotlib
import numpy as np
import [Link] as plt
# méthode 1 avec boucle
# récuperer les valeurs uniques de Y (les 3 différentes espèces)
unique_y = [Link](Y)
# initialiser une figure avec 10 pouces de large et 6 pouces de hauteur
[Link](figsize=(10, 6))
# créer un objet axe pour contenir nos données
axe = [Link]()
# ici par exemple, nous souhaitons avoir sur l'axe des abscices SepalLength, et sur les y
PetalLength
data_x_col = 0
data_y_col = 2
axe.set_xlabel([Link][data_x_col])
axe.set_ylabel([Link][data_y_col])
# tracer un nuage de points pour chacune des espèces,
# en sélectionnant seulement les observations de l'espèce en question X[Y == i]
for i in unique_y:
[Link](X[Y == i].iloc[:, data_x_col], X[Y == i].iloc[:, data_y_col], label=i)
# afficher une légende correspondant à chaque nuage de points
[Link]()
# afficher la figure
[Link]()
"""
# méthode 2 sans boucle
[Link](figsize=(10, 6))
[Link]()
[Link](X[Y == 'Iris-setosa'].iloc[:, 0], X[Y == 'Iris-setosa'].iloc[:, 2], label='Iris-setosa')
[Link](X[Y == 'Iris-versicolor'].iloc[:, 0], X[Y == 'Iris-versicolor'].iloc[:,
2],label='Iris-versicolor')
[Link](X[Y == 'Iris-virginica'].iloc[:, 0], X[Y == 'Iris-virginica'].iloc[:, 2], label='Iris-virginica')
[Link]()
[Link]()
"""
### FERMER LES FIGURES SUR PYCHARM POUR CONTINUER LA SUITE ###
# Partie 3: Apprentissage automatique avec Sklearn
# split du jeu de données
from sklearn.model_selection import train_test_split
# split en 70% train et 30% test
X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=0.3, random_state=1)
print("X_train.shape: ", X_train.shape)
print("X_test.shape : ", X_test.shape)
print("y_train.shape:", y_train.shape)
print("y_test.shape:", y_test.shape)
# entraînement du modèle k plus proche voisins
from [Link] import KNeighborsClassifier
from sklearn import metrics
# considérer les 3 plus proches voisins (pour un meilleur fonctionnement, prendre un
nombre impair)
classifier_knn = KNeighborsClassifier(n_neighbors=3)
# entraîner le modèle
classifier_knn.fit(X_train, y_train)
# tester le modèle en utilisant la collection de test
y_pred = classifier_knn.predict(X_test)
# calculer l'accuracy du modèle en comparant les espèces prédites par le modèle 'y_pred'
avec les vraies réponses 'y_test'
print("Accuracy:", metrics.accuracy_score(y_test, y_pred))
# faire une prédiction sur de nouvelles données
sample = [[5, 5, 3, 2], [2, 4, 3, 5]]
preds = classifier_knn.predict(sample)
print("Prédictions:", preds)
# Autre algorithme avec des forêts aléatoires
from [Link] import RandomForestClassifier
rfc = RandomForestClassifier(max_depth=2, random_state=1)
[Link](X_train, y_train)
y_pred = [Link](X_test)
print("Accuracy avec RFC:", metrics.accuracy_score(y_test, y_pred))
# Autre algorithme avec un réseau de neurones multi-couches
from sklearn.neural_network import MLPClassifier
clf = MLPClassifier(solver='adam', alpha=1e-5, hidden_layer_sizes=(5, 5), max_iter=2000,
random_state=1)
[Link](X_train, y_train)
y_pred = [Link](X_test)
print("Accuracy avec MLP:", metrics.accuracy_score(y_test, y_pred))