From 2c9c47dd85d4e0260574629ffb1c3051a1169c96 Mon Sep 17 00:00:00 2001 From: vdemessa <victor.demessance@etu.utc.fr> Date: Sun, 26 May 2024 19:13:17 +0200 Subject: [PATCH] [*] Update last commit --- .../classification/Adaboost.ipynb | 6 +- .../classification/RandomForest.ipynb | 79 ++++++++++++++----- machine_learning/classification/SVM.ipynb | 71 ----------------- 3 files changed, 62 insertions(+), 94 deletions(-) diff --git a/machine_learning/classification/Adaboost.ipynb b/machine_learning/classification/Adaboost.ipynb index 359d8fa..7d2d199 100644 --- a/machine_learning/classification/Adaboost.ipynb +++ b/machine_learning/classification/Adaboost.ipynb @@ -4,7 +4,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Entrainement d'un modèle avec la méthode des SVM" + "## Entrainement d'un modèle avec la méthode Adaboost" ] }, { @@ -196,7 +196,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 10, "metadata": {}, "outputs": [ { @@ -211,7 +211,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Taux d'erreur : 0.6302521008403361\n" + "Taux d'erreur : 0.5294117647058824\n" ] } ], diff --git a/machine_learning/classification/RandomForest.ipynb b/machine_learning/classification/RandomForest.ipynb index 9e9be72..6fff77b 100644 --- a/machine_learning/classification/RandomForest.ipynb +++ b/machine_learning/classification/RandomForest.ipynb @@ -254,19 +254,19 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 38, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Taux d'erreur : 0.2689075630252101\n" + "Taux d'erreur : 0.18487394957983194\n" ] } ], "source": [ - "adaboost_clf = RandomForestClassifier(n_estimators=10)\n", + "adaboost_clf = RandomForestClassifier(n_estimators=90)\n", "adaboost_clf.fit(X_train_HOG, Y_train)\n", "y_HOG = adaboost_clf.predict(X_val_HOG)\n", "\n", @@ -282,26 +282,25 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 35, "metadata": {}, "outputs": [ { - "ename": "KeyboardInterrupt", - "evalue": "", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", - "Cell \u001b[1;32mIn[33], line 7\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m i \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mrange\u001b[39m(\u001b[38;5;241m1\u001b[39m, \u001b[38;5;241m100\u001b[39m, \u001b[38;5;241m10\u001b[39m):\n\u001b[0;32m 6\u001b[0m adaboost_clf \u001b[38;5;241m=\u001b[39m RandomForestClassifier(n_estimators\u001b[38;5;241m=\u001b[39mi) \u001b[38;5;66;03m# To change\u001b[39;00m\n\u001b[1;32m----> 7\u001b[0m \u001b[43madaboost_clf\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfit\u001b[49m\u001b[43m(\u001b[49m\u001b[43mX_train\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mY_train\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 8\u001b[0m y \u001b[38;5;241m=\u001b[39m adaboost_clf\u001b[38;5;241m.\u001b[39mpredict(X_val)\n\u001b[0;32m 9\u001b[0m tab\u001b[38;5;241m.\u001b[39mappend(np\u001b[38;5;241m.\u001b[39mmean(y \u001b[38;5;241m!=\u001b[39m Y_val))\n", - "File \u001b[1;32mc:\\Users\\victo\\AppData\\Local\\Programs\\Python\\Python312\\Lib\\site-packages\\sklearn\\base.py:1474\u001b[0m, in \u001b[0;36m_fit_context.<locals>.decorator.<locals>.wrapper\u001b[1;34m(estimator, *args, **kwargs)\u001b[0m\n\u001b[0;32m 1467\u001b[0m estimator\u001b[38;5;241m.\u001b[39m_validate_params()\n\u001b[0;32m 1469\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m config_context(\n\u001b[0;32m 1470\u001b[0m skip_parameter_validation\u001b[38;5;241m=\u001b[39m(\n\u001b[0;32m 1471\u001b[0m prefer_skip_nested_validation \u001b[38;5;129;01mor\u001b[39;00m global_skip_validation\n\u001b[0;32m 1472\u001b[0m )\n\u001b[0;32m 1473\u001b[0m ):\n\u001b[1;32m-> 1474\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfit_method\u001b[49m\u001b[43m(\u001b[49m\u001b[43mestimator\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[1;32mc:\\Users\\victo\\AppData\\Local\\Programs\\Python\\Python312\\Lib\\site-packages\\sklearn\\ensemble\\_forest.py:489\u001b[0m, in \u001b[0;36mBaseForest.fit\u001b[1;34m(self, X, y, sample_weight)\u001b[0m\n\u001b[0;32m 478\u001b[0m trees \u001b[38;5;241m=\u001b[39m [\n\u001b[0;32m 479\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_make_estimator(append\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mFalse\u001b[39;00m, random_state\u001b[38;5;241m=\u001b[39mrandom_state)\n\u001b[0;32m 480\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m i \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mrange\u001b[39m(n_more_estimators)\n\u001b[0;32m 481\u001b[0m ]\n\u001b[0;32m 483\u001b[0m \u001b[38;5;66;03m# Parallel loop: we prefer the threading backend as the Cython code\u001b[39;00m\n\u001b[0;32m 484\u001b[0m \u001b[38;5;66;03m# for fitting the trees is internally releasing the Python GIL\u001b[39;00m\n\u001b[0;32m 485\u001b[0m \u001b[38;5;66;03m# making threading more efficient than multiprocessing in\u001b[39;00m\n\u001b[0;32m 486\u001b[0m \u001b[38;5;66;03m# that case. However, for joblib 0.12+ we respect any\u001b[39;00m\n\u001b[0;32m 487\u001b[0m \u001b[38;5;66;03m# parallel_backend contexts set at a higher level,\u001b[39;00m\n\u001b[0;32m 488\u001b[0m \u001b[38;5;66;03m# since correctness does not rely on using threads.\u001b[39;00m\n\u001b[1;32m--> 489\u001b[0m trees \u001b[38;5;241m=\u001b[39m \u001b[43mParallel\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 490\u001b[0m \u001b[43m \u001b[49m\u001b[43mn_jobs\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mn_jobs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 491\u001b[0m \u001b[43m \u001b[49m\u001b[43mverbose\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mverbose\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 492\u001b[0m \u001b[43m \u001b[49m\u001b[43mprefer\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mthreads\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[0;32m 493\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 494\u001b[0m \u001b[43m \u001b[49m\u001b[43mdelayed\u001b[49m\u001b[43m(\u001b[49m\u001b[43m_parallel_build_trees\u001b[49m\u001b[43m)\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 495\u001b[0m \u001b[43m \u001b[49m\u001b[43mt\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 496\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mbootstrap\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 497\u001b[0m \u001b[43m \u001b[49m\u001b[43mX\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 498\u001b[0m \u001b[43m \u001b[49m\u001b[43my\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 499\u001b[0m \u001b[43m \u001b[49m\u001b[43msample_weight\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 500\u001b[0m \u001b[43m \u001b[49m\u001b[43mi\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 501\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43mlen\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mtrees\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 502\u001b[0m \u001b[43m \u001b[49m\u001b[43mverbose\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mverbose\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 503\u001b[0m \u001b[43m \u001b[49m\u001b[43mclass_weight\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mclass_weight\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 504\u001b[0m \u001b[43m \u001b[49m\u001b[43mn_samples_bootstrap\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mn_samples_bootstrap\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 505\u001b[0m \u001b[43m \u001b[49m\u001b[43mmissing_values_in_feature_mask\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mmissing_values_in_feature_mask\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 506\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 507\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mi\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mt\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43menumerate\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mtrees\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 508\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 510\u001b[0m \u001b[38;5;66;03m# Collect newly grown trees\u001b[39;00m\n\u001b[0;32m 511\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mestimators_\u001b[38;5;241m.\u001b[39mextend(trees)\n", - "File \u001b[1;32mc:\\Users\\victo\\AppData\\Local\\Programs\\Python\\Python312\\Lib\\site-packages\\sklearn\\utils\\parallel.py:67\u001b[0m, in \u001b[0;36mParallel.__call__\u001b[1;34m(self, iterable)\u001b[0m\n\u001b[0;32m 62\u001b[0m config \u001b[38;5;241m=\u001b[39m get_config()\n\u001b[0;32m 63\u001b[0m iterable_with_config \u001b[38;5;241m=\u001b[39m (\n\u001b[0;32m 64\u001b[0m (_with_config(delayed_func, config), args, kwargs)\n\u001b[0;32m 65\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m delayed_func, args, kwargs \u001b[38;5;129;01min\u001b[39;00m iterable\n\u001b[0;32m 66\u001b[0m )\n\u001b[1;32m---> 67\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43msuper\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[38;5;21;43m__call__\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43miterable_with_config\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[1;32mc:\\Users\\victo\\AppData\\Local\\Programs\\Python\\Python312\\Lib\\site-packages\\joblib\\parallel.py:1863\u001b[0m, in \u001b[0;36mParallel.__call__\u001b[1;34m(self, iterable)\u001b[0m\n\u001b[0;32m 1861\u001b[0m output \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_get_sequential_output(iterable)\n\u001b[0;32m 1862\u001b[0m \u001b[38;5;28mnext\u001b[39m(output)\n\u001b[1;32m-> 1863\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m output \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mreturn_generator \u001b[38;5;28;01melse\u001b[39;00m \u001b[38;5;28;43mlist\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43moutput\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 1865\u001b[0m \u001b[38;5;66;03m# Let's create an ID that uniquely identifies the current call. If the\u001b[39;00m\n\u001b[0;32m 1866\u001b[0m \u001b[38;5;66;03m# call is interrupted early and that the same instance is immediately\u001b[39;00m\n\u001b[0;32m 1867\u001b[0m \u001b[38;5;66;03m# re-used, this id will be used to prevent workers that were\u001b[39;00m\n\u001b[0;32m 1868\u001b[0m \u001b[38;5;66;03m# concurrently finalizing a task from the previous call to run the\u001b[39;00m\n\u001b[0;32m 1869\u001b[0m \u001b[38;5;66;03m# callback.\u001b[39;00m\n\u001b[0;32m 1870\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_lock:\n", - "File \u001b[1;32mc:\\Users\\victo\\AppData\\Local\\Programs\\Python\\Python312\\Lib\\site-packages\\joblib\\parallel.py:1792\u001b[0m, in \u001b[0;36mParallel._get_sequential_output\u001b[1;34m(self, iterable)\u001b[0m\n\u001b[0;32m 1790\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mn_dispatched_batches \u001b[38;5;241m+\u001b[39m\u001b[38;5;241m=\u001b[39m \u001b[38;5;241m1\u001b[39m\n\u001b[0;32m 1791\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mn_dispatched_tasks \u001b[38;5;241m+\u001b[39m\u001b[38;5;241m=\u001b[39m \u001b[38;5;241m1\u001b[39m\n\u001b[1;32m-> 1792\u001b[0m res \u001b[38;5;241m=\u001b[39m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 1793\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mn_completed_tasks \u001b[38;5;241m+\u001b[39m\u001b[38;5;241m=\u001b[39m \u001b[38;5;241m1\u001b[39m\n\u001b[0;32m 1794\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mprint_progress()\n", - "File \u001b[1;32mc:\\Users\\victo\\AppData\\Local\\Programs\\Python\\Python312\\Lib\\site-packages\\sklearn\\utils\\parallel.py:129\u001b[0m, in \u001b[0;36m_FuncWrapper.__call__\u001b[1;34m(self, *args, **kwargs)\u001b[0m\n\u001b[0;32m 127\u001b[0m config \u001b[38;5;241m=\u001b[39m {}\n\u001b[0;32m 128\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m config_context(\u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mconfig):\n\u001b[1;32m--> 129\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfunction\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[1;32mc:\\Users\\victo\\AppData\\Local\\Programs\\Python\\Python312\\Lib\\site-packages\\sklearn\\ensemble\\_forest.py:192\u001b[0m, in \u001b[0;36m_parallel_build_trees\u001b[1;34m(tree, bootstrap, X, y, sample_weight, tree_idx, n_trees, verbose, class_weight, n_samples_bootstrap, missing_values_in_feature_mask)\u001b[0m\n\u001b[0;32m 189\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m class_weight \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mbalanced_subsample\u001b[39m\u001b[38;5;124m\"\u001b[39m:\n\u001b[0;32m 190\u001b[0m curr_sample_weight \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m=\u001b[39m compute_sample_weight(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mbalanced\u001b[39m\u001b[38;5;124m\"\u001b[39m, y, indices\u001b[38;5;241m=\u001b[39mindices)\n\u001b[1;32m--> 192\u001b[0m \u001b[43mtree\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_fit\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 193\u001b[0m \u001b[43m \u001b[49m\u001b[43mX\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 194\u001b[0m \u001b[43m \u001b[49m\u001b[43my\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 195\u001b[0m \u001b[43m \u001b[49m\u001b[43msample_weight\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcurr_sample_weight\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 196\u001b[0m \u001b[43m \u001b[49m\u001b[43mcheck_input\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[0;32m 197\u001b[0m \u001b[43m \u001b[49m\u001b[43mmissing_values_in_feature_mask\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mmissing_values_in_feature_mask\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 198\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 199\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 200\u001b[0m tree\u001b[38;5;241m.\u001b[39m_fit(\n\u001b[0;32m 201\u001b[0m X,\n\u001b[0;32m 202\u001b[0m y,\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 205\u001b[0m missing_values_in_feature_mask\u001b[38;5;241m=\u001b[39mmissing_values_in_feature_mask,\n\u001b[0;32m 206\u001b[0m )\n", - "File \u001b[1;32mc:\\Users\\victo\\AppData\\Local\\Programs\\Python\\Python312\\Lib\\site-packages\\sklearn\\tree\\_classes.py:472\u001b[0m, in \u001b[0;36mBaseDecisionTree._fit\u001b[1;34m(self, X, y, sample_weight, check_input, missing_values_in_feature_mask)\u001b[0m\n\u001b[0;32m 461\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 462\u001b[0m builder \u001b[38;5;241m=\u001b[39m BestFirstTreeBuilder(\n\u001b[0;32m 463\u001b[0m splitter,\n\u001b[0;32m 464\u001b[0m min_samples_split,\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 469\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mmin_impurity_decrease,\n\u001b[0;32m 470\u001b[0m )\n\u001b[1;32m--> 472\u001b[0m \u001b[43mbuilder\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mbuild\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mtree_\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mX\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43my\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43msample_weight\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmissing_values_in_feature_mask\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 474\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mn_outputs_ \u001b[38;5;241m==\u001b[39m \u001b[38;5;241m1\u001b[39m \u001b[38;5;129;01mand\u001b[39;00m is_classifier(\u001b[38;5;28mself\u001b[39m):\n\u001b[0;32m 475\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mn_classes_ \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mn_classes_[\u001b[38;5;241m0\u001b[39m]\n", - "\u001b[1;31mKeyboardInterrupt\u001b[0m: " + "data": { + "image/png": "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G6OlpeV111R1A2tDQ0NWrlyZgYGBqX2Tk5MZGBjImjVrTnnMmjVrpq1PkkceeWTG9QDA+aXqX9P09vZmw4YN6erqyqpVq7Jjx46MjY2lp6cnSbJ+/fosWbIk/f39SZLbb789N910Uz772c/m5ptvzsMPP5xvf/vbeeCBB2b3mQAAc1LVMbJu3bocP348W7duzdDQUDo7O7N///60tbUlSY4cOZK6ulcuuNxwww3Zu3dvPvGJT+RjH/tYfvqnfzpf/epXc80118zes3gTaGxsTF9f36t+vcQbw+t9bnm9zy2v97nl9S5vXqXyeu+3AQB44/jbNABAUWIEAChKjAAARYkRAKAoMTILdu3alY6OjjQ1NWX16tU5cOBA6ZFqUn9/f66//vosXLgwixYtyi233JJnn3229FjnjW3btmXevHm54447So9Ss1544YX8xm/8Ri677LLMnz8/1157bb797W+XHqsmTUxM5A/+4A/yjne8I/Pnz89VV12Vu+666/X/hgpvCDFylvbt25fe3t709fXl0KFDWb58edauXZtjx46VHq3mfOMb38htt92Wb33rW3nkkUfy4x//OO973/syNjZWerSa98QTT+Tzn/983v3ud5cepWb98Ic/zI033pgLL7wwf/d3f5fvfve7+exnP5tLLrmk9Gg16Z577sn999+fnTt35nvf+17uueeefPrTn859991XerTzkrf2nqXVq1fn+uuvz86dO5P85BNp29vb89GPfjSbN28uPF1tO378eBYtWpRvfOMbee9731t6nJr1ox/9KNddd13+5E/+JH/8x3+czs7O7Nixo/RYNWfz5s35l3/5l/zzP/9z6VHOC7/8y7+ctra2fOELX5ja94EPfCDz58/PQw89VHCy85MrI2fh5MmTOXjwYLq7u6f21dXVpbu7O4ODgwUnOz+MjIwkSS699NLCk9S22267LTfffPO0/+fMvr/+679OV1dXfu3Xfi2LFi3KihUr8uCDD5Yeq2bdcMMNGRgYyPe///0kyb/+67/mscceyy/90i8Vnuz89Kb8q71zxYkTJzIxMTH16bP/p62tLc8880yhqc4Pk5OTueOOO3LjjTfW3Kf5vpk8/PDDOXToUJ544onSo9S8//zP/8z999+f3t7efOxjH8sTTzyR3/md30lDQ0M2bNhQeryas3nz5oyOjmbp0qWpr6/PxMRE7r777tx6662lRzsviRHmpNtuuy1PP/10HnvssdKj1KyjR4/m9ttvzyOPPJKmpqbS49S8ycnJdHV15VOf+lSSZMWKFXn66aeze/duMfIG+Iu/+It86Utfyt69e/Oud70rhw8fzh133JHLL7/c612AGDkLra2tqa+vz/Dw8LT9w8PDWbx4caGpat+mTZvyt3/7t/nmN7+Zt73tbaXHqVkHDx7MsWPHct11103tm5iYyDe/+c3s3Lkz4+Pjqa+vLzhhbXnrW9+aZcuWTdv3zne+M3/1V39VaKLaduedd2bz5s354Ac/mCS59tpr8/zzz6e/v1+MFOCekbPQ0NCQlStXZmBgYGrf5ORkBgYGsmbNmoKT1aZKpZJNmzblK1/5Sv7xH/8x73jHO0qPVNN+/ud/Pk899VQOHz48tXV1deXWW2/N4cOHhcgsu/HGG1/1VvXvf//7efvb315ootr28ssvT/ujrklSX1+fycnJQhOd31wZOUu9vb3ZsGFDurq6smrVquzYsSNjY2Pp6ekpPVrNue2227J379587Wtfy8KFCzM0NJQkaWlpyfz58wtPV3sWLlz4qvtx3vKWt+Syyy5zn84b4Hd/93dzww035FOf+lR+/dd/PQcOHMgDDzyQBx54oPRoNen9739/7r777lxxxRV517velSeffDLbt2/Pb/3Wb5Ue7fxU4azdd999lSuuuKLS0NBQWbVqVeVb3/pW6ZFqUpJTbn/2Z39WerTzxk033VS5/fbbS49Rs/7mb/6mcs0111QaGxsrS5curTzwwAOlR6pZo6Ojldtvv71yxRVXVJqamipXXnll5eMf/3hlfHy89GjnJZ8zAgAU5Z4RAKAoMQIAFCVGAICixAgAUJQYAQCKEiMAQFFiBAAoSowAAEWJEQCgKDECABQlRgCAosQIAFDU/wN/NkntwSC48gAAAABJRU5ErkJggg==", + "text/plain": [ + "<Figure size 640x480 with 1 Axes>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[0.5126050420168067, 0.23529411764705882, 0.20168067226890757, 0.18487394957983194, 0.19327731092436976, 0.19327731092436976, 0.16806722689075632, 0.18487394957983194, 0.15126050420168066, 0.17647058823529413]\n", + "Taux d'erreur : 0.17647058823529413\n" ] } ], @@ -322,6 +321,46 @@ "print(tab)\n", "print(f\"Taux d'erreur : {np.mean(y != Y_val)}\")" ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiMAAAGdCAYAAADAAnMpAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAavUlEQVR4nO3df2xd9X3/8VdssJ2UxPzwYpfU1AWmpSk0DjHxAmpZNa9ZxbohdVtasSXyuvxT0sGsoSXtFm9l1KGlkSeSkcKaTiqNyKb1xzZ12ZA32jFchSZkg/5ItU00LshOonU2GH2dyr7fP6oZeSSQm18f7Dwe0pHwyeec+75XSH7q+Nx751UqlUoAAAqpKT0AAHBhEyMAQFFiBAAoSowAAEWJEQCgKDECABQlRgCAosQIAFDURaUHOBVTU1N54YUXsnDhwsybN6/0OADAKahUKnnxxRdz5ZVXpqbm5Nc/ZkWMvPDCC2ltbS09BgBwGoaGhvKWt7zlpP8+K2Jk4cKFSX7yZBYtWlR4GgDgVIyNjaW1tXX69/jJzIoY+d8/zSxatEiMAMAs83q3WLiBFQAoSowAAEWJEQCgKDECABQlRgCAosQIAFCUGAEAihIjAEBRYgQAKEqMAABFiREAoCgxAgAUJUYAgKJOK0Z27NiRtra2NDQ0pLOzM/v27Tvp2r/4i7/IvHnzZmwNDQ2nPTAAMLdcVO0Be/bsSU9PT3bu3JnOzs709/dnzZo1OXToUBYvXnzCYxYtWpRDhw5N//x6XyV8Pm19+ljpEV5l04qm0iMAwHlT9ZWRbdu2ZcOGDenu7s6yZcuyc+fOLFiwILt27TrpMfPmzUtLS8v01tzcfEZDAwBzR1Uxcvz48ezfvz9dXV2vnKCmJl1dXRkcHDzpcS+99FLe+ta3prW1Nb/yK7+Sb3/726/5OBMTExkbG5uxAQBzU1UxcuzYsUxOTr7qykZzc3OGh4dPeMzP/MzPZNeuXfnqV7+aRx55JFNTU7npppvywx/+8KSP09fXl8bGxumttbW1mjEBgFnknL+bZvXq1Vm3bl3a29tzyy235Etf+lJ+6qd+Kp/97GdPeszmzZszOjo6vQ0NDZ3rMQGAQqq6gbWpqSm1tbUZGRmZsX9kZCQtLS2ndI6LL744K1asyH/8x3+cdE19fX3q6+urGQ0AmKWqujJSV1eXlStXZmBgYHrf1NRUBgYGsnr16lM6x+TkZJ555pm8+c1vrm5SAGBOqvqtvT09PVm/fn06OjqyatWq9Pf3Z3x8PN3d3UmSdevWZcmSJenr60uSfOITn8jP/uzP5tprr83//M//5NOf/nR+8IMf5Ld/+7fP7jMBAGalqmNk7dq1OXr0aLZs2ZLh4eG0t7dn79690ze1Hj58ODU1r1xw+dGPfpQNGzZkeHg4l112WVauXJknn3wyy5YtO3vPAgCYteZVKpVK6SFez9jYWBobGzM6OppFixad1XP70DMAODdO9fe376YBAIoSIwBAUWIEAChKjAAARYkRAKAoMQIAFCVGAICixAgAUJQYAQCKEiMAQFFiBAAoSowAAEWJEQCgKDECABQlRgCAosQIAFCUGAEAihIjAEBRYgQAKEqMAABFiREAoCgxAgAUJUYAgKLECABQlBgBAIoSIwBAUWIEAChKjAAARYkRAKAoMQIAFCVGAICixAgAUJQYAQCKEiMAQFFiBAAoSowAAEWJEQCgKDECABQlRgCAosQIAFCUGAEAihIjAEBRYgQAKEqMAABFiREAoCgxAgAUJUYAgKLECABQlBgBAIoSIwBAUWIEAChKjAAARYkRAKAoMQIAFCVGAICixAgAUJQYAQCKEiMAQFFiBAAo6rRiZMeOHWlra0tDQ0M6Ozuzb9++Uzru0Ucfzbx583LbbbedzsMCAHNQ1TGyZ8+e9PT0pLe3NwcOHMjy5cuzZs2aHDly5DWPe+655/J7v/d7ede73nXawwIAc0/VMbJt27Zs2LAh3d3dWbZsWXbu3JkFCxZk165dJz1mcnIyt99+e/74j/84V1999RkNDADMLVXFyPHjx7N///50dXW9coKamnR1dWVwcPCkx33iE5/I4sWL8+EPf/iUHmdiYiJjY2MzNgBgbqoqRo4dO5bJyck0NzfP2N/c3Jzh4eETHvPEE0/kc5/7XB5++OFTfpy+vr40NjZOb62trdWMCQDMIuf03TQvvvhifvM3fzMPP/xwmpqaTvm4zZs3Z3R0dHobGho6h1MCACVdVM3ipqam1NbWZmRkZMb+kZGRtLS0vGr9f/7nf+a5557L+9///ul9U1NTP3ngiy7KoUOHcs0117zquPr6+tTX11czGgAwS1V1ZaSuri4rV67MwMDA9L6pqakMDAxk9erVr1q/dOnSPPPMMzl48OD09su//Mt5z3vek4MHD/rzCwBQ3ZWRJOnp6cn69evT0dGRVatWpb+/P+Pj4+nu7k6SrFu3LkuWLElfX18aGhpy3XXXzTj+0ksvTZJX7QcALkxVx8jatWtz9OjRbNmyJcPDw2lvb8/evXunb2o9fPhwamp8sCsAcGrmVSqVSukhXs/Y2FgaGxszOjqaRYsWndVzb3362Fk939mwacWp3+wLAG9Up/r72yUMAKAoMQIAFCVGAICixAgAUJQYAQCKEiMAQFFiBAAoSowAAEWJEQCgKDECABQlRgCAosQIAFCUGAEAihIjAEBRYgQAKEqMAABFiREAoCgxAgAUJUYAgKLECABQlBgBAIoSIwBAUWIEAChKjAAARYkRAKAoMQIAFCVGAICixAgAUJQYAQCKEiMAQFFiBAAoSowAAEWJEQCgKDECABQlRgCAosQIAFCUGAEAihIjAEBRYgQAKEqMAABFiREAoCgxAgAUJUYAgKLECABQlBgBAIoSIwBAUWIEAChKjAAARYkRAKAoMQIAFCVGAICixAgAUJQYAQCKEiMAQFFiBAAoSowAAEWJEQCgKDECABQlRgCAok4rRnbs2JG2trY0NDSks7Mz+/btO+naL33pS+no6Mill16aN73pTWlvb88XvvCF0x4YAJhbqo6RPXv2pKenJ729vTlw4ECWL1+eNWvW5MiRIydcf/nll+fjH/94BgcH8+///u/p7u5Od3d3/uEf/uGMhwcAZr95lUqlUs0BnZ2dufHGG7N9+/YkydTUVFpbW/PRj340mzZtOqVz3HDDDbn11ltzzz33nNL6sbGxNDY2ZnR0NIsWLapm3Ne19eljZ/V8Z8OmFU2lRwCAM3aqv7+rujJy/Pjx7N+/P11dXa+coKYmXV1dGRwcfN3jK5VKBgYGcujQobz73e8+6bqJiYmMjY3N2ACAuamqGDl27FgmJyfT3Nw8Y39zc3OGh4dPetzo6GguueSS1NXV5dZbb80DDzyQX/iFXzjp+r6+vjQ2Nk5vra2t1YwJAMwi5+XdNAsXLszBgwfz1FNP5d57701PT08ef/zxk67fvHlzRkdHp7ehoaHzMSYAUMBF1SxuampKbW1tRkZGZuwfGRlJS0vLSY+rqanJtddemyRpb2/Pd7/73fT19eXnfu7nTri+vr4+9fX11YwGAMxSVV0Zqaury8qVKzMwMDC9b2pqKgMDA1m9evUpn2dqaioTExPVPDQAMEdVdWUkSXp6erJ+/fp0dHRk1apV6e/vz/j4eLq7u5Mk69aty5IlS9LX15fkJ/d/dHR05JprrsnExES+9rWv5Qtf+EIefPDBs/tMAIBZqeoYWbt2bY4ePZotW7ZkeHg47e3t2bt37/RNrYcPH05NzSsXXMbHx/ORj3wkP/zhDzN//vwsXbo0jzzySNauXXv2ngUAMGtV/TkjJficEQCYfc7J54wAAJxtYgQAKEqMAABFiREAoCgxAgAUJUYAgKLECABQlBgBAIoSIwBAUWIEAChKjAAARYkRAKAoMQIAFCVGAICixAgAUJQYAQCKEiMAQFFiBAAoSowAAEWJEQCgqItKD8Dp2fr0sdIjvMqmFU2lRwBgFnJlBAAoSowAAEWJEQCgKDECABQlRgCAosQIAFCUGAEAihIjAEBRYgQAKEqMAABFiREAoCgxAgAUJUYAgKLECABQlBgBAIoSIwBAUWIEAChKjAAARYkRAKAoMQIAFCVGAICixAgAUJQYAQCKuqj0AMC5s/XpY6VHeJVNK5pKjwC8wbgyAgAUJUYAgKLECABQlBgBAIoSIwBAUWIEAChKjAAARYkRAKAoMQIAFCVGAICixAgAUJTvpgFgVvLdS3OHKyMAQFGnFSM7duxIW1tbGhoa0tnZmX379p107cMPP5x3vetdueyyy3LZZZelq6vrNdcDABeWqmNkz5496enpSW9vbw4cOJDly5dnzZo1OXLkyAnXP/744/nQhz6Uf/7nf87g4GBaW1vz3ve+N88///wZDw8AzH5Vx8i2bduyYcOGdHd3Z9myZdm5c2cWLFiQXbt2nXD9F7/4xXzkIx9Je3t7li5dmj//8z/P1NRUBgYGznh4AGD2q+oG1uPHj2f//v3ZvHnz9L6ampp0dXVlcHDwlM7x8ssv58c//nEuv/zy6iZlTnDDGQD/V1UxcuzYsUxOTqa5uXnG/ubm5nzve987pXP8/u//fq688sp0dXWddM3ExEQmJiamfx4bG6tmTABgFjmv76bZunVrHn300Xz5y19OQ0PDSdf19fWlsbFxemttbT2PUwIA51NVMdLU1JTa2tqMjIzM2D8yMpKWlpbXPPb+++/P1q1b84//+I955zvf+ZprN2/enNHR0eltaGiomjEBgFmkqhipq6vLypUrZ9x8+r83o65evfqkx33qU5/KPffck71796ajo+N1H6e+vj6LFi2asQEAc1PVn8Da09OT9evXp6OjI6tWrUp/f3/Gx8fT3d2dJFm3bl2WLFmSvr6+JMl9992XLVu2ZPfu3Wlra8vw8HCS5JJLLskll1xyFp8KADAbVR0ja9euzdGjR7Nly5YMDw+nvb09e/funb6p9fDhw6mpeeWCy4MPPpjjx4/nV3/1V2ecp7e3N3/0R390ZtMDALPeaX03zcaNG7Nx48YT/tvjjz8+4+fnnnvudB4CALhA+G4aAKAoMQIAFCVGAICixAgAUNRp3cAKFxrfqXN+zdbXe7bODaW5MgIAFCVGAICixAgAUJQYAQCKEiMAQFFiBAAoSowAAEWJEQCgKDECABQlRgCAosQIAFCU76YBuMD5Tp3zy+v9aq6MAABFiREAoCgxAgAUJUYAgKLECABQlBgBAIoSIwBAUWIEAChKjAAARYkRAKAoMQIAFCVGAICixAgAUJQYAQCKEiMAQFFiBAAoSowAAEWJEQCgKDECABQlRgCAosQIAFCUGAEAihIjAEBRYgQAKEqMAABFiREAoCgxAgAUJUYAgKLECABQlBgBAIoSIwBAUWIEAChKjAAARYkRAKAoMQIAFCVGAICixAgAUJQYAQCKEiMAQFFiBAAoSowAAEWJEQCgqNOKkR07dqStrS0NDQ3p7OzMvn37Trr229/+dj7wgQ+kra0t8+bNS39//+nOCgDMQVXHyJ49e9LT05Pe3t4cOHAgy5cvz5o1a3LkyJETrn/55Zdz9dVXZ+vWrWlpaTnjgQGAuaXqGNm2bVs2bNiQ7u7uLFu2LDt37syCBQuya9euE66/8cYb8+lPfzof/OAHU19ff8YDAwBzS1Uxcvz48ezfvz9dXV2vnKCmJl1dXRkcHDxrQ01MTGRsbGzGBgDMTVXFyLFjxzI5OZnm5uYZ+5ubmzM8PHzWhurr60tjY+P01traetbODQC8sbwh302zefPmjI6OTm9DQ0OlRwIAzpGLqlnc1NSU2trajIyMzNg/MjJyVm9Ora+vd38JAFwgqroyUldXl5UrV2ZgYGB639TUVAYGBrJ69eqzPhwAMPdVdWUkSXp6erJ+/fp0dHRk1apV6e/vz/j4eLq7u5Mk69aty5IlS9LX15fkJze9fuc735n+7+effz4HDx7MJZdckmuvvfYsPhUAYDaqOkbWrl2bo0ePZsuWLRkeHk57e3v27t07fVPr4cOHU1PzygWXF154IStWrJj++f7778/999+fW265JY8//viZPwMAYFarOkaSZOPGjdm4ceMJ/+3/BkZbW1sqlcrpPAwAcAF4Q76bBgC4cIgRAKAoMQIAFCVGAICixAgAUJQYAQCKEiMAQFFiBAAoSowAAEWJEQCgKDECABQlRgCAosQIAFCUGAEAihIjAEBRYgQAKEqMAABFiREAoCgxAgAUJUYAgKLECABQlBgBAIoSIwBAUWIEAChKjAAARYkRAKAoMQIAFCVGAICixAgAUJQYAQCKEiMAQFFiBAAoSowAAEWJEQCgKDECABQlRgCAosQIAFCUGAEAihIjAEBRYgQAKEqMAABFiREAoCgxAgAUJUYAgKLECABQlBgBAIoSIwBAUWIEAChKjAAARYkRAKAoMQIAFCVGAICixAgAUJQYAQCKEiMAQFFiBAAoSowAAEWJEQCgKDECABR1WjGyY8eOtLW1paGhIZ2dndm3b99rrv+rv/qrLF26NA0NDbn++uvzta997bSGBQDmnqpjZM+ePenp6Ulvb28OHDiQ5cuXZ82aNTly5MgJ1z/55JP50Ic+lA9/+MN5+umnc9ttt+W2227Ls88+e8bDAwCzX9Uxsm3btmzYsCHd3d1ZtmxZdu7cmQULFmTXrl0nXP+nf/qn+cVf/MXcfffdefvb35577rknN9xwQ7Zv337GwwMAs99F1Sw+fvx49u/fn82bN0/vq6mpSVdXVwYHB094zODgYHp6embsW7NmTb7yla+c9HEmJiYyMTEx/fPo6GiSZGxsrJpxT8n/e+nFs37OMzU2Vve6a8x99pj7/DL3+WXu82suz3165/3J7+1KpfLaCytVeP755ytJKk8++eSM/XfffXdl1apVJzzm4osvruzevXvGvh07dlQWL1580sfp7e2tJLHZbDabzTYHtqGhodfsi6qujJwvmzdvnnE1ZWpqKv/93/+dK664IvPmzSs42cmNjY2ltbU1Q0NDWbRoUelx5jyv9/nl9T6/vN7nl9f73KlUKnnxxRdz5ZVXvua6qmKkqakptbW1GRkZmbF/ZGQkLS0tJzympaWlqvVJUl9fn/r6+hn7Lr300mpGLWbRokX+Zz6PvN7nl9f7/PJ6n19e73OjsbHxdddUdQNrXV1dVq5cmYGBgel9U1NTGRgYyOrVq094zOrVq2esT5LHHnvspOsBgAtL1X+m6enpyfr169PR0ZFVq1alv78/4+Pj6e7uTpKsW7cuS5YsSV9fX5LkzjvvzC233JLPfOYzufXWW/Poo4/mW9/6Vh566KGz+0wAgFmp6hhZu3Ztjh49mi1btmR4eDjt7e3Zu3dvmpubkySHDx9OTc0rF1xuuumm7N69O3/wB3+Qj33sY/npn/7pfOUrX8l111139p7FG0B9fX16e3tf9eclzg2v9/nl9T6/vN7nl9e7vHmVyuu93wYA4Nzx3TQAQFFiBAAoSowAAEWJEQCgKDFyFuzYsSNtbW1paGhIZ2dn9u3bV3qkOamvry833nhjFi5cmMWLF+e2227LoUOHSo91wdi6dWvmzZuXu+66q/Qoc9bzzz+f3/iN38gVV1yR+fPn5/rrr8+3vvWt0mPNSZOTk/nDP/zDvO1tb8v8+fNzzTXX5J577nn971DhnBAjZ2jPnj3p6elJb29vDhw4kOXLl2fNmjU5cuRI6dHmnK9//eu544478s1vfjOPPfZYfvzjH+e9731vxsfHS4825z311FP57Gc/m3e+852lR5mzfvSjH+Xmm2/OxRdfnL//+7/Pd77znXzmM5/JZZddVnq0Oem+++7Lgw8+mO3bt+e73/1u7rvvvnzqU5/KAw88UHq0C5K39p6hzs7O3Hjjjdm+fXuSn3wibWtraz760Y9m06ZNhaeb244ePZrFixfn61//et797neXHmfOeumll3LDDTfkz/7sz/Inf/InaW9vT39/f+mx5pxNmzblX//1X/Mv//IvpUe5IPzSL/1Smpub87nPfW563wc+8IHMnz8/jzzySMHJLkyujJyB48ePZ//+/enq6preV1NTk66urgwODhac7MIwOjqaJLn88ssLTzK33XHHHbn11ltn/H/O2fc3f/M36ejoyK/92q9l8eLFWbFiRR5++OHSY81ZN910UwYGBvL9738/SfJv//ZveeKJJ/K+972v8GQXpjfkt/bOFseOHcvk5OT0p8/+r+bm5nzve98rNNWFYWpqKnfddVduvvnmOfdpvm8kjz76aA4cOJCnnnqq9Chz3n/913/lwQcfTE9PTz72sY/lqaeeyu/8zu+krq4u69evLz3enLNp06aMjY1l6dKlqa2tzeTkZO69997cfvvtpUe7IIkRZqU77rgjzz77bJ544onSo8xZQ0NDufPOO/PYY4+loaGh9Dhz3tTUVDo6OvLJT34ySbJixYo8++yz2blzpxg5B/7yL/8yX/ziF7N79+684x3vyMGDB3PXXXflyiuv9HoXIEbOQFNTU2prazMyMjJj/8jISFpaWgpNNfdt3Lgxf/d3f5dvfOMbectb3lJ6nDlr//79OXLkSG644YbpfZOTk/nGN76R7du3Z2JiIrW1tQUnnFve/OY3Z9myZTP2vf3tb89f//VfF5pobrv77ruzadOmfPCDH0ySXH/99fnBD36Qvr4+MVKAe0bOQF1dXVauXJmBgYHpfVNTUxkYGMjq1asLTjY3VSqVbNy4MV/+8pfzT//0T3nb295WeqQ57ed//ufzzDPP5ODBg9NbR0dHbr/99hw8eFCInGU333zzq96q/v3vfz9vfetbC000t7388sszvtQ1SWprazM1NVVoogubKyNnqKenJ+vXr09HR0dWrVqV/v7+jI+Pp7u7u/Roc84dd9yR3bt356tf/WoWLlyY4eHhJEljY2Pmz59feLq5Z+HCha+6H+dNb3pTrrjiCvfpnAO/+7u/m5tuuimf/OQn8+u//uvZt29fHnrooTz00EOlR5uT3v/+9+fee+/NVVddlXe84x15+umns23btvzWb/1W6dEuTBXO2AMPPFC56qqrKnV1dZVVq1ZVvvnNb5YeaU5KcsLt85//fOnRLhi33HJL5c477yw9xpz1t3/7t5XrrruuUl9fX1m6dGnloYceKj3SnDU2Nla58847K1dddVWloaGhcvXVV1c+/vGPVyYmJkqPdkHyOSMAQFHuGQEAihIjAEBRYgQAKEqMAABFiREAoCgxAgAUJUYAgKLECABQlBgBAIoSIwBAUWIEAChKjAAARf1/wzJWqVqB1xsAAAAASUVORK5CYII=", + "text/plain": [ + "<Figure size 640x480 with 1 Axes>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[0.5042016806722689, 0.2605042016806723, 0.20168067226890757, 0.18487394957983194, 0.226890756302521, 0.18487394957983194, 0.18487394957983194, 0.16806722689075632, 0.21008403361344538, 0.16806722689075632]\n", + "Taux d'erreur : 0.17647058823529413\n" + ] + } + ], + "source": [ + "tab = []\n", + "\n", + "for i in range(1, 100, 10):\n", + " adaboost_clf = RandomForestClassifier(n_estimators=i)\n", + " adaboost_clf.fit(X_train_HOG, Y_train)\n", + " y_HOG = adaboost_clf.predict(X_val_HOG)\n", + " tab.append(np.mean(y_HOG != Y_val))\n", + "\n", + "plt.bar(range(len(tab)), tab, color='skyblue')\n", + "plt.show()\n", + "\n", + "print(tab)\n", + "print(f\"Taux d'erreur : {np.mean(y != Y_val)}\")" + ] } ], "metadata": { diff --git a/machine_learning/classification/SVM.ipynb b/machine_learning/classification/SVM.ipynb index 26ee1cc..5a03c1b 100644 --- a/machine_learning/classification/SVM.ipynb +++ b/machine_learning/classification/SVM.ipynb @@ -272,77 +272,6 @@ "\n", "print(f\"Taux d'erreur : {np.mean(y_HOG != Y_val)}\")" ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 6) Test de la méthode SVM avec application des LPB" - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "c:\\Users\\victo\\AppData\\Local\\Programs\\Python\\Python312\\Lib\\site-packages\\skimage\\feature\\texture.py:360: UserWarning: Applying `local_binary_pattern` to floating-point images may give unexpected results when small numerical differences between adjacent pixels are present. It is recommended to use this function with images of integer dtype.\n", - " warnings.warn(\n" - ] - }, - { - "ename": "ValueError", - "evalue": "setting an array element with a sequence. The requested array has an inhomogeneous shape after 1 dimensions. The detected shape was (1071,) + inhomogeneous part.", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[1;32mIn[34], line 17\u001b[0m\n\u001b[0;32m 13\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m np\u001b[38;5;241m.\u001b[39marray(X)\n\u001b[0;32m 16\u001b[0m \u001b[38;5;66;03m# Update training dataset\u001b[39;00m\n\u001b[1;32m---> 17\u001b[0m X_train_LBP \u001b[38;5;241m=\u001b[39m \u001b[43mextract_LBP\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdatas\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mdatas_train\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 19\u001b[0m \u001b[38;5;66;03m# Update validation dataset\u001b[39;00m\n\u001b[0;32m 20\u001b[0m X_val_LBP \u001b[38;5;241m=\u001b[39m extract_LBP(datas\u001b[38;5;241m=\u001b[39mdatas_val)\n", - "Cell \u001b[1;32mIn[34], line 13\u001b[0m, in \u001b[0;36mextract_LBP\u001b[1;34m(datas)\u001b[0m\n\u001b[0;32m 10\u001b[0m image_as_array \u001b[38;5;241m=\u001b[39m np\u001b[38;5;241m.\u001b[39marray(hog(local_binary_pattern(rgb2gray(data[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mimg\u001b[39m\u001b[38;5;124m\"\u001b[39m]), P \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m8\u001b[39m, R \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m1\u001b[39m)))\u001b[38;5;241m.\u001b[39mflatten()\n\u001b[0;32m 11\u001b[0m X\u001b[38;5;241m.\u001b[39mappend(image_as_array)\n\u001b[1;32m---> 13\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mnp\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43marray\u001b[49m\u001b[43m(\u001b[49m\u001b[43mX\u001b[49m\u001b[43m)\u001b[49m\n", - "\u001b[1;31mValueError\u001b[0m: setting an array element with a sequence. The requested array has an inhomogeneous shape after 1 dimensions. The detected shape was (1071,) + inhomogeneous part." - ] - } - ], - "source": [ - "import cv2\n", - "\n", - "def extract_SIFT(datas):\n", - " # Creating X array with all HOG information of images\n", - " X = []\n", - " sift = cv2.SIFT_create()\n", - "\n", - " for name, data in datas.items():\n", - " for row in data[\"labels\"].values():\n", - " gray_image = cv2.cvtColor(data[\"img\"], cv2.COLOR_RGB2GRAY)\n", - " keypoints, descriptors = sift.detectAndCompute(gray_image, None)\n", - " if descriptors is not None:\n", - " X.append(descriptors.flatten())\n", - "\n", - " return np.array(X)\n", - "\n", - "\n", - "# Update training dataset\n", - "X_train_LBP = extract_SIFT(datas=datas_train)\n", - "\n", - "# Update validation dataset\n", - "X_val_LBP = extract_SIFT(datas=datas_val)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "svm_model = svm.SVC(kernel='linear') \n", - "svm_model.fit(X_train_LBP, Y_train)\n", - "y_LBP = svm_model.predict(X_val_LBP)\n", - "\n", - "print(f\"Taux d'erreur : {np.mean(y_LBP != Y_val)}\")" - ] } ], "metadata": { -- GitLab