Utilisation de H2O pour l'Apprentissage Profond avec le Dataset Iris

Présentation du Dataset Iris

Le dataset Iris est un ensemble de données classique en apprentissage automatique, souvent utilisé pour les tâches de classification. Il est compact, ce qui permet une expérimentation rapide. Ce jeu de données comprend 150 instances, réparties en trois classes distinctes (50 instances par classe), chaque instance possédant quatre attributs mesurés en centimètres :

  • Sepal.Length (longueur des sépales)
  • Sepal.Width (largeur des sépales)
  • Petal.Length (longueur des pétales)
  • Petal.Width (largeur des pétales)

Ces caractéristiques permettent de prédire à quelle espèce d'iris appartient une fleur parmi trois variétés : Iris Setosa, Iris Versicolour et Iris Virginica.

Exemple d'Apprentissage Profond en Python avec H2O

Code Source

# Importation et initialisation de H2O
import h2o
h2o.init()  # Démarrage de l'instance H2O, utilisant tous les cœurs disponibles et environ 25% de la mémoire système

# Chargement et préparation des données
source_url = "https://raw.githubusercontent.com/DarrenCook/h2o/bk/datasets/"
iris_frame = h2o.import_file(source_url + "iris_wheader.csv")
variable_cible = "class"
variables_entree = iris_frame.names
variables_entree.remove(variable_cible)
part_train, part_test = iris_frame.split_frame([0.8])  # 80% pour l'entraînement, 20% pour le test

# Construction du modèle d'apprentissage profond
algo = h2o.estimators.deeplearning.H2ODeepLearningEstimator()
algo.train(variables_entree, variable_cible, part_train)

# Évaluation du modèle
erreur_moyenne = algo.mse()
print("Erreur quadratique moyenne (MSE) :", erreur_moyenne)
matrice_confusion = algo.confusion_matrix(part_train)
print("Matrice de confusion sur les données d'entraînement :\n", matrice_confusion)

# Réalisation des prédictions
resultats_pred = algo.predict(part_test)
print("Aperçu des prédictions :\n", resultats_pred.head())
exactitude = (resultats_pred["predict"] == part_test["class"]).mean()
print("Taux de précision sur l'ensemble de test :", exactitude)
comparaison = resultats_pred["predict"].cbind(part_test["class"]).as_data_frame()
print("Comparaison prédictions vs valeurs réelles :\n", comparaison)

# Conventions typiques dans H2O :
# - variable_cible : la colonne à prédire (inutile en apprentissage non supervisé)
# - variables_entree : les colonnes utilisées pour l'apprentissage
# - iris_frame : l'ensemble complet des données
# - part_train / part_test : sous-ensembles pour l'entraînement et le test
# Il est recommandé d'utiliser des noms explicites pour ces variables.

Résultats de l'Exécution

Lors de l'exécution, H2O démarre un serveur local. Les sorties incluent des informations sur le cluster, le temps d'analyse des données et la progression de l'entraînement. Les résultats typiques montrent une MSE faible (environ 0.039) et une matrice de confusion révélant des erreurs minimes, principalement dans la classe Iris-versicolor. Les prédictions sur l'ensemble de test atteignent généralement une précision de 100% dans cet exemple.

Exemple d'Apprentissage Profond via l'Interface Flow

Démarrage de H2O Flow

Flow est l'interface web intégrée à H2O, accessible sans installation supplémentaire. Pour le lancer, exécutez le fichier JAR avec les options réseau appropriées :

java -jar h2o.jar -ip <adresse_ip> -port 54321

Après le démarrage, un message indique l'URL pour accéder à Flow, par exemple http://localhost:54321.

Importation des Données

Dans Flow, utilisez la fonction Import Files (accessible via le menu Data). Saisissez le chemin du fichier, qui peut être absolu ou relatif au répertoire de l'application. Après importation, cliquez sur Parse these files pour charger les données dans un format hexadécimal (hex). Le séparateur et les options de conversion sont généralement laissés par défaut.

Pour diviser les données, sélectionnez l'ensemble hex et choisissez Split dans les actions disponibles, en spécifiant les proportions pour les ensembles d'entraînement et de test.

Création du Modèle

Allez dans Build Model et choisissez l'algorithme Deep Learning. Dans les paramètres, définissez la colonne cible (response_column) comme "class". Tous les autres hyperparamètres conservent leurs valeurs par défaut pour cet exemple. Lancez la construction du modèle avec le bouton dédié.

Génération des Prédictions

Une fois le modèle entraîné, utilisez l'option Predict depuis la vue du modèle ou via le menu Score. Sélectionnez l'ensemble de test pour obtenir les prédictions. Les résultats s'affichent sous forme de tableau avec les probabilités pour chaque classe.

Remarques Supplémentaires

L'interface Flow offre une gestion similaire à Python pour la plupart des opérations d'apprentissage automatique, bien que certaines manipulations de données avancées puissent être plus faciles en script Python. Les données chargées dans Python sont visibles dans Flow et vice-versa. Le panneau d'administration permet de surveiller l'utilisation des ressources CPU au sein du cluster H2O.

Étiquettes: H2O Python deep learning Iris Dataset Machine Learning Frameworks

Publié le 7 août à 06h40