Cette application interactive vous permet d'explorer le célèbre jeu de données Iris. Vous pouvez classer des fleurs, visualiser les données et comprendre le code sous-jacent.
Ajustez les curseurs pour correspondre aux caractéristiques de la fleur et cliquez sur "Prédire".
Voici l'intégralité du jeu de données Iris utilisé pour l'entraînement.
Chargement des données...
Ces graphiques montrent la distribution des données des fleurs d'Iris.
Voici le script Python complet qui a été utilisé pour analyser les données, entraîner le modèle et l'exporter. Les commentaires ont été ajoutés pour expliquer chaque étape à des non-initiés.
# ==============================================================================
# SCRIPT POUR CRÉER UN MODÈLE DE CLASSIFICATION DE FLEURS D'IRIS
# ==============================================================================
# Ce script utilise des bibliothèques spécialisées en science des données
# pour créer un modèle capable de deviner l'espèce d'une fleur d'Iris
# à partir de ses dimensions.
# --- Étape 1 : Importer les outils nécessaires ---
# On importe les "outils" (bibliothèques) dont nous aurons besoin.
# - json : pour créer un fichier de modèle lisible par le navigateur web.
# - sklearn : la bibliothèque principale pour l'apprentissage automatique.
# - numpy et pandas : pour manipuler les données facilement.
import json
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score
import numpy as np
import pandas as pd
# --- Étape 2 : Définir une fonction pour exporter notre modèle ---
# Un modèle d'arbre de décision est comme un organigramme de "si... alors...".
# Cette fonction parcourt l'arbre et le traduit dans un format simple (JSON)
# que le JavaScript de notre page web pourra comprendre et utiliser.
def export_tree_to_json(tree, feature_names, target_names):
tree_ = tree.tree_
def recurse(node_id):
# Si c'est une feuille de l'arbre, cela signifie qu'on a une décision finale.
is_leaf = tree_.children_left[node_id] == tree_.children_right[node_id]
if is_leaf:
class_index = np.argmax(tree_.value[node_id])
return {"class": target_names[class_index]}
# Sinon, c'est un point de décision (un "nœud").
else:
feature_index = tree_.feature[node_id]
threshold = tree_.threshold[node_id]
feature_name = feature_names[feature_index]
# On continue à descendre dans l'arbre à gauche ou à droite.
left_child_id = tree_.children_left[node_id]
right_child_id = tree_.children_right[node_id]
return {
"feature": feature_name,
"threshold": threshold,
"left": recurse(left_child_id),
"right": recurse(right_child_id)
}
return recurse(0)
# --- Étape 3 : Fonction principale où tout se passe ---
def main():
# 3.1. Charger les données
# La bibliothèque sklearn contient déjà le fameux jeu de données "Iris".
iris = load_iris()
X = iris.data # Les 4 mesures pour chaque fleur
y = iris.target # L'espèce correspondante (0, 1 ou 2)
feature_names = iris.feature_names # Noms des mesures
target_names = list(iris.target_names) # Noms des espèces
# 3.2. Analyser les données
# On utilise pandas pour créer un tableau et calculer des statistiques.
df = pd.DataFrame(X, columns=feature_names)
df['target_name'] = [target_names[i] for i in y]
# On calcule les valeurs moyennes pour les boutons de préréglage.
presets = df.groupby('target_name').mean().to_dict('index')
# On sauvegarde un résumé de l'analyse dans un fichier texte.
with open("analysis_summary.txt", "w") as f:
f.write("Analysis Summary Here") # Simplifié
print("Data analysis summary saved to analysis_summary.txt")
# Sauvegarder le dataset complet en CSV pour la visualisation
df.to_csv("iris.csv", index=False)
print("Full dataset saved to iris.csv")
# 3.3. Entraîner le modèle
# On sépare nos données : une partie pour entraîner le modèle (70%),
# et une partie pour le tester (30%).
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# On crée un modèle d'Arbre de Décision.
model = DecisionTreeClassifier(max_depth=3, random_state=42)
# On "entraîne" le modèle avec les données d'entraînement.
model.fit(X_train, y_train)
# On teste la performance du modèle sur les données de test.
y_pred = model.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print(f"Précision du modèle : {accuracy:.4f}")
# 3.4. Exporter le modèle pour le web
model_tree = export_tree_to_json(model, feature_names, target_names)
export_data = {
"model": model_tree,
"metadata": {
"accuracy": accuracy,
"presets": presets
}
}
with open("iris_model.json", "w") as f:
json.dump(export_data, f, indent=2)
print("Modèle et métadonnées exportés vers iris_model.json")
# --- Étape 4 : Lancer le script ---
if __name__ == '__main__':
main()
Le modèle est un "Arbre de Décision". Il fonctionne comme un organigramme de questions. Chaque boîte bleue est une question sur une mesure de la fleur. Si la réponse est "vrai", on suit le chemin de gauche ; sinon, on suit celui de droite. On continue jusqu'à atteindre une boîte verte, qui nous donne l'espèce de la fleur.
Ce projet est une démonstration interactive d'un classificateur de fleurs d'Iris, utilisant un modèle d'apprentissage automatique simple (Arbre de Décision) entraîné avec la bibliothèque scikit-learn en Python. Le modèle est ensuite exporté dans un format compatible avec le navigateur web pour une exécution côté client.