Skip to content

Commit e92f6e2

Browse files
Create submission.py
1 parent 640f5ab commit e92f6e2

File tree

1 file changed

+145
-0
lines changed

1 file changed

+145
-0
lines changed

tests/submission.py

Lines changed: 145 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,145 @@
1+
# partie 10
2+
3+
# submission.py
4+
5+
6+
import pandas as pd
7+
import joblib
8+
from sklearn.linear_model import LogisticRegression
9+
from google.colab import files
10+
from IPython.core.display import display, HTML
11+
12+
# Affichage d'un titre stylisé
13+
display(HTML("""
14+
<h1 style="color:#2c3e50; font-size: 32px; font-weight: bold; text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.5);">
15+
Partie 10: Création du fichier de soumission
16+
</h1>
17+
"""))
18+
19+
# ================================
20+
# ⚡ CHARGEMENT DES DONNÉES
21+
# ================================
22+
23+
# Charger les fichiers de test
24+
test_df = pd.read_csv('/content/drive/My Drive/Titanic-Survival-Predict-main/test_cleaned.csv')
25+
26+
# Vérifier que la colonne PassengerId existe
27+
assert 'PassengerId' in test_df.columns, "🚨 ERREUR : La colonne 'PassengerId' est absente du dataset test !"
28+
29+
# Extraire les caractéristiques
30+
X_test = test_df.drop(columns=['PassengerId'])
31+
32+
# Vérifier que X_test n'est pas vide
33+
assert not X_test.empty, "🚨 ERREUR : Le dataset X_test est vide après suppression de 'PassengerId' !"
34+
35+
# ================================
36+
# ⚡ CHARGEMENT DES MODÈLES
37+
# ================================
38+
39+
# Définir les chemins des modèles
40+
logreg_model_path = '/content/drive/MyDrive/Titanic-Survival-Predict-main/Models/logistic_regression_model.pkl'
41+
rf_model_path = '/content/drive/MyDrive/Titanic-Survival-Predict-main/Models/random_forest_model.pkl'
42+
xgb_model_path = '/content/drive/MyDrive/Titanic-Survival-Predict-main/Models/xgboost_model.pkl'
43+
44+
# Charger les modèles
45+
final_logreg = joblib.load(logreg_model_path)
46+
final_rf = joblib.load(rf_model_path)
47+
final_xgb = joblib.load(xgb_model_path)
48+
49+
# Vérifier que les modèles sont bien chargés
50+
assert isinstance(final_logreg, LogisticRegression), "🚨 ERREUR : Le modèle LogisticRegression n'est pas chargé correctement !"
51+
assert hasattr(final_rf, "predict"), "🚨 ERREUR : Le modèle RandomForest n'est pas chargé correctement !"
52+
assert hasattr(final_xgb, "predict"), "🚨 ERREUR : Le modèle XGBoost n'est pas chargé correctement !"
53+
54+
# ================================
55+
# ⚡ PRÉDICTION DES MODÈLES DE BASE
56+
# ================================
57+
58+
print("\n--- Génération des prédictions des modèles de base sur le jeu de test ---")
59+
60+
# Faire les prédictions avec chaque modèle
61+
test_pred_logreg = final_logreg.predict(X_test)
62+
test_pred_rf = final_rf.predict(X_test)
63+
test_pred_xgb = final_xgb.predict(X_test)
64+
65+
# Vérifier que les prédictions ont la bonne taille
66+
assert len(test_pred_logreg) == len(X_test), "🚨 ERREUR : Problème de taille des prédictions logreg !"
67+
assert len(test_pred_rf) == len(X_test), "🚨 ERREUR : Problème de taille des prédictions rf !"
68+
assert len(test_pred_xgb) == len(X_test), "🚨 ERREUR : Problème de taille des prédictions xgb !"
69+
70+
# Créer un DataFrame avec ces prédictions
71+
test_meta_features = pd.DataFrame({
72+
'logreg_pred': test_pred_logreg,
73+
'rf_pred': test_pred_rf,
74+
'xgb_pred': test_pred_xgb
75+
})
76+
77+
print("✅ Prédictions des modèles de base sur le jeu de test générées avec succès.")
78+
79+
# ================================
80+
# ⚡ ENTRAÎNEMENT DU MODÈLE MÉTA
81+
# ================================
82+
83+
print("\n--- Entraînement du modèle Meta (Régression Logistique) ---")
84+
85+
# Générer les prédictions sur l'entraînement pour créer un modèle méta
86+
train_pred_logreg = final_logreg.predict(X_test)
87+
train_pred_rf = final_rf.predict(X_test)
88+
train_pred_xgb = final_xgb.predict(X_test)
89+
90+
# Vérifier que les prédictions sont valides
91+
assert len(train_pred_logreg) == len(X_test), "🚨 ERREUR : Problème de taille des prédictions logreg sur le train !"
92+
assert len(train_pred_rf) == len(X_test), "🚨 ERREUR : Problème de taille des prédictions rf sur le train !"
93+
assert len(train_pred_xgb) == len(X_test), "🚨 ERREUR : Problème de taille des prédictions xgb sur le train !"
94+
95+
# Créer le dataset pour le modèle méta
96+
train_meta_features = pd.DataFrame({
97+
'logreg_pred': train_pred_logreg,
98+
'rf_pred': train_pred_rf,
99+
'xgb_pred': train_pred_xgb
100+
})
101+
102+
# Entraîner le modèle méta (Régression Logistique)
103+
meta_model = LogisticRegression(max_iter=1000, random_state=42)
104+
meta_model.fit(train_meta_features, test_pred_logreg)
105+
106+
print("✅ Modèle Meta entraîné avec succès.")
107+
108+
# ================================
109+
# ⚡ PRÉDICTION FINALE
110+
# ================================
111+
112+
print("\n--- Prédiction avec le modèle Meta ---")
113+
114+
# Faire les prédictions finales
115+
y_test_pred = meta_model.predict(test_meta_features)
116+
117+
# Vérifier la taille des prédictions finales
118+
assert len(y_test_pred) == len(X_test), "🚨 ERREUR : Problème de taille des prédictions finales du modèle méta !"
119+
120+
# ================================
121+
# ⚡ CRÉATION DU FICHIER DE SOUMISSION
122+
# ================================
123+
124+
print("\n--- Création du fichier de soumission ---")
125+
126+
# Créer le fichier de soumission
127+
submission = pd.DataFrame({
128+
'PassengerId': test_df['PassengerId'],
129+
'Survived': y_test_pred
130+
})
131+
132+
# Sauvegarde en CSV
133+
submission_file = 'submission.csv'
134+
submission.to_csv(submission_file, index=False)
135+
136+
# Vérifier que le fichier est bien sauvegardé
137+
assert os.path.exists(submission_file), f"🚨 ERREUR : Le fichier {submission_file} n'a pas été créé !"
138+
139+
print(f"✅ Fichier de soumission '{submission_file}' créé avec succès !")
140+
141+
# ================================
142+
# ⚡ TÉLÉCHARGEMENT DU FICHIER
143+
# ================================
144+
files.download(submission_file)
145+
print("✅ Téléchargement du fichier terminé.")

0 commit comments

Comments
 (0)