Classificateur de Fleurs d'Iris

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".

5.8
3.0
4.3
1.3

Préréglages (valeurs moyennes)

Données Complètes au Format CSV

Voici l'intégralité du jeu de données Iris utilisé pour l'entraînement.

Chargement des données...

Visualisation des Données

Ces graphiques montrent la distribution des données des fleurs d'Iris.

Longueur vs. Largeur du Pétale

Longueur vs. Largeur du Sépale

Distribution des Espèces

Code Python Utilisé

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()

Représentation Graphique du Modèle

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.

À propos de ce projet

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.

Ressources Utiles :