Ran final model

This commit is contained in:
Petrus committed 2025-10-27 09:30:00 +01:00
1 parent 74da12da7b
commit 3b772b2cfb
1 file changed
+82 -79
+82 -79
View File
@@ -11,7 +11,7 @@
},
{
"cell_type": "code",
"execution_count": 1,
"execution_count": 2,
"id": "0952f099",
"metadata": {},
"outputs": [
@@ -205,7 +205,7 @@
},
{
"cell_type": "code",
"execution_count": 11,
"execution_count": 3,
"id": "e68b1ea9",
"metadata": {},
"outputs": [],
@@ -401,62 +401,10 @@
},
{
"cell_type": "code",
"execution_count": 9,
"execution_count": 5,
"id": "4185a428",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Tuning Decision Tree ...\n",
"Tuning Random Forest ...\n",
"Tuning XGBoost ...\n",
"\n",
"------ Results Sorted by Accuracy ------\n",
" Model Accuracy Precision Recall F1 Score Best Params Training Time (s) Prediction Time (s) Total Time (s)\n",
" XGBoost 0.867064 0.862867 0.867064 0.863685 {'learning_rate': 0.25, 'max_depth': 6, 'n_estimators': 75} 26.702878 0.014437 26.717316\n",
"Random Forest 0.858942 0.853479 0.858942 0.853443 {'max_depth': 20, 'min_samples_split': 10, 'n_estimators': 100} 158.303091 0.076534 158.379625\n",
"Decision Tree 0.844356 0.838363 0.844356 0.839763 {'max_depth': 12, 'min_samples_split': 6} 2.376242 0.002706 2.378948\n",
"\n",
"------ Results Sorted by Total Time ------\n",
" Model Accuracy Precision Recall F1 Score Best Params Training Time (s) Prediction Time (s) Total Time (s)\n",
"Decision Tree 0.844356 0.838363 0.844356 0.839763 {'max_depth': 12, 'min_samples_split': 6} 2.376242 0.002706 2.378948\n",
" XGBoost 0.867064 0.862867 0.867064 0.863685 {'learning_rate': 0.25, 'max_depth': 6, 'n_estimators': 75} 26.702878 0.014437 26.717316\n",
"Random Forest 0.858942 0.853479 0.858942 0.853443 {'max_depth': 20, 'min_samples_split': 10, 'n_estimators': 100} 158.303091 0.076534 158.379625\n"
]
},
{
"data": {
"image/png": "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 truncated
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAkgAAAIhCAYAAAC15UU9AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAPYQAAD2EBqD+naQAA8M5JREFUeJzsnXlclNX+xz/PMwiIgAoKKKIsGiqSGi5ZmpmWW5lLmlbX5ZreFjOlW1ezXNq0zbylZZvtpjczWyxupqmV5u5PAuUqiKAIqKAgCMg8398f0zwwG8zBGeZI3/frxas8c+aZ9/ecM8985zznPKMQEYFhGIZhGIbRUT0twDAMwzAMIxucIDEMwzAMw1jBCRLDMAzDMIwVnCAxDMMwDMNYwQkSwzAMwzCMFZwgMQzDMAzDWMEJEsMwDMMwjBWcIDEMwzAMw1jBCRLDMAzDMIwVnCAxzFXChx9+CEVRkJmZ6WkV5k+OHj2K2267DU2bNoWiKNiwYYOnleodHpdMQ4UTJEZazCdee39z5sxxy2vu2LEDCxcuxPnz591y/L8ypaWlWLhwIbZu3eppFZcxadIkJCcn4/nnn8cnn3yCHj16uO21MjMzLd4DqqoiKCgIQ4cOxc6dO932ulcb1u1U/e/666/3tJ5dVq9ejWXLlnlag7HCy9MCDFMbzzzzDKKioizKunTp4pbX2rFjBxYtWoTJkyejWbNmbnmNuvK3v/0N48ePh4+Pj6dV6kRpaSkWLVoEALj55ps9K+MCLl26hJ07d2LevHmYMWNGvb3uhAkTMGzYMBiNRvzvf//Dm2++iQEDBmDPnj2Ij4+vNw/ZMbdTdVq2bOkhm5pZvXo1/vjjD8yaNcvTKkw1OEFipGfo0KFu/WZeH5SUlKBJkyZXdAyDwQCDweAio/pD0zRUVFR4WsPlnDlzBgBcmkg7M06uu+463Hffffq/+/Xrh6FDh+Ktt97Cm2++6TKXqx3rdnIVZWVl8Pb2hqryBZiGDvcwc9Xzww8/oF+/fmjSpAkCAgIwfPhwpKSkWNQ5dOgQJk+ejOjoaPj6+iIsLAx///vfce7cOb3OwoUL8fjjjwMAoqKi9Gn5zMxMfdr+ww8/tHl9RVGwcOFCi+MoioLU1FTcc889aN68Ofr27as//umnnyIhIQGNGzdGUFAQxo8fj+zs7FrjtLfWIzIyErfffju2bt2KHj16oHHjxoiPj9cvY61fvx7x8fHw9fVFQkICDhw4YHHMyZMnw9/fHxkZGRg8eDCaNGmC1q1b45lnngERWdQtKSnBY489hoiICPj4+CA2NhavvPKKTT1FUTBjxgx89tlniIuLg4+PD1auXKl/e1+0aJHetuZ2c6Z/qrftsWPH9Fm+pk2bYsqUKSgtLbVps08//RS9evWCn58fmjdvjptuugk//vijRR1nxo81CxcuRLt27QAAjz/+OBRFQWRkpP74gQMHMHToUAQGBsLf3x8DBw7E77//bnEMc39u27YNDz30EEJCQtCmTZsaX9ce/fr1AwCkp6dblH/wwQe45ZZbEBISAh8fH3Tu3BlvvfWWzfPNY+jXX39Fr1694Ovri+joaHz88cc2dVNSUnDLLbegcePGaNOmDZ577jlommbX680339T7v3Xr1nj44YdtLl3ffPPN6NKlCw4dOoT+/fvDz88P7du3x7p16wAA27ZtQ+/evdG4cWPExsbip59+Em4fR2RkZGDs2LEICgqCn58frr/+emzcuNGiztatW6EoCtasWYOnnnoK4eHh8PPzQ1FREQBg165dGDJkCJo2bQo/Pz/0798fv/32m8UxiouLMWvWLERGRsLHxwchISG49dZbsX//fr0NNm7ciBMnTujvi+pjifEcPIPESM+FCxdw9uxZi7IWLVoAAD755BNMmjQJgwcPxosvvojS0lK89dZb6Nu3Lw4cOKCfaDZt2oSMjAxMmTIFYWFhSElJwTvvvIOUlBT8/vvvUBQFo0ePxv/+9z98/vnneO211/TXaNmypT5bIMLYsWPRoUMHvPDCC3oS8fzzz+Ppp5/GuHHjcP/99+PMmTN44403cNNNN+HAgQN1mo04duwY7rnnHvzjH//Afffdh1deeQV33HEHVq5ciSeffBIPPfQQAGDx4sUYN24c0tLSLL79Go1GDBkyBNdffz1eeuklJCUlYcGCBaisrMQzzzwDACAijBgxAj///DOmTp2Kbt264b///S8ef/xxnDp1Cq+99pqF05YtW/Cf//wHM2bMQIsWLdC1a1e89dZbePDBBzFq1CiMHj0aAHDttdcCcK5/qjNu3DhERUVh8eLF2L9/P9577z2EhITgxRdf1OssWrQICxcuxA033IBnnnkG3t7e2LVrF7Zs2YLbbrsNgPPjx5rRo0ejWbNmmD17tn4p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 truncated
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAkAAAAIhCAYAAACmMgXJAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAPYQAAD2EBqD+naQAA4e9JREFUeJzsnXlcVFX/xz93BllUQEAFRGTTQBHFPfdcci3X3KrH5Snt0dSUyl9quaRFWZaVlpUtZk/lk5ktGlmWWmKulQjKgyCCIriAsinI3O/vD565MjDIHJxhDvJ9v168lO+cufd97jnc+c6559yrEBGBYRiGYRimDqGztwDDMAzDMExNwwkQwzAMwzB1Dk6AGIZhGIapc3ACxDAMwzBMnYMTIIZhGIZh6hycADEMwzAMU+fgBIhhGIZhmDoHJ0AMwzAMw9Q5OAFiGIZhGKbOwQkQw9QxPv74YyiKgtTUVHurMP8jKSkJgwYNgru7OxRFwbZt2+ytxDB3PJwAMXc8xg98cz/PPPOMTfYZGxuLZcuW4cqVKzbZfl2msLAQy5Ytw+7du+2tYjWmTJmCuLg4vPDCC9i0aRM6d+5ss31t2LABiqJg48aNFV7bv38/dDodnnrqqQqvfffdd7j//vvh7e0NR0dHeHp6ok+fPli9ejVyc3NNygYGBpr8nTk7O6NVq1Z4+umnkZ2dbbO6WcqOHTuwbNkye2swdkbhZ4Exdzoff/wxpk2bhueffx5BQUEmr7Vt2xaRkZFW3+err76Kp59+GqdPn0ZgYKDVt387GAwG3LhxA05OTlAUxd46wly6dAlNmjTB0qVL74gPsWvXrqF+/fpYvHgxVq5cafP9ERH69OmDkydP4uTJk/Dy8gIA3LhxAx07dkRubi4SEhLQoEEDAICqqnjkkUfw8ccfIyIiAmPHjoW/vz/y8vKwf/9+fPPNN+jRowd27dql7SMwMBAeHh548sknAQDXr1/HkSNHsGHDBnTo0AEHDx60eT1vxezZs7Fu3Trwx1/dxsHeAgxTUwwdOtSm36xrgoKCAu2Dqbro9Xro9XorGdUcqqqiuLjY3hpW5+LFiwCARo0aWW2bt+oniqLg3XffRWRkJJ566il89NFHAIDVq1fj+PHj+Pbbb03eu2rVKnz88ceYP38+Vq9ebZI0P/HEEzh//jw++eSTCvvx8/PDww8/rP3+6KOPomHDhnj11VeRlJSEVq1aWau6DFM9iGHucD766CMCQIcOHbpluR07dlCvXr2ofv361LBhQxo2bBgdP37cpMzff/9NU6ZMoaCgIHJyciJvb2+aNm0aXbp0SSuzdOlSAlDh5/Tp03T69GkCQB999FGF/QOgpUuXVthOfHw8TZo0iRo1akSRkZHa65s2baKOHTuSs7MzeXh40IQJEygtLc3i43H69GktFhAQQMOHD6dff/2VOnXqRM7OztS2bVv69ddfiYjoq6++orZt25KTkxN17NiRjh49arLNKVOmUIMGDSg5OZkGDRpE9evXJ19fX1q+fDmpqmpSNj8/n6Kioqh58+bk6OhId911F73yyisVygGgxx9/nD799FNq06YNOTg40Ouvv2722BqPmyXtU/bYJiUl0ZQpU8jd3Z3c3Nxo6tSpVFBQUOGYbdq0ibp06UIuLi7UqFEj6t27N/34448mZSzpP+Ux11cCAgK0148ePUpDhgwhV1dXatCgAfXv35/2799vsg1je+7evZtmzpxJTZo0oUaNGt1yv0REixYt0t6XkpJCLi4uNGbMGJMyBQUF1KhRIwoPD6eSkpIqt2nE2J/K8+qrrxIASklJMYnv2rVLO3bu7u40YsQISkhIqPB+S45HcXExLVu2jFq2bElOTk7k6elJPXv2pJ07dxJRaV8114eYugePADF1hqtXr+LSpUsmscaNGwMANm3ahClTpmDw4MF4+eWXUVhYiHfeeQe9evXCn3/+qV3G+umnn5CSkoJp06bBx8cH8fHxeO+99xAfH48//vgDiqJgzJgx+O9//4vPP/8cr7/+uraPJk2aaN/2RRg3bhxatWqFF198URuyf+GFF/Dcc89h/PjxePTRR3Hx4kW89dZb6NOnD/78889qjSacOnUKDz74IB577DE8/PDDePXVV3H//fdj/fr1WLRoEWbNmgUAiI6Oxvjx45GYmAid7uY0QoPBgCFDhuDuu+/GqlWrEBMTg6VLl6KkpATPP/88gNLLLyNGjMCvv/6KRx55BJGRkfjxxx/x9NNP49y5c3j99ddNnH755Rf85z//wezZs9G4cWO0b98e77zzDmbOnInRo0djzJgxAIB27doBsKx9yjJ+/HgEBQUhOjoaR48exYYNG9C0aVO8/PLLWpnly5dj2bJl6NGjB55//nk4OjriwIED+OWXXzBo0CAAlvef8owZMwaNGjXC/PnzMWnSJAwbNgwNGzYEAMTHx6N3795wc3PDggULUK9ePbz77ru45557sGfPHnTr1s1kW7NmzUKTJk2wZMkSFBQUVNnezz77LL744gs89thjCAgIgIODA958802TMr///juuXLmCp556SnjU8MaNG9rf2/Xr1/Hnn3/itddeQ58+fUwuRf/8888YOnQogoODsWzZMly7dg1vvfUWevbsiaNHj2rHztLjsWzZMkRHR+PRRx9F165dkZubi8OHD+Po0aO499578dhjjyEjIwM//fQTNm3aJFQn5g7D3hkYw9ga4zdkcz9ERHl5edSoUSOaPn26yfsyMzPJ3d3dJF5YWFhh+59//jkBoL1792qxV155pcIoCxFVawRo0qRJJuVSU1NJr9fTCy+8YBKPi4sjBweHCvHKjkf5ESAAFBsbq8V+/PFHAkAuLi505swZLf7uu+8SAG10iOjmt+o5c+ZoMVVVafjw4eTo6EgXL14kIqJt27YRAFq5cqWJ0wMPPECKotCpU6dMjodOp6P4+HiTshcvXqxwrIxY2j7GY/vPf/7TpOzo0aPJy8tL+z0pKYl0Oh2NHj2aDAaDSVnjiJVI/zGHsU+88sorJvFRo0aRo6MjJScna7GMjAxydXWlPn36aDFje/bq1UtolIboZhsDoDVr1lR4/Y033iAAtG3bNpN4SUkJXbx40eSn7AiesT+V/+nZs2eF0bjIyEhq2rQpXb58WYv9/fffpNPpaPLkycLHo3379mZHn8ry+OOP86gPQ7wKjKkzrFu3Dj/99JPJD1A6anDlyhVMmjQJly5d0n70ej26deuGX3/9VduGi4uL9v/r16/j0qVLuPvuuwEAR48etYn3v/71L5Pft27dClVVMX78eBNfHx8ftGrVysRXhDZt2qB79+7a78Zv1P3790eLFi0qxFNSUipsY/bs2dr/FUXB7NmzUVxcjJ9//hlA6eobvV6PuXPnmrzvySefBBHhhx9+MIn37dsXbdq0sbgOou1T/tj27t0bly9f1lY1bdu2DaqqYsmSJSajXcb6AWL9x1IMBgN27tyJUaNGITg4WIv7+vriwQcfxO+//15h5dX06dOFR2k8PT21ehlHs8pi3IdxVMpIXFwcmjRpYvJz+fJlkzLdunXT/s6+//57vPDCC4iPj8eIESNw7do1AMD58+fx119/YerUqfD09NTe265dO9x7773YsWOH8PFo1KgR4uPjkZSUJHQsmLoHXwJj6gxdu3Y1OwnaeKLs37+/2fe5ublp/8/Ozsby5cvxxRdf4MKFCyblrl69akXbm5RfuZaUlAQiqnQSab169aq1n7JJDgC4u7sDAPz9/c3Gc3JyTOI6nc7kwwkA7rrrLgDQ7jl05swZNGvWDK6uriblWrdurb1elvJ1rwrR9ilfZw8PDwCldXNzc0NycjJ0Ot0tkzCR/mMpFy9eRGFhIUJDQyu81rp1a6iqivT0dISHh2tx0WNlMBgwY8YMNGvWDPn5+Zg7d672pcCIsZ3y8/NN4i1bttTKfvLJJ2YvJTVu3BgDBw7Ufh8+fDhCQ0PxwAMPYMOGDZgzZ47W3pXV88cff0RBQQHy8vIsPh7PP/88Ro4cibvuugtt27bFkCFD8I9//EO7TMowRjgBYuo8qqoCKJ3H4ePjU+F1B4ebfybjx49HbGwsnn76aURGRqJhw4ZQVRVDhgzRtnMrKlt2bjAYKn1P2VENo6+iKPjhhx/MfuMv/23dUiobPagsTjWwhLh83atCtH2sUTeR/mNLRI/VG2+8gT///BPbtm3DuXPn8Pjjj+Ozzz7Dgw8+qJUJCwsDABw/fhwjR47U4g0bNtSSm99//93ifQ4YMAAAsHfvXsyZM0fI11L69OmD5ORkfPPNN9i5cyc2bNiA119/HevXr8ejjz5qk30ytRNOgJg6T0hICACgadOmJt9Yy5OTk4Ndu3Zh+fLlWLJkiRY3N9ReWaJjHGEof4PE8iMfVfkSEYKCgrQRFhlQVRUpKSkmTv/9738BQJvIGhAQgJ9//hl5eXkmo0AnT57UXq+Kyo6tSPtYSkhICFRVRUJCQqX3i7K0/4jQpEkT1K9fH4mJiRVeO3nyJHQ6XYWRORHS09OxdOlSjBw5EiNHjoSqqti4cSOioqIwfPhwbZSvd+/ecHd3xxdffIGFCxdWuAwoSklJCYCbI0rG9q6sno0bN0aDBg3g7OwsdDw8PT0xbdo0TJs2Dfn5+ejTpw+WLVumJUC18f5XjPXhOUBMnWfw4MFwc3PDiy++iBs3blR43bhyyzhaUH50YM2aNRXeY7yPSvlEx83NDY0bN8bevXtN4m+//bbFvmPGjIFer8fy5csruBBRhbkYNcnatWtNXNauXYt69epp3/yHDRsGg8FgUg4AXn/9dSiKgqFDh1a5j/r16wOoeGxF2sdSRo0aBZ1Oh+eff77CCJJxP5b2HxH0ej0GDRqEb775xuSRJVlZWfjss8/Qq1eval1aMzJnzhwQEd566y0ApZcv169fj0uXLmHRokVaufr162PBggU4fvw4nnnmGbMjYyKjZd999x0AoH379gBLine truncated
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"outputs": [],
"source": [
"# Define the classifiers and their hyperparameters in a finer grid\n",
"def get_fine_grids(use_bootstrap=True):\n",
@@ -478,13 +426,13 @@
" }\n",
"\n",
"# optimized classifiers and find their hyperparameters\n",
"clf_opt = ClassifierComparisonOpt(X_train_val, y_train_val)\n",
"#clf_opt = ClassifierComparisonOpt(X_train_val, y_train_val)\n",
"fine_grid = get_fine_grids()\n",
"clf_opt.fit_models(fine_grid)\n",
"clf_opt.print_summary()\n",
"#clf_opt.fit_models(fine_grid)\n",
"#clf_opt.print_summary()\n",
"\n",
"# Show feature importance for each model\n",
"clf_opt.show_feature_importance()"
"#clf_opt.show_feature_importance()"
]
},
{
@@ -498,23 +446,19 @@
},
{
"cell_type": "code",
"execution_count": 10,
"execution_count": 4,
"id": "776cdb17",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Tuning Decision Tree ...\n",
"Tuning XGBoost ...\n",
"Tuning Random Forest ...\n",
"\n",
"------ Results Sorted by Accuracy ------\n",
" Model Accuracy Precision Recall F1 Score Best Params Training Time (s) Prediction Time (s) Total Time (s)\n",
" XGBoost 0.866899 0.862456 0.866899 0.863047 {'learning_rate': 0.2, 'max_depth': 6, 'n_estimators': 75} 25.690541 0.011451 25.701992\n",
"Random Forest 0.858942 0.853479 0.858942 0.853443 {'max_depth': 20, 'min_samples_split': 10, 'n_estimators': 100} 140.522713 0.048441 140.571154\n",
"Decision Tree 0.847008 0.840347 0.847008 0.840760 {'max_depth': 10, 'min_samples_split': 4} 11.239021 0.005791 11.244812\n"
"ename": "NameError",
"evalue": "name 'fine_grid' is not defined",
"output_type": "error",
"traceback": [
"\u001b[31m---------------------------------------------------------------------------\u001b[39m",
"\u001b[31mNameError\u001b[39m Traceback (most recent call last)",
"\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[4]\u001b[39m\u001b[32m, line 10\u001b[39m\n\u001b[32m 8\u001b[39m \u001b[38;5;66;03m# Train decision tree without redundant features\u001b[39;00m\n\u001b[32m 9\u001b[39m cmp_dt = ClassifierComparisonOpt(X_dt, y_train_val)\n\u001b[32m---> \u001b[39m\u001b[32m10\u001b[39m cmp_dt.fit_models({\u001b[33m'\u001b[39m\u001b[33mDecision Tree\u001b[39m\u001b[33m'\u001b[39m: \u001b[43mfine_grid\u001b[49m[\u001b[33m'\u001b[39m\u001b[33mDecision Tree\u001b[39m\u001b[33m'\u001b[39m]})\n\u001b[32m 12\u001b[39m \u001b[38;5;66;03m# Train XGBoost without redundant features\u001b[39;00m\n\u001b[32m 13\u001b[39m cmp_xgb = ClassifierComparisonOpt(X_xgb, y_train_val)\n",
"\u001b[31mNameError\u001b[39m: name 'fine_grid' is not defined"
]
}
],
@@ -556,10 +500,63 @@
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 8,
"id": "a470fd20",
"metadata": {},
"outputs": [],
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Classification Report:\n",
" precision recall f1-score support\n",
"\n",
" Poor 0.87 0.95 0.90 4533\n",
" Rich 0.77 0.56 0.65 1500\n",
"\n",
" accuracy 0.85 6033\n",
" macro avg 0.82 0.75 0.78 6033\n",
"weighted avg 0.84 0.85 0.84 6033\n",
"\n"
]
},
{
"data": {
"image/png": "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 truncated
"text/plain": [
"<Figure size 640x480 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Classification Report:\n",
" precision recall f1-score support\n",
"\n",
" Poor 0.89 0.94 0.91 4533\n",
" Rich 0.77 0.63 0.70 1500\n",
"\n",
" accuracy 0.86 6033\n",
" macro avg 0.83 0.79 0.80 6033\n",
"weighted avg 0.86 0.86 0.86 6033\n",
"\n",
"Classification Report:\n",
" precision recall f1-score support\n",
"\n",
" Poor 0.89 0.94 0.91 4533\n",
" Rich 0.77 0.66 0.71 1500\n",
"\n",
" accuracy 0.87 6033\n",
" macro avg 0.83 0.80 0.81 6033\n",
"weighted avg 0.86 0.87 0.86 6033\n",
"\n"
]
}
],
"source": [
"# ---------------------------- Decision Tree ----------------------------\n",
"dt = Pipeline([\n",
@@ -574,6 +571,12 @@
"print(\"Classification Report:\")\n",
"print(classification_report(y_test, y_pred_dt, target_names=[\"Poor\", \"Rich\"]))\n",
"\n",
"CM = confusion_matrix(y_test, y_pred_dt)\n",
"disp = ConfusionMatrixDisplay(confusion_matrix=CM, display_labels=[\"Poor\", \"Rich\"])\n",
"disp.plot(cmap=\"Blues\")\n",
"plt.title(\"Test Confusion Matrix (dt)\")\n",
"plt.show() \n",
"\n",
"\n",
"# ---------------------------- Random Forest ----------------------------\n",
"rf = Pipeline([\n",
@@ -582,11 +585,11 @@
"\n",
"# Train the model\n",
"rf.fit(X_train_val, y_train_val)\n",
"y_pred = rf.predict(X_test)\n",
"y_pred_rf = rf.predict(X_test)\n",
"\n",
"# Classification Report\n",
"print(\"Classification Report:\")\n",
"print(classification_report(y_test, y_pred_dt, target_names=[\"Poor\", \"Rich\"]))\n",
"print(classification_report(y_test, y_pred_rf, target_names=[\"Poor\", \"Rich\"]))\n",
"\n",
"\n",
"# ---------------------------- XGBoost ----------------------------\n",
@@ -596,11 +599,11 @@
"\n",
"# Train the model\n",
"xgb.fit(X_train_val, y_train_val)\n",
"y_pred = xgb.predict(X_test)\n",
"y_pred_xgb = xgb.predict(X_test)\n",
"\n",
"# Classification Report\n",
"print(\"Classification Report:\")\n",
"print(classification_report(y_test, y_pred_dt, target_names=[\"Poor\", \"Rich\"]))"
"print(classification_report(y_test, y_pred_xgb, target_names=[\"Poor\", \"Rich\"]))"
]
}
],