ANEMIASCOPE / modele.py
SerenaTOUM's picture
Create modele.py
4bb0742 verified
from joblib import dump
import pandas as pd
import os
from sklearn.ensemble import RandomForestClassifier
def save_model():
print("Chargement des données...")
try:
# Charger les données
finaldata = pd.read_excel("final_data.xlsx")
finaldata.rename(columns={'IMC Calculé': 'IMC_Calcule', 'Ménage': 'Menage'}, inplace=True)
except FileNotFoundError:
print("Erreur : le fichier de données n'a pas été trouvé.")
return
except Exception as e:
print(f"Erreur lors du chargement des données : {e}")
return
print("Données chargées, réduction de la dimension de la base de données...")
try:
# Réduire la dimension de la base de données
finalanemie = finaldata[['Region', 'Zone', 'Statut_Matrimonial', 'Menstruation', 'Fer', 'Age', 'IMC_Calcule', 'Menage', 'anemie']]
print("Données réduites, préparation des données...")
# Sélection des colonnes d'intérêt pour les variables explicatives et la variable cible
X = finalanemie[['Region', 'Zone', 'Age', 'Statut_Matrimonial', 'Menstruation', 'Fer', 'IMC_Calcule']]
y = finalanemie['anemie']
# Encodage des variables catégorielles
X_encoded = pd.get_dummies(X, columns=['Region', 'Zone', 'Statut_Matrimonial', 'Menstruation', 'Fer'], drop_first=True)
# Conversion des booléens en entiers (si nécessaire)
X_encoded = X_encoded.astype(int)
# Ajout de la variable Menage
X_encoded['Menage'] = finalanemie['Menage']
# Division des données en ensembles d'entraînement et de test
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X_encoded, y, test_size=0.2, random_state=42)
# Ajuster le modèle (Remplacez par votre modèle préféré)
model = RandomForestClassifier() # Exemple : utiliser un RandomForestClassifier
model.fit(X_train, y_train)
# Sauvegarder le modèle
model_path = "model.joblib"
print(f"Sauvegarde du modèle dans {model_path}...")
try:
dump(model, model_path)
if os.path.exists(model_path):
print(f"Le modèle a été sauvegardé avec succès dans {model_path}.")
else:
print("Échec de la sauvegarde du modèle.")
except Exception as e:
print(f"Erreur lors de la sauvegarde du modèle : {e}")
except KeyError as e:
print(f"Erreur : colonne manquante dans les données - {e}")
except Exception as e:
print(f"Erreur lors de la préparation des données ou de l'ajustement du modèle : {e}")
if __name__ == "__main__":
save_model()