Added optional removal of redundant features and a draft of the final models
This commit is contained in:
1 parent
d17bee7ab3
commit
8125283c7b
2 files changed
+144
-182
No files matched your search
+3
-3
@@ -11,7 +11,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 6,
|
"execution_count": null,
|
||||||
"id": "557ed2b5",
|
"id": "557ed2b5",
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [
|
"outputs": [
|
||||||
@@ -89,8 +89,8 @@
|
|||||||
"plt.show()\n",
|
"plt.show()\n",
|
||||||
"\n",
|
"\n",
|
||||||
"#df_encoded.head(10)\n",
|
"#df_encoded.head(10)\n",
|
||||||
"df_encoded.info()\n",
|
"#df_encoded.info()\n",
|
||||||
"#df.head(20)\n"
|
"df.head(20)\n"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
+141
-179
@@ -5,7 +5,8 @@
|
|||||||
"id": "946e852d",
|
"id": "946e852d",
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"source": [
|
"source": [
|
||||||
"### Toymodel as an initial test"
|
"### Toymodel as an initial test\n",
|
||||||
|
"This is only a quick test to see if the model is applicable"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -15,43 +16,17 @@
|
|||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [
|
"outputs": [
|
||||||
{
|
{
|
||||||
"data": {
|
"ename": "TypeError",
|
||||||
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA7sAAAOwCAYAAAD/XWM1AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAPYQAAD2EBqD+naQABAABJREFUeJzs3XmcjfX/xvHXmX03ZsXYxr7vRGQnKSmFJEUkWSOUJKENRcoWSZGdRGRnxr7v+76MbWYYZl/O8vtDpq9fKsvM3LNcz8ejx5cz97nPdeZr5pzr3PfnfZtsNpsNERERERERkWzEzugAIiIiIiIiImlNZVdERERERESyHZVdERERERERyXZUdkVERERERCTbUdkVERERERGRbEdlV0RERERERLIdlV0RERERERHJdlR2RUREREREJNtR2RUREREREZFsR2VXREREREREsh2VXREREREREcl2VHZFREREREQk21HZFRERERERkWxHZVdERERERESyHZVdERERERERyXZUdkVERERERCTbUdkVERERERGRbEdlV0RERERERLIdlV0RERERERHJdlR2RUREREREJNtR2RUREREREZFsR2VXREREREREsh2VXREREREREcl2VHZFREREREQk21HZFRERERERkWxHZVdERERERESyHZVdERERERERyXZUdkVERERERCTbUdkVERERERGRbEdlV0RERERERLIdlV0RERERERHJdlR2RUREREREJNtR2RUREREREZFsR2VXREREREREsh2VXREREREREcl2VHZFREREREQk21HZFRERERERkWxHZVdERERERESyHZVdERERERERyXZUdkVERERERCTbUdkVERERERGRbEdlV0RERERERLIdlV0RERERERHJdlR2RUREREREJNtR2RUREREREZFsR2VXREREREREsh2VXREREREREcl2VHZFREREREQk21HZFRERERERkWxHZVdERERERESyHZVdERERERERyXZUdkVERERERCTbUdkVERERERGRbEdlV0RERERERLIdlV0RERERERHJdlR2RUREREREJNtR2RUREREREZFsR2VXREREREREsh2VXREREREREcl2VHZFREREREQk21HZFRERERERkWzHwegAIiIiknESExO5fPkyVqvV6CgPzWQykS9fPtzc3IyOIiIiWYDK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 truncated
|
"evalue": "cannot unpack non-iterable DecisionTreeClassifier object",
|
||||||
"text/plain": [
|
"output_type": "error",
|
||||||
"<Figure size 1200x1200 with 1 Axes>"
|
"traceback": [
|
||||||
]
|
"\u001b[31m---------------------------------------------------------------------------\u001b[39m",
|
||||||
},
|
"\u001b[31mTypeError\u001b[39m Traceback (most recent call last)",
|
||||||
"metadata": {},
|
"\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[18]\u001b[39m\u001b[32m, line 46\u001b[39m\n\u001b[32m 41\u001b[39m model = Pipeline([\n\u001b[32m 42\u001b[39m (DecisionTreeClassifier(random_state=\u001b[32m42\u001b[39m)) \u001b[38;5;66;03m# Train Decision Tree Regressor\u001b[39;00m\n\u001b[32m 43\u001b[39m ])\n\u001b[32m 45\u001b[39m \u001b[38;5;66;03m# Train the model\u001b[39;00m\n\u001b[32m---> \u001b[39m\u001b[32m46\u001b[39m \u001b[43mmodel\u001b[49m\u001b[43m.\u001b[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[32m 47\u001b[39m y_pred = model.predict(X_val)\n\u001b[32m 49\u001b[39m \u001b[38;5;66;03m# Visualize the decision tree\u001b[39;00m\n",
|
||||||
"output_type": "display_data"
|
"\u001b[36mFile \u001b[39m\u001b[32m~/Documents/MLP/Projects/MLPproject/.venv/lib/python3.12/site-packages/sklearn/base.py:1365\u001b[39m, in \u001b[36m_fit_context.<locals>.decorator.<locals>.wrapper\u001b[39m\u001b[34m(estimator, *args, **kwargs)\u001b[39m\n\u001b[32m 1358\u001b[39m estimator._validate_params()\n\u001b[32m 1360\u001b[39m \u001b[38;5;28;01mwith\u001b[39;00m config_context(\n\u001b[32m 1361\u001b[39m skip_parameter_validation=(\n\u001b[32m 1362\u001b[39m prefer_skip_nested_validation \u001b[38;5;129;01mor\u001b[39;00m global_skip_validation\n\u001b[32m 1363\u001b[39m )\n\u001b[32m 1364\u001b[39m ):\n\u001b[32m-> \u001b[39m\u001b[32m1365\u001b[39m \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[43m*\u001b[49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m*\u001b[49m\u001b[43m*\u001b[49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n",
|
||||||
},
|
"\u001b[36mFile \u001b[39m\u001b[32m~/Documents/MLP/Projects/MLPproject/.venv/lib/python3.12/site-packages/sklearn/pipeline.py:654\u001b[39m, in \u001b[36mPipeline.fit\u001b[39m\u001b[34m(self, X, y, **params)\u001b[39m\n\u001b[32m 647\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m _routing_enabled() \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;28mself\u001b[39m.transform_input \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[32m 648\u001b[39m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\n\u001b[32m 649\u001b[39m \u001b[33m\"\u001b[39m\u001b[33mThe `transform_input` parameter can only be set if metadata \u001b[39m\u001b[33m\"\u001b[39m\n\u001b[32m 650\u001b[39m \u001b[33m\"\u001b[39m\u001b[33mrouting is enabled. You can enable metadata routing using \u001b[39m\u001b[33m\"\u001b[39m\n\u001b[32m 651\u001b[39m \u001b[33m\"\u001b[39m\u001b[33m`sklearn.set_config(enable_metadata_routing=True)`.\u001b[39m\u001b[33m\"\u001b[39m\n\u001b[32m 652\u001b[39m )\n\u001b[32m--> \u001b[39m\u001b[32m654\u001b[39m routed_params = \u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43m_check_method_params\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmethod\u001b[49m\u001b[43m=\u001b[49m\u001b[33;43m\"\u001b[39;49m\u001b[33;43mfit\u001b[39;49m\u001b[33;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mprops\u001b[49m\u001b[43m=\u001b[49m\u001b[43mparams\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 655\u001b[39m Xt = \u001b[38;5;28mself\u001b[39m._fit(X, y, routed_params, raw_params=params)\n\u001b[32m 656\u001b[39m \u001b[38;5;28;01mwith\u001b[39;00m _print_elapsed_time(\u001b[33m\"\u001b[39m\u001b[33mPipeline\u001b[39m\u001b[33m\"\u001b[39m, \u001b[38;5;28mself\u001b[39m._log_message(\u001b[38;5;28mlen\u001b[39m(\u001b[38;5;28mself\u001b[39m.steps) - \u001b[32m1\u001b[39m)):\n",
|
||||||
{
|
"\u001b[36mFile \u001b[39m\u001b[32m~/Documents/MLP/Projects/MLPproject/.venv/lib/python3.12/site-packages/sklearn/pipeline.py:454\u001b[39m, in \u001b[36mPipeline._check_method_params\u001b[39m\u001b[34m(self, method, props, **kwargs)\u001b[39m\n\u001b[32m 449\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m routed_params\n\u001b[32m 450\u001b[39m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[32m 451\u001b[39m fit_params_steps = Bunch(\n\u001b[32m 452\u001b[39m **{\n\u001b[32m 453\u001b[39m name: Bunch(**{method: {} \u001b[38;5;28;01mfor\u001b[39;00m method \u001b[38;5;129;01min\u001b[39;00m METHODS})\n\u001b[32m--> \u001b[39m\u001b[32m454\u001b[39m \u001b[38;5;28;01mfor\u001b[39;00m name, step \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m.steps\n\u001b[32m 455\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m step \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[32m 456\u001b[39m }\n\u001b[32m 457\u001b[39m )\n\u001b[32m 458\u001b[39m \u001b[38;5;28;01mfor\u001b[39;00m pname, pval \u001b[38;5;129;01min\u001b[39;00m props.items():\n\u001b[32m 459\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[33m\"\u001b[39m\u001b[33m__\u001b[39m\u001b[33m\"\u001b[39m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;129;01min\u001b[39;00m pname:\n",
|
||||||
"data": {
|
"\u001b[31mTypeError\u001b[39m: cannot unpack non-iterable DecisionTreeClassifier object"
|
||||||
"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.87 0.87 0.87 4524\n",
|
|
||||||
" Rich 0.62 0.62 0.62 1509\n",
|
|
||||||
"\n",
|
|
||||||
" accuracy 0.81 6033\n",
|
|
||||||
" macro avg 0.74 0.75 0.74 6033\n",
|
|
||||||
"weighted avg 0.81 0.81 0.81 6033\n",
|
|
||||||
"\n",
|
|
||||||
"Index(['age', 'workclass', 'education.num', 'marital.status', 'occupation',\n",
|
|
||||||
" 'relationship', 'race', 'sex', 'capital.gain', 'capital.loss',\n",
|
|
||||||
" 'hours.per.week', 'native.country'],\n",
|
|
||||||
" dtype='object')\n"
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
@@ -67,10 +42,6 @@
|
|||||||
"from sklearn.metrics import classification_report, confusion_matrix, ConfusionMatrixDisplay\n",
|
"from sklearn.metrics import classification_report, confusion_matrix, ConfusionMatrixDisplay\n",
|
||||||
"from scipy.stats import randint\n",
|
"from scipy.stats import randint\n",
|
||||||
"\n",
|
"\n",
|
||||||
"\n",
|
|
||||||
"\n",
|
|
||||||
"\n",
|
|
||||||
"\n",
|
|
||||||
"# Load dataset\n",
|
"# Load dataset\n",
|
||||||
"df = pd.read_csv('./Datasets/adult.csv', comment = '#')\n",
|
"df = pd.read_csv('./Datasets/adult.csv', comment = '#')\n",
|
||||||
"\n",
|
"\n",
|
||||||
@@ -209,7 +180,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 5,
|
"execution_count": 4,
|
||||||
"id": "e68b1ea9",
|
"id": "e68b1ea9",
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [],
|
"outputs": [],
|
||||||
@@ -262,6 +233,11 @@
|
|||||||
" 'max_depth': [None, 5, 10, 20],\n",
|
" 'max_depth': [None, 5, 10, 20],\n",
|
||||||
" 'min_samples_split': [2, 5, 10],\n",
|
" 'min_samples_split': [2, 5, 10],\n",
|
||||||
" #'min_samples_leaf': [2, 4, 6]\n",
|
" #'min_samples_leaf': [2, 4, 6]\n",
|
||||||
|
" }),\n",
|
||||||
|
" 'XGBoost': (XGBClassifier(eval_metric='mlogloss', random_state=42), {\n",
|
||||||
|
" 'n_estimators': [50, 100, 200],\n",
|
||||||
|
" 'learning_rate': [0.01, 0.1, 0.2, 0.5, 1.0],\n",
|
||||||
|
" 'max_depth': [3, 5, 10]\n",
|
||||||
" })\n",
|
" })\n",
|
||||||
" }\n",
|
" }\n",
|
||||||
"\n",
|
"\n",
|
||||||
@@ -276,7 +252,7 @@
|
|||||||
" for name, (model, param_grid) in models_with_params.items():\n",
|
" for name, (model, param_grid) in models_with_params.items():\n",
|
||||||
" print(f\"Tuning {name} ...\")\n",
|
" print(f\"Tuning {name} ...\")\n",
|
||||||
" \n",
|
" \n",
|
||||||
" grid_search = GridSearchCV(model, param_grid, scoring='accuracy', cv=cv, n_jobs=-1)\n",
|
" grid_search = GridSearchCV(model, param_grid, scoring='accuracy', cv=cv, n_jobs=-2)\n",
|
||||||
" \n",
|
" \n",
|
||||||
" start_train = time.time()\n",
|
" start_train = time.time()\n",
|
||||||
" grid_search.fit(self.X_train, self.y_train)\n",
|
" grid_search.fit(self.X_train, self.y_train)\n",
|
||||||
@@ -355,7 +331,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 6,
|
"execution_count": 5,
|
||||||
"id": "d6fd1fee",
|
"id": "d6fd1fee",
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [
|
"outputs": [
|
||||||
@@ -363,18 +339,27 @@
|
|||||||
"name": "stdout",
|
"name": "stdout",
|
||||||
"output_type": "stream",
|
"output_type": "stream",
|
||||||
"text": [
|
"text": [
|
||||||
"Tuning Decision Tree ...\n",
|
"Tuning Decision Tree ...\n"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "stdout",
|
||||||
|
"output_type": "stream",
|
||||||
|
"text": [
|
||||||
"Tuning Random Forest ...\n",
|
"Tuning Random Forest ...\n",
|
||||||
|
"Tuning XGBoost ...\n",
|
||||||
"\n",
|
"\n",
|
||||||
"------ Results Sorted by Accuracy ------\n",
|
"------ Results Sorted by Accuracy ------\n",
|
||||||
" Model Accuracy Precision Recall F1 Score Best Params Training Time (s) Prediction Time (s) Total Time (s)\n",
|
" Model Accuracy Precision Recall F1 Score Best Params Training Time (s) Prediction Time (s) Total Time (s)\n",
|
||||||
"Random Forest 0.858942 0.853479 0.858942 0.853443 {'max_depth': 20, 'min_samples_split': 10, 'n_estimators': 100} 160.295069 0.188931 160.484000\n",
|
" XGBoost 0.868059 0.863590 0.868059 0.863957 {'learning_rate': 0.2, 'max_depth': 5, 'n_estimators': 100} 25.874328 0.005939 25.880267\n",
|
||||||
"Decision Tree 0.848334 0.844900 0.848334 0.846228 {'max_depth': 10, 'min_samples_split': 5} 11.927628 0.006326 11.933954\n",
|
"Random Forest 0.858942 0.853479 0.858942 0.853443 {'max_depth': 20, 'min_samples_split': 10, 'n_estimators': 100} 125.898729 0.065410 125.964139\n",
|
||||||
|
"Decision Tree 0.848334 0.844900 0.848334 0.846228 {'max_depth': 10, 'min_samples_split': 5} 9.028944 0.001837 9.030781\n",
|
||||||
"\n",
|
"\n",
|
||||||
"------ Results Sorted by Total Time ------\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",
|
" Model Accuracy Precision Recall F1 Score Best Params Training Time (s) Prediction Time (s) Total Time (s)\n",
|
||||||
"Decision Tree 0.848334 0.844900 0.848334 0.846228 {'max_depth': 10, 'min_samples_split': 5} 11.927628 0.006326 11.933954\n",
|
"Decision Tree 0.848334 0.844900 0.848334 0.846228 {'max_depth': 10, 'min_samples_split': 5} 9.028944 0.001837 9.030781\n",
|
||||||
"Random Forest 0.858942 0.853479 0.858942 0.853443 {'max_depth': 20, 'min_samples_split': 10, 'n_estimators': 100} 160.295069 0.188931 160.484000\n"
|
" XGBoost 0.868059 0.863590 0.868059 0.863957 {'learning_rate': 0.2, 'max_depth': 5, 'n_estimators': 100} 25.874328 0.005939 25.880267\n",
|
||||||
|
"Random Forest 0.858942 0.853479 0.858942 0.853443 {'max_depth': 20, 'min_samples_split': 10, 'n_estimators': 100} 125.898729 0.065410 125.964139\n"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
@@ -396,7 +381,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 7,
|
"execution_count": 6,
|
||||||
"id": "4185a428",
|
"id": "4185a428",
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [
|
"outputs": [
|
||||||
@@ -406,16 +391,19 @@
|
|||||||
"text": [
|
"text": [
|
||||||
"Tuning Decision Tree ...\n",
|
"Tuning Decision Tree ...\n",
|
||||||
"Tuning Random Forest ...\n",
|
"Tuning Random Forest ...\n",
|
||||||
|
"Tuning XGBoost ...\n",
|
||||||
"\n",
|
"\n",
|
||||||
"------ Results Sorted by Accuracy ------\n",
|
"------ Results Sorted by Accuracy ------\n",
|
||||||
" Model Accuracy Precision Recall F1 Score Best Params Training Time (s) Prediction Time (s) Total Time (s)\n",
|
" Model Accuracy Precision Recall F1 Score Best Params Training Time (s) Prediction Time (s) Total Time (s)\n",
|
||||||
"Random Forest 0.858942 0.853479 0.858942 0.853443 {'max_depth': 20, 'min_samples_split': 10, 'n_estimators': 100} 167.364476 0.126707 167.491183\n",
|
" XGBoost 0.868556 0.864049 0.868556 0.864181 {'learning_rate': 0.2, 'max_depth': 5, 'n_estimators': 75} 11.834481 0.006366 11.840847\n",
|
||||||
"Decision Tree 0.849163 0.843062 0.849163 0.839388 {'max_depth': 8, 'min_samples_split': 6} 2.160097 0.003498 2.163594\n",
|
"Random Forest 0.858942 0.853479 0.858942 0.853443 {'max_depth': 20, 'min_samples_split': 10, 'n_estimators': 100} 129.781899 0.075195 129.857094\n",
|
||||||
|
"Decision Tree 0.849163 0.843062 0.849163 0.839388 {'max_depth': 8, 'min_samples_split': 6} 1.778030 0.002314 1.780344\n",
|
||||||
"\n",
|
"\n",
|
||||||
"------ Results Sorted by Total Time ------\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",
|
" Model Accuracy Precision Recall F1 Score Best Params Training Time (s) Prediction Time (s) Total Time (s)\n",
|
||||||
"Decision Tree 0.849163 0.843062 0.849163 0.839388 {'max_depth': 8, 'min_samples_split': 6} 2.160097 0.003498 2.163594\n",
|
"Decision Tree 0.849163 0.843062 0.849163 0.839388 {'max_depth': 8, 'min_samples_split': 6} 1.778030 0.002314 1.780344\n",
|
||||||
"Random Forest 0.858942 0.853479 0.858942 0.853443 {'max_depth': 20, 'min_samples_split': 10, 'n_estimators': 100} 167.364476 0.126707 167.491183\n"
|
" XGBoost 0.868556 0.864049 0.868556 0.864181 {'learning_rate': 0.2, 'max_depth': 5, 'n_estimators': 75} 11.834481 0.006366 11.840847\n",
|
||||||
|
"Random Forest 0.858942 0.853479 0.858942 0.853443 {'max_depth': 20, 'min_samples_split': 10, 'n_estimators': 100} 129.781899 0.075195 129.857094\n"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -437,6 +425,16 @@
|
|||||||
},
|
},
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"output_type": "display_data"
|
"output_type": "display_data"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"data": {
|
||||||
|
"image/png": "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 truncated
|
||||||
|
"text/plain": [
|
||||||
|
"<Figure size 640x480 with 1 Axes>"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"metadata": {},
|
||||||
|
"output_type": "display_data"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"source": [
|
"source": [
|
||||||
@@ -451,6 +449,11 @@
|
|||||||
" 'n_estimators': [75, 100, 150], \n",
|
" 'n_estimators': [75, 100, 150], \n",
|
||||||
" 'max_depth': [15, 20, 25],\n",
|
" 'max_depth': [15, 20, 25],\n",
|
||||||
" 'min_samples_split': [8, 10, 12],\n",
|
" 'min_samples_split': [8, 10, 12],\n",
|
||||||
|
" }),\n",
|
||||||
|
" 'XGBoost': (XGBClassifier(eval_metric='mlogloss', random_state=42), {\n",
|
||||||
|
" 'n_estimators': [75, 100, 150],\n",
|
||||||
|
" 'learning_rate': [0.15, 0.2, 0.25],\n",
|
||||||
|
" 'max_depth': [4, 5, 6]\n",
|
||||||
" })\n",
|
" })\n",
|
||||||
" }\n",
|
" }\n",
|
||||||
"\n",
|
"\n",
|
||||||
@@ -475,7 +478,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": null,
|
"execution_count": 17,
|
||||||
"id": "776cdb17",
|
"id": "776cdb17",
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [
|
"outputs": [
|
||||||
@@ -484,138 +487,97 @@
|
|||||||
"output_type": "stream",
|
"output_type": "stream",
|
||||||
"text": [
|
"text": [
|
||||||
"Tuning Decision Tree ...\n",
|
"Tuning Decision Tree ...\n",
|
||||||
|
"Tuning XGBoost ...\n",
|
||||||
|
"Tuning Random Forest ...\n",
|
||||||
"\n",
|
"\n",
|
||||||
"------ Results Sorted by Accuracy ------\n",
|
"------ Results Sorted by Accuracy ------\n",
|
||||||
" Model Accuracy Precision Recall F1 Score Best Params Training Time (s) Prediction Time (s) Total Time (s)\n",
|
" Model Accuracy Precision Recall F1 Score Best Params Training Time (s) Prediction Time (s) Total Time (s)\n",
|
||||||
"Decision Tree 0.846842 0.840202 0.846842 0.840706 {'max_depth': 10, 'min_samples_leaf': 1, 'min_samples_split': 5} 10.301274 0.007761 10.309036\n",
|
" XGBoost 0.867893 0.863335 0.867893 0.863496 {'learning_rate': 0.15, 'max_depth': 5, 'n_estimators': 100} 20.872965 0.009083 20.882048\n",
|
||||||
"\n",
|
"Random Forest 0.858942 0.853479 0.858942 0.853443 {'max_depth': 20, 'min_samples_split': 10, 'n_estimators': 100} 140.562873 0.179120 140.741993\n",
|
||||||
"------ Results Sorted by Total Time ------\n",
|
"Decision Tree 0.848666 0.843533 0.848666 0.837078 {'max_depth': 8, 'min_samples_split': 4} 1.247936 0.001514 1.249449\n"
|
||||||
" Model Accuracy Precision Recall F1 Score Best Params Training Time (s) Prediction Time (s) Total Time (s)\n",
|
|
||||||
"Decision Tree 0.846842 0.840202 0.846842 0.840706 {'max_depth': 10, 'min_samples_leaf': 1, 'min_samples_split': 5} 10.301274 0.007761 10.309036\n"
|
|
||||||
]
|
]
|
||||||
},
|
|
||||||
{
|
|
||||||
"data": {
|
|
||||||
"image/png": "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 truncated
|
|
||||||
"text/plain": [
|
|
||||||
"<Figure size 640x480 with 1 Axes>"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"metadata": {},
|
|
||||||
"output_type": "display_data"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"data": {
|
|
||||||
"text/html": [
|
|
||||||
"<div>\n",
|
|
||||||
"<style scoped>\n",
|
|
||||||
" .dataframe tbody tr th:only-of-type {\n",
|
|
||||||
" vertical-align: middle;\n",
|
|
||||||
" }\n",
|
|
||||||
"\n",
|
|
||||||
" .dataframe tbody tr th {\n",
|
|
||||||
" vertical-align: top;\n",
|
|
||||||
" }\n",
|
|
||||||
"\n",
|
|
||||||
" .dataframe thead th {\n",
|
|
||||||
" text-align: right;\n",
|
|
||||||
" }\n",
|
|
||||||
"</style>\n",
|
|
||||||
"<table border=\"1\" class=\"dataframe\">\n",
|
|
||||||
" <thead>\n",
|
|
||||||
" <tr style=\"text-align: right;\">\n",
|
|
||||||
" <th></th>\n",
|
|
||||||
" <th>age</th>\n",
|
|
||||||
" <th>education.num</th>\n",
|
|
||||||
" <th>relationship</th>\n",
|
|
||||||
" <th>capital.gain</th>\n",
|
|
||||||
" <th>capital.loss</th>\n",
|
|
||||||
" <th>hours.per.week</th>\n",
|
|
||||||
" </tr>\n",
|
|
||||||
" </thead>\n",
|
|
||||||
" <tbody>\n",
|
|
||||||
" <tr>\n",
|
|
||||||
" <th>19841</th>\n",
|
|
||||||
" <td>35</td>\n",
|
|
||||||
" <td>10</td>\n",
|
|
||||||
" <td>0</td>\n",
|
|
||||||
" <td>0</td>\n",
|
|
||||||
" <td>0</td>\n",
|
|
||||||
" <td>45</td>\n",
|
|
||||||
" </tr>\n",
|
|
||||||
" <tr>\n",
|
|
||||||
" <th>24329</th>\n",
|
|
||||||
" <td>50</td>\n",
|
|
||||||
" <td>9</td>\n",
|
|
||||||
" <td>4</td>\n",
|
|
||||||
" <td>0</td>\n",
|
|
||||||
" <td>0</td>\n",
|
|
||||||
" <td>12</td>\n",
|
|
||||||
" </tr>\n",
|
|
||||||
" <tr>\n",
|
|
||||||
" <th>10002</th>\n",
|
|
||||||
" <td>43</td>\n",
|
|
||||||
" <td>9</td>\n",
|
|
||||||
" <td>0</td>\n",
|
|
||||||
" <td>0</td>\n",
|
|
||||||
" <td>0</td>\n",
|
|
||||||
" <td>45</td>\n",
|
|
||||||
" </tr>\n",
|
|
||||||
" <tr>\n",
|
|
||||||
" <th>25682</th>\n",
|
|
||||||
" <td>23</td>\n",
|
|
||||||
" <td>10</td>\n",
|
|
||||||
" <td>3</td>\n",
|
|
||||||
" <td>0</td>\n",
|
|
||||||
" <td>0</td>\n",
|
|
||||||
" <td>24</td>\n",
|
|
||||||
" </tr>\n",
|
|
||||||
" <tr>\n",
|
|
||||||
" <th>13800</th>\n",
|
|
||||||
" <td>30</td>\n",
|
|
||||||
" <td>10</td>\n",
|
|
||||||
" <td>1</td>\n",
|
|
||||||
" <td>0</td>\n",
|
|
||||||
" <td>0</td>\n",
|
|
||||||
" <td>40</td>\n",
|
|
||||||
" </tr>\n",
|
|
||||||
" </tbody>\n",
|
|
||||||
"</table>\n",
|
|
||||||
"</div>"
|
|
||||||
],
|
|
||||||
"text/plain": [
|
|
||||||
" age education.num relationship capital.gain capital.loss \\\n",
|
|
||||||
"19841 35 10 0 0 0 \n",
|
|
||||||
"24329 50 9 4 0 0 \n",
|
|
||||||
"10002 43 9 0 0 0 \n",
|
|
||||||
"25682 23 10 3 0 0 \n",
|
|
||||||
"13800 30 10 1 0 0 \n",
|
|
||||||
"\n",
|
|
||||||
" hours.per.week \n",
|
|
||||||
"19841 45 \n",
|
|
||||||
"24329 12 \n",
|
|
||||||
"10002 45 \n",
|
|
||||||
"25682 24 \n",
|
|
||||||
"13800 40 "
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"execution_count": 39,
|
|
||||||
"metadata": {},
|
|
||||||
"output_type": "execute_result"
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"source": [
|
"source": [
|
||||||
"# Remove redundant features\n",
|
"# Remove redundant features for decision tree\n",
|
||||||
"X_filtered = X_train_val.drop(columns=['sex', 'native.country', 'marital.status', 'race', 'occupation', 'workclass'])\n",
|
"X_dt = X_train_val.drop(columns=['sex', 'native.country', 'marital.status', 'race', 'occupation', 'workclass'])\n",
|
||||||
"\n",
|
"\n",
|
||||||
"# optimized classifiers and find their hyperparameters\n",
|
"# Remove redundant features for XGBoost\n",
|
||||||
"clf_opt = ClassifierComparisonOpt(X_filtered, y_train_val)\n",
|
"X_xgb = X_train_val.drop(columns=['native.country', 'race'])\n",
|
||||||
"clf_opt.fit_models()\n",
|
|
||||||
"clf_opt.print_summary()\n",
|
|
||||||
"\n",
|
"\n",
|
||||||
"# Show feature importance for each model\n",
|
"# Train decision tree without redundant features\n",
|
||||||
"clf_opt.show_feature_importance()\n",
|
"cmp_dt = ClassifierComparisonOpt(X_dt, y_train_val)\n",
|
||||||
"X_filtered.head()"
|
"cmp_dt.fit_models({'Decision Tree': fine_grid['Decision Tree']})\n",
|
||||||
|
"\n",
|
||||||
|
"# Train XGBoost without redundant features\n",
|
||||||
|
"cmp_xgb = ClassifierComparisonOpt(X_xgb, y_train_val)\n",
|
||||||
|
"cmp_xgb.fit_models({'XGBoost': fine_grid['XGBoost']})\n",
|
||||||
|
"\n",
|
||||||
|
"# Train Random Forest, keep all features\n",
|
||||||
|
"cmp_rf = ClassifierComparisonOpt(X_train_val, y_train_val)\n",
|
||||||
|
"cmp_rf.fit_models({'Random Forest': fine_grid['Random Forest']})\n",
|
||||||
|
"\n",
|
||||||
|
"# Print results\n",
|
||||||
|
"res = pd.concat([cmp_dt.results_df, cmp_rf.results_df, cmp_xgb.results_df])\n",
|
||||||
|
"print(\"\\n------ Results Sorted by Accuracy ------\")\n",
|
||||||
|
"print(res.sort_values(by='Accuracy', ascending=False).to_string(index=False))"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"id": "6fbac4c8",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"### Final Models"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"id": "a470fd20",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"# ---------------------------- Decision Tree ----------------------------\n",
|
||||||
|
"dt = Pipeline([\n",
|
||||||
|
" ('dt', DecisionTreeClassifier(max_depth=8, min_samples_split=4, random_state=42)) \n",
|
||||||
|
"])\n",
|
||||||
|
"\n",
|
||||||
|
"# Train the model\n",
|
||||||
|
"dt.fit(X_train_val, y_train_val)\n",
|
||||||
|
"y_pred = dt.predict(X_test)\n",
|
||||||
|
"\n",
|
||||||
|
"# Classification Report\n",
|
||||||
|
"print(\"Classification Report:\")\n",
|
||||||
|
"print(classification_report(y_val, y_pred, target_names=[\"Poor\", \"Rich\"]))\n",
|
||||||
|
"\n",
|
||||||
|
"\n",
|
||||||
|
"# ---------------------------- Random Forest ----------------------------\n",
|
||||||
|
"rf = Pipeline([\n",
|
||||||
|
" ('rf', RandomForestClassifier(max_depth=20, min_samples_split=10, n_estimators=100, bootstrap=True, random_state=42))\n",
|
||||||
|
"])\n",
|
||||||
|
"\n",
|
||||||
|
"# Train the model\n",
|
||||||
|
"rf.fit(X_train_val, y_train_val)\n",
|
||||||
|
"y_pred = rf.predict(X_test)\n",
|
||||||
|
"\n",
|
||||||
|
"# Classification Report\n",
|
||||||
|
"print(\"Classification Report:\")\n",
|
||||||
|
"print(classification_report(y_val, y_pred, target_names=[\"Poor\", \"Rich\"]))\n",
|
||||||
|
"\n",
|
||||||
|
"\n",
|
||||||
|
"# ---------------------------- Random Forest ----------------------------\n",
|
||||||
|
"xgb = Pipeline([\n",
|
||||||
|
" ('xgb', XGBClassifier(learning_rate=0.15, max_depth=5, n_estimators=100, random_state=42))\n",
|
||||||
|
"])\n",
|
||||||
|
"\n",
|
||||||
|
"# Train the model\n",
|
||||||
|
"xgb.fit(X_train_val, y_train_val)\n",
|
||||||
|
"y_pred = cmp_xgb.predict(X_test)\n",
|
||||||
|
"\n",
|
||||||
|
"# Classification Report\n",
|
||||||
|
"print(\"Classification Report:\")\n",
|
||||||
|
"print(classification_report(y_val, y_pred, target_names=[\"Poor\", \"Rich\"]))"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
Reference in new issue
Block a user