0% ont trouvé ce document utile (0 vote)
6 vues2 pages

Mayele

Le document présente un script Python pour charger, prétraiter et entraîner un modèle de réseau de neurones sur un dataset de plantes. Il utilise des bibliothèques comme pandas, scikit-learn et TensorFlow pour gérer les données, appliquer des transformations et construire le modèle. Enfin, il évalue la performance du modèle sur un jeu de test en affichant la perte et la précision.

Transféré par

Cedric Vumisa
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats TXT, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
6 vues2 pages

Mayele

Le document présente un script Python pour charger, prétraiter et entraîner un modèle de réseau de neurones sur un dataset de plantes. Il utilise des bibliothèques comme pandas, scikit-learn et TensorFlow pour gérer les données, appliquer des transformations et construire le modèle. Enfin, il évalue la performance du modèle sur un jeu de test en affichant la perte et la précision.

Transféré par

Cedric Vumisa
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats TXT, PDF, TXT ou lisez en ligne sur Scribd

import pandas as pd

from sklearn.model_selection import train_test_split


from sklearn.preprocessing import StandardScaler, OneHotEncoder
from sklearn.compose import ColumnTransformer
import tensorflow as tf

# --- 1. Chargement et Préparation des Données ---

# Charger le dataset à partir du fichier CSV


try:
df = pd.read_csv('plantes.csv')
print("✅ Fichier 'plantes.csv' chargé avec succès.")
except FileNotFoundError:
print("❌ Erreur : Le fichier 'plantes.csv' est introuvable. Assurez-vous qu'il
est dans le même dossier que le script.")
exit()

# Séparer les caractéristiques (X) de la variable cible (y)


# La colonne 'Nom' est un identifiant et n'est pas utile pour l'entraînement
X = df.drop(['Nom', 'Toxique'], axis=1)
y = df['Toxique']

# Identifier les colonnes numériques et catégorielles pour le prétraitement


numerical_features = X.select_dtypes(include=['int64', 'float64']).columns
categorical_features = X.select_dtypes(include=['object']).columns

print(f"Colonnes numériques : {list(numerical_features)}")


print(f"Colonnes catégorielles : {list(categorical_features)}")

# Créer un 'preprocessor' qui applique les bonnes transformations aux bonnes


colonnes
# - StandardScaler : Met à l'échelle les données numériques (ex: Taille_cm)
# - OneHotEncoder : Transforme les catégories (ex: Couleur_Fleurs) en vecteurs
numériques
preprocessor = ColumnTransformer(
transformers=[
('num', StandardScaler(), numerical_features),
('cat', OneHotEncoder(handle_unknown='ignore'), categorical_features)
])

# Diviser les données : 80% pour l'entraînement, 20% pour le test


X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2,
random_state=42, stratify=y)

# Appliquer le prétraitement aux données


X_train_processed = preprocessor.fit_transform(X_train).toarray()
X_test_processed = preprocessor.transform(X_test).toarray()

# Le nombre de colonnes après encodage définit la taille de la couche d'entrée


input_shape = X_train_processed.shape[1]
print(f"\nNombre de caractéristiques après prétraitement : {input_shape}")

# --- 2. Construction du Modèle de Réseau de Neurones ---

# Modèle séquentiel (couches empilées les unes après les autres)


model = tf.keras.models.Sequential([
# Couche d'entrée avec la forme déterminée par nos données
tf.keras.layers.Input(shape=(input_shape,)),
# 1ère couche cachée : 128 neurones, activation ReLU
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dropout(0.3), # Dropout pour éviter le surapprentissage

# 2ème couche cachée : 64 neurones


tf.keras.layers.Dense(64, activation='relu'),

# 3ème couche cachée : 32 neurones


tf.keras.layers.Dense(32, activation='relu'),

# 4ème couche cachée : 16 neurones


tf.keras.layers.Dense(16, activation='relu'),

# 5ème couche cachée : 8 neurones


tf.keras.layers.Dense(8, activation='relu'),

# Couche de sortie : 1 neurone avec activation 'sigmoid'


# 'sigmoid' produit une probabilité (entre 0 et 1), parfait pour la
classification binaire
tf.keras.layers.Dense(1, activation='sigmoid')
])

# --- 3. Compilation du Modèle ---

model.compile(
optimizer='adam', # Un optimiseur efficace et populaire
loss='binary_crossentropy', # La fonction de perte standard pour la
classification binaire
metrics=['accuracy'] # Métrique pour suivre la performance
)

# Afficher un résumé de l'architecture du modèle


print("\n--- Architecture du Modèle ---")
model.summary()
print("----------------------------\n")

# --- 4. Entraînement du Modèle ---

print("🚀 Début de l'entraînement...")


history = model.fit(
X_train_processed,
y_train,
epochs=50, # Le modèle verra les données 50 fois
batch_size=8,
validation_split=0.2, # Garde 20% des données d'entraînement pour
valider à chaque époque
verbose=1 # Affiche la progression
)
print("🏁 Entraînement terminé !")

# --- 5. Évaluation du Modèle ---

print("\n--- Évaluation sur les données de test ---")


loss, accuracy = model.evaluate(X_test_processed, y_test, verbose=0)
print(f"📊 Perte (Loss) sur le jeu de test : {loss:.4f}")
print(f"🎯 Précision (Accuracy) sur le jeu de test : {accuracy*100:.2f}%")

Vous aimerez peut-être aussi