{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.11.11","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"none","dataSources":[{"sourceId":3004,"databundleVersionId":861823,"sourceType":"competition"}],"dockerImageVersionId":31012,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"# Imports\nimport numpy as np\nimport pandas as pd\nfrom sklearn.model_selection import train_test_split\nfrom sklearn.ensemble import RandomForestClassifier, AdaBoostClassifier\nfrom sklearn.metrics import accuracy_score\nfrom lightgbm import LGBMClassifier\nimport xgboost as xgb\n\n# Chargement des données\ndf_train = pd.read_csv(\"/kaggle/input/digit-recognizer/train.csv\")\ndf_test = pd.read_csv(\"/kaggle/input/digit-recognizer/test.csv\")\n\n# Split features et labels\nX = df_train.drop(\"label\", axis=1)\ny = df_train[\"label\"]\n\n# Train / validation split\nX_train, X_val, y_train, y_val = train_test_split(X, y, test_size=0.2, random_state=42)\n\n# Définir les modèles rapides à tester\nmodels = {\n    \"RandomForest\": RandomForestClassifier(n_estimators=100, random_state=42, n_jobs=-1),\n    \"AdaBoost\": AdaBoostClassifier(n_estimators=100, random_state=42),\n    \"LightGBM\": LGBMClassifier(n_estimators=100, random_state=42),\n    \"XGBoost\": xgb.XGBClassifier(n_estimators=100, use_label_encoder=False, eval_metric='mlogloss', random_state=42, n_jobs=-1)\n}\n\n# Entraînement et évaluation des modèles\nresults = {}\nfor name, model in models.items():\n    print(f\"\\n▶️ Entraînement du modèle : {name}\")\n    model.fit(X_train, y_train)\n    preds_val = model.predict(X_val)\n    acc = accuracy_score(y_val, preds_val)\n    results[name] = acc\n    print(f\"✅ Accuracy sur la validation : {acc:.4f}\")\n\n# Afficher les performances\nprint(\"\\n📊 Résultats de tous les modèles :\")\nfor name, acc in results.items():\n    print(f\"{name}: {acc:.4f}\")\n\n# Choisir le meilleur modèle\nbest_model_name = max(results, key=results.get)\nbest_model = models[best_model_name]\nprint(f\"\\n🏆 Meilleur modèle : {best_model_name} avec {results[best_model_name]:.4f} d'accuracy\")\n\n# Prédictions sur le test set\ntest_preds = best_model.predict(df_test)\n\n# Génération du fichier submission.csv\nsubmission = pd.DataFrame({\n    \"ImageId\": range(1, len(test_preds) + 1),\n    \"Label\": test_preds\n})\nsubmission.to_csv(\"/kaggle/working/submission.csv\", index=False)\nprint(\"\\n✅ Fichier 'submission.csv' généré avec succès.\")\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-04-17T14:32:46.043694Z","iopub.execute_input":"2025-04-17T14:32:46.043931Z","iopub.status.idle":"2025-04-17T14:37:29.833489Z","shell.execute_reply.started":"2025-04-17T14:32:46.043902Z","shell.execute_reply":"2025-04-17T14:37:29.832302Z"}},"outputs":[],"execution_count":null}]}