Spaces:
Running
Running
Amol Kaushik commited on
Commit ·
39b920c
1
Parent(s): 7f284e9
the champion model changed
Browse files- A3/A3_Report.ipynb +52 -109
A3/A3_Report.ipynb
CHANGED
|
@@ -47,7 +47,7 @@
|
|
| 47 |
},
|
| 48 |
{
|
| 49 |
"cell_type": "code",
|
| 50 |
-
"execution_count":
|
| 51 |
"id": "edbe3fbd",
|
| 52 |
"metadata": {},
|
| 53 |
"outputs": [],
|
|
@@ -58,22 +58,26 @@
|
|
| 58 |
"import matplotlib.pyplot as plt\n",
|
| 59 |
"import seaborn as sns\n",
|
| 60 |
"import os\n",
|
|
|
|
|
|
|
|
|
|
| 61 |
"from sklearn.model_selection import train_test_split, GridSearchCV\n",
|
| 62 |
-
"from sklearn.preprocessing import StandardScaler
|
| 63 |
"from sklearn.metrics import (\n",
|
| 64 |
" accuracy_score, precision_score, recall_score, f1_score,\n",
|
| 65 |
" classification_report, confusion_matrix\n",
|
| 66 |
")\n",
|
| 67 |
"from sklearn.linear_model import LogisticRegression\n",
|
| 68 |
"from sklearn.naive_bayes import GaussianNB\n",
|
|
|
|
| 69 |
"from sklearn.discriminant_analysis import LinearDiscriminantAnalysis, QuadraticDiscriminantAnalysis\n",
|
| 70 |
-
"
|
| 71 |
-
"import
|
| 72 |
]
|
| 73 |
},
|
| 74 |
{
|
| 75 |
"cell_type": "code",
|
| 76 |
-
"execution_count":
|
| 77 |
"id": "23f1b38b",
|
| 78 |
"metadata": {},
|
| 79 |
"outputs": [
|
|
@@ -124,7 +128,7 @@
|
|
| 124 |
},
|
| 125 |
{
|
| 126 |
"cell_type": "code",
|
| 127 |
-
"execution_count":
|
| 128 |
"id": "080ab472",
|
| 129 |
"metadata": {},
|
| 130 |
"outputs": [
|
|
@@ -196,7 +200,7 @@
|
|
| 196 |
},
|
| 197 |
{
|
| 198 |
"cell_type": "code",
|
| 199 |
-
"execution_count":
|
| 200 |
"id": "438e27ae",
|
| 201 |
"metadata": {},
|
| 202 |
"outputs": [
|
|
@@ -294,7 +298,7 @@
|
|
| 294 |
},
|
| 295 |
{
|
| 296 |
"cell_type": "code",
|
| 297 |
-
"execution_count":
|
| 298 |
"id": "7560ae66",
|
| 299 |
"metadata": {},
|
| 300 |
"outputs": [
|
|
@@ -331,7 +335,7 @@
|
|
| 331 |
},
|
| 332 |
{
|
| 333 |
"cell_type": "code",
|
| 334 |
-
"execution_count":
|
| 335 |
"id": "9f17a88e",
|
| 336 |
"metadata": {},
|
| 337 |
"outputs": [
|
|
@@ -377,7 +381,7 @@
|
|
| 377 |
},
|
| 378 |
{
|
| 379 |
"cell_type": "code",
|
| 380 |
-
"execution_count":
|
| 381 |
"id": "d4c02996",
|
| 382 |
"metadata": {},
|
| 383 |
"outputs": [],
|
|
@@ -400,7 +404,7 @@
|
|
| 400 |
},
|
| 401 |
{
|
| 402 |
"cell_type": "code",
|
| 403 |
-
"execution_count":
|
| 404 |
"id": "c8292b2b",
|
| 405 |
"metadata": {},
|
| 406 |
"outputs": [],
|
|
@@ -438,7 +442,7 @@
|
|
| 438 |
},
|
| 439 |
{
|
| 440 |
"cell_type": "code",
|
| 441 |
-
"execution_count":
|
| 442 |
"id": "b598aef7",
|
| 443 |
"metadata": {},
|
| 444 |
"outputs": [
|
|
@@ -471,7 +475,7 @@
|
|
| 471 |
},
|
| 472 |
{
|
| 473 |
"cell_type": "code",
|
| 474 |
-
"execution_count":
|
| 475 |
"id": "962743cc",
|
| 476 |
"metadata": {},
|
| 477 |
"outputs": [
|
|
@@ -599,7 +603,7 @@
|
|
| 599 |
},
|
| 600 |
{
|
| 601 |
"cell_type": "code",
|
| 602 |
-
"execution_count":
|
| 603 |
"id": "5c9efd5b",
|
| 604 |
"metadata": {},
|
| 605 |
"outputs": [
|
|
@@ -632,7 +636,7 @@
|
|
| 632 |
},
|
| 633 |
{
|
| 634 |
"cell_type": "code",
|
| 635 |
-
"execution_count":
|
| 636 |
"id": "ce01a75f",
|
| 637 |
"metadata": {},
|
| 638 |
"outputs": [
|
|
@@ -810,7 +814,7 @@
|
|
| 810 |
},
|
| 811 |
{
|
| 812 |
"cell_type": "code",
|
| 813 |
-
"execution_count":
|
| 814 |
"id": "3e5e5e9b",
|
| 815 |
"metadata": {},
|
| 816 |
"outputs": [
|
|
@@ -845,7 +849,7 @@
|
|
| 845 |
},
|
| 846 |
{
|
| 847 |
"cell_type": "code",
|
| 848 |
-
"execution_count":
|
| 849 |
"id": "4de69063",
|
| 850 |
"metadata": {},
|
| 851 |
"outputs": [
|
|
@@ -881,7 +885,7 @@
|
|
| 881 |
},
|
| 882 |
{
|
| 883 |
"cell_type": "code",
|
| 884 |
-
"execution_count":
|
| 885 |
"id": "a994b1af",
|
| 886 |
"metadata": {},
|
| 887 |
"outputs": [
|
|
@@ -1031,7 +1035,7 @@
|
|
| 1031 |
},
|
| 1032 |
{
|
| 1033 |
"cell_type": "code",
|
| 1034 |
-
"execution_count":
|
| 1035 |
"id": "00f3eda4",
|
| 1036 |
"metadata": {},
|
| 1037 |
"outputs": [
|
|
@@ -1063,7 +1067,7 @@
|
|
| 1063 |
},
|
| 1064 |
{
|
| 1065 |
"cell_type": "code",
|
| 1066 |
-
"execution_count":
|
| 1067 |
"id": "6b03902f",
|
| 1068 |
"metadata": {},
|
| 1069 |
"outputs": [
|
|
@@ -1243,62 +1247,15 @@
|
|
| 1243 |
"id": "595e6b9d",
|
| 1244 |
"metadata": {},
|
| 1245 |
"source": [
|
| 1246 |
-
"## 8.
|
| 1247 |
-
]
|
| 1248 |
-
},
|
| 1249 |
-
{
|
| 1250 |
-
"cell_type": "code",
|
| 1251 |
-
"execution_count": 195,
|
| 1252 |
-
"id": "c3cad488",
|
| 1253 |
-
"metadata": {},
|
| 1254 |
-
"outputs": [
|
| 1255 |
-
{
|
| 1256 |
-
"name": "stdout",
|
| 1257 |
-
"output_type": "stream",
|
| 1258 |
-
"text": [
|
| 1259 |
-
"Original features: 41\n",
|
| 1260 |
-
"After polynomial transformation: 861\n",
|
| 1261 |
-
"New features created: 820\n",
|
| 1262 |
-
"\n",
|
| 1263 |
-
"Training Logistic Regression with polynomial features...\n",
|
| 1264 |
-
"\n",
|
| 1265 |
-
"=== Polynomial Features Results ===\n",
|
| 1266 |
-
"Accuracy: 0.8473\n",
|
| 1267 |
-
"F1-Score: 0.8481\n",
|
| 1268 |
-
"Baseline F1: 0.8278\n",
|
| 1269 |
-
"Improvement: +0.0203\n"
|
| 1270 |
-
]
|
| 1271 |
-
}
|
| 1272 |
-
],
|
| 1273 |
-
"source": [
|
| 1274 |
-
"# Create polynomial features\n",
|
| 1275 |
-
"poly = PolynomialFeatures(degree=2, include_bias=False, interaction_only=True)\n",
|
| 1276 |
-
"X_train_poly = poly.fit_transform(X_train_region)\n",
|
| 1277 |
-
"X_test_poly = poly.transform(X_test_region)\n",
|
| 1278 |
"\n",
|
| 1279 |
-
"
|
| 1280 |
-
"print(f\"After polynomial transformation: {X_train_poly.shape[1]}\")\n",
|
| 1281 |
-
"print(f\"New features created: {X_train_poly.shape[1] - X_train_region.shape[1]}\")\n",
|
| 1282 |
"\n",
|
| 1283 |
-
"
|
| 1284 |
-
"
|
| 1285 |
-
"
|
| 1286 |
-
"X_test_poly_scaled = scaler_poly.transform(X_test_poly)\n",
|
| 1287 |
"\n",
|
| 1288 |
-
"
|
| 1289 |
-
"print(f\"\\nTraining Logistic Regression with polynomial features...\")\n",
|
| 1290 |
-
"lr_poly = LogisticRegression(max_iter=1000, random_state=42)\n",
|
| 1291 |
-
"lr_poly.fit(X_train_poly_scaled, y_train_region)\n",
|
| 1292 |
-
"\n",
|
| 1293 |
-
"y_pred_poly = lr_poly.predict(X_test_poly_scaled)\n",
|
| 1294 |
-
"poly_accuracy = accuracy_score(y_test_region, y_pred_poly)\n",
|
| 1295 |
-
"poly_f1 = f1_score(y_test_region, y_pred_poly, average='weighted')\n",
|
| 1296 |
-
"\n",
|
| 1297 |
-
"print(f\"\\n=== Polynomial Features Results ===\")\n",
|
| 1298 |
-
"print(f\"Accuracy: {poly_accuracy:.4f}\")\n",
|
| 1299 |
-
"print(f\"F1-Score: {poly_f1:.4f}\")\n",
|
| 1300 |
-
"print(f\"Baseline F1: {champion_region_f1_baseline:.4f}\")\n",
|
| 1301 |
-
"print(f\"Improvement: {poly_f1 - champion_region_f1_baseline:+.4f}\")"
|
| 1302 |
]
|
| 1303 |
},
|
| 1304 |
{
|
|
@@ -1311,7 +1268,7 @@
|
|
| 1311 |
},
|
| 1312 |
{
|
| 1313 |
"cell_type": "code",
|
| 1314 |
-
"execution_count":
|
| 1315 |
"id": "0b3e066a",
|
| 1316 |
"metadata": {},
|
| 1317 |
"outputs": [
|
|
@@ -1352,13 +1309,6 @@
|
|
| 1352 |
" </thead>\n",
|
| 1353 |
" <tbody>\n",
|
| 1354 |
" <tr>\n",
|
| 1355 |
-
" <th>4</th>\n",
|
| 1356 |
-
" <td>Body Regions</td>\n",
|
| 1357 |
-
" <td>Polynomial</td>\n",
|
| 1358 |
-
" <td>LR + Poly Features</td>\n",
|
| 1359 |
-
" <td>0.848068</td>\n",
|
| 1360 |
-
" </tr>\n",
|
| 1361 |
-
" <tr>\n",
|
| 1362 |
" <th>2</th>\n",
|
| 1363 |
" <td>Body Regions</td>\n",
|
| 1364 |
" <td>Baseline</td>\n",
|
|
@@ -1391,12 +1341,11 @@
|
|
| 1391 |
"</div>"
|
| 1392 |
],
|
| 1393 |
"text/plain": [
|
| 1394 |
-
" Approach
|
| 1395 |
-
"
|
| 1396 |
-
"
|
| 1397 |
-
"
|
| 1398 |
-
"
|
| 1399 |
-
"0 14-Class Baseline LDA 0.566721"
|
| 1400 |
]
|
| 1401 |
},
|
| 1402 |
"metadata": {},
|
|
@@ -1411,9 +1360,9 @@
|
|
| 1411 |
"FINAL CHAMPION MODEL\n",
|
| 1412 |
"==================================================\n",
|
| 1413 |
"Approach: Body Regions\n",
|
| 1414 |
-
"Iteration:
|
| 1415 |
-
"Model:
|
| 1416 |
-
"F1-Score: 0.
|
| 1417 |
]
|
| 1418 |
}
|
| 1419 |
],
|
|
@@ -1435,9 +1384,6 @@
|
|
| 1435 |
" {'Approach': 'Body Regions', 'Iteration': 'Tuned', \n",
|
| 1436 |
" 'Model': tuning_df_region.iloc[0]['Model'], \n",
|
| 1437 |
" 'F1-Score': tuning_df_region.iloc[0]['Test F1-Score']},\n",
|
| 1438 |
-
" {'Approach': 'Body Regions', 'Iteration': 'Polynomial', \n",
|
| 1439 |
-
" 'Model': 'LR + Poly Features', \n",
|
| 1440 |
-
" 'F1-Score': poly_f1},\n",
|
| 1441 |
"])\n",
|
| 1442 |
"\n",
|
| 1443 |
"all_iterations = all_iterations.sort_values('F1-Score', ascending=False)\n",
|
|
@@ -1458,7 +1404,7 @@
|
|
| 1458 |
},
|
| 1459 |
{
|
| 1460 |
"cell_type": "code",
|
| 1461 |
-
"execution_count":
|
| 1462 |
"id": "d21c037d",
|
| 1463 |
"metadata": {},
|
| 1464 |
"outputs": [
|
|
@@ -1470,18 +1416,18 @@
|
|
| 1470 |
"\n",
|
| 1471 |
" precision recall f1-score support\n",
|
| 1472 |
"\n",
|
| 1473 |
-
" Lower Body 0.
|
| 1474 |
-
" Upper Body 0.
|
| 1475 |
"\n",
|
| 1476 |
-
" accuracy 0.
|
| 1477 |
-
" macro avg 0.
|
| 1478 |
-
"weighted avg 0.
|
| 1479 |
"\n"
|
| 1480 |
]
|
| 1481 |
},
|
| 1482 |
{
|
| 1483 |
"data": {
|
| 1484 |
-
"image/png": "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",
|
| 1485 |
"text/plain": [
|
| 1486 |
"<Figure size 800x600 with 2 Axes>"
|
| 1487 |
]
|
|
@@ -1498,10 +1444,6 @@
|
|
| 1498 |
" final_model = best_models_region[tuning_df_region.iloc[0]['Model'].replace(' (Tuned)', '')]\n",
|
| 1499 |
" X_test_final = X_test_region_scaled\n",
|
| 1500 |
" y_test_final = y_test_region\n",
|
| 1501 |
-
" elif final_champion_row['Iteration'] == 'Polynomial':\n",
|
| 1502 |
-
" final_model = lr_poly\n",
|
| 1503 |
-
" X_test_final = X_test_poly_scaled\n",
|
| 1504 |
-
" y_test_final = y_test_region\n",
|
| 1505 |
" else: # Baseline\n",
|
| 1506 |
" final_model = trained_region[champion_region_baseline]\n",
|
| 1507 |
" X_test_final = X_test_region_scaled\n",
|
|
@@ -1540,7 +1482,7 @@
|
|
| 1540 |
},
|
| 1541 |
{
|
| 1542 |
"cell_type": "code",
|
| 1543 |
-
"execution_count":
|
| 1544 |
"id": "4f01e27a",
|
| 1545 |
"metadata": {},
|
| 1546 |
"outputs": [
|
|
@@ -1605,7 +1547,7 @@
|
|
| 1605 |
},
|
| 1606 |
{
|
| 1607 |
"cell_type": "code",
|
| 1608 |
-
"execution_count":
|
| 1609 |
"id": "9c52b59b",
|
| 1610 |
"metadata": {},
|
| 1611 |
"outputs": [
|
|
@@ -1642,9 +1584,9 @@
|
|
| 1642 |
"\n",
|
| 1643 |
"==================================================\n",
|
| 1644 |
"\n",
|
| 1645 |
-
"FINAL CHAMPION:
|
| 1646 |
"Approach: Body Regions\n",
|
| 1647 |
-
"F1-Score: 0.
|
| 1648 |
]
|
| 1649 |
}
|
| 1650 |
],
|
|
@@ -1694,7 +1636,8 @@
|
|
| 1694 |
"| 2 | Tuned | 14-Class | GridSearchCV (5-fold CV) |\n",
|
| 1695 |
"| 3 | Baseline | Body Regions | Grouped classes (Upper/Lower) |\n",
|
| 1696 |
"| 4 | Tuned | Body Regions | GridSearchCV (5-fold CV) |\n",
|
| 1697 |
-
"
|
|
|
|
| 1698 |
"\n",
|
| 1699 |
"### Deployed model\n",
|
| 1700 |
"\n",
|
|
|
|
| 47 |
},
|
| 48 |
{
|
| 49 |
"cell_type": "code",
|
| 50 |
+
"execution_count": 264,
|
| 51 |
"id": "edbe3fbd",
|
| 52 |
"metadata": {},
|
| 53 |
"outputs": [],
|
|
|
|
| 58 |
"import matplotlib.pyplot as plt\n",
|
| 59 |
"import seaborn as sns\n",
|
| 60 |
"import os\n",
|
| 61 |
+
"import warnings\n",
|
| 62 |
+
"warnings.filterwarnings('ignore')\n",
|
| 63 |
+
"\n",
|
| 64 |
"from sklearn.model_selection import train_test_split, GridSearchCV\n",
|
| 65 |
+
"from sklearn.preprocessing import StandardScaler\n",
|
| 66 |
"from sklearn.metrics import (\n",
|
| 67 |
" accuracy_score, precision_score, recall_score, f1_score,\n",
|
| 68 |
" classification_report, confusion_matrix\n",
|
| 69 |
")\n",
|
| 70 |
"from sklearn.linear_model import LogisticRegression\n",
|
| 71 |
"from sklearn.naive_bayes import GaussianNB\n",
|
| 72 |
+
"\n",
|
| 73 |
"from sklearn.discriminant_analysis import LinearDiscriminantAnalysis, QuadraticDiscriminantAnalysis\n",
|
| 74 |
+
"import pickle\n",
|
| 75 |
+
"from sklearn.neighbors import KNeighborsClassifier"
|
| 76 |
]
|
| 77 |
},
|
| 78 |
{
|
| 79 |
"cell_type": "code",
|
| 80 |
+
"execution_count": 265,
|
| 81 |
"id": "23f1b38b",
|
| 82 |
"metadata": {},
|
| 83 |
"outputs": [
|
|
|
|
| 128 |
},
|
| 129 |
{
|
| 130 |
"cell_type": "code",
|
| 131 |
+
"execution_count": 266,
|
| 132 |
"id": "080ab472",
|
| 133 |
"metadata": {},
|
| 134 |
"outputs": [
|
|
|
|
| 200 |
},
|
| 201 |
{
|
| 202 |
"cell_type": "code",
|
| 203 |
+
"execution_count": 267,
|
| 204 |
"id": "438e27ae",
|
| 205 |
"metadata": {},
|
| 206 |
"outputs": [
|
|
|
|
| 298 |
},
|
| 299 |
{
|
| 300 |
"cell_type": "code",
|
| 301 |
+
"execution_count": 268,
|
| 302 |
"id": "7560ae66",
|
| 303 |
"metadata": {},
|
| 304 |
"outputs": [
|
|
|
|
| 335 |
},
|
| 336 |
{
|
| 337 |
"cell_type": "code",
|
| 338 |
+
"execution_count": 269,
|
| 339 |
"id": "9f17a88e",
|
| 340 |
"metadata": {},
|
| 341 |
"outputs": [
|
|
|
|
| 381 |
},
|
| 382 |
{
|
| 383 |
"cell_type": "code",
|
| 384 |
+
"execution_count": 270,
|
| 385 |
"id": "d4c02996",
|
| 386 |
"metadata": {},
|
| 387 |
"outputs": [],
|
|
|
|
| 404 |
},
|
| 405 |
{
|
| 406 |
"cell_type": "code",
|
| 407 |
+
"execution_count": 271,
|
| 408 |
"id": "c8292b2b",
|
| 409 |
"metadata": {},
|
| 410 |
"outputs": [],
|
|
|
|
| 442 |
},
|
| 443 |
{
|
| 444 |
"cell_type": "code",
|
| 445 |
+
"execution_count": 272,
|
| 446 |
"id": "b598aef7",
|
| 447 |
"metadata": {},
|
| 448 |
"outputs": [
|
|
|
|
| 475 |
},
|
| 476 |
{
|
| 477 |
"cell_type": "code",
|
| 478 |
+
"execution_count": 273,
|
| 479 |
"id": "962743cc",
|
| 480 |
"metadata": {},
|
| 481 |
"outputs": [
|
|
|
|
| 603 |
},
|
| 604 |
{
|
| 605 |
"cell_type": "code",
|
| 606 |
+
"execution_count": 274,
|
| 607 |
"id": "5c9efd5b",
|
| 608 |
"metadata": {},
|
| 609 |
"outputs": [
|
|
|
|
| 636 |
},
|
| 637 |
{
|
| 638 |
"cell_type": "code",
|
| 639 |
+
"execution_count": 275,
|
| 640 |
"id": "ce01a75f",
|
| 641 |
"metadata": {},
|
| 642 |
"outputs": [
|
|
|
|
| 814 |
},
|
| 815 |
{
|
| 816 |
"cell_type": "code",
|
| 817 |
+
"execution_count": 276,
|
| 818 |
"id": "3e5e5e9b",
|
| 819 |
"metadata": {},
|
| 820 |
"outputs": [
|
|
|
|
| 849 |
},
|
| 850 |
{
|
| 851 |
"cell_type": "code",
|
| 852 |
+
"execution_count": 277,
|
| 853 |
"id": "4de69063",
|
| 854 |
"metadata": {},
|
| 855 |
"outputs": [
|
|
|
|
| 885 |
},
|
| 886 |
{
|
| 887 |
"cell_type": "code",
|
| 888 |
+
"execution_count": 278,
|
| 889 |
"id": "a994b1af",
|
| 890 |
"metadata": {},
|
| 891 |
"outputs": [
|
|
|
|
| 1035 |
},
|
| 1036 |
{
|
| 1037 |
"cell_type": "code",
|
| 1038 |
+
"execution_count": 279,
|
| 1039 |
"id": "00f3eda4",
|
| 1040 |
"metadata": {},
|
| 1041 |
"outputs": [
|
|
|
|
| 1067 |
},
|
| 1068 |
{
|
| 1069 |
"cell_type": "code",
|
| 1070 |
+
"execution_count": 280,
|
| 1071 |
"id": "6b03902f",
|
| 1072 |
"metadata": {},
|
| 1073 |
"outputs": [
|
|
|
|
| 1247 |
"id": "595e6b9d",
|
| 1248 |
"metadata": {},
|
| 1249 |
"source": [
|
| 1250 |
+
"## 8. Why we did not use polynomial features\n",
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1251 |
"\n",
|
| 1252 |
+
"We tested polynomial interaction features (degree=2) which created 820 new features from the original 40. However, this approach was not used in the final model because:\n",
|
|
|
|
|
|
|
| 1253 |
"\n",
|
| 1254 |
+
"1. **Minimal improvement**: The F1-score improvement was negligible\n",
|
| 1255 |
+
"2. **Increased complexity**: 820 features vs 40 original features makes the model harder to interpret and deploy\n",
|
| 1256 |
+
"3. **Risk of overfitting**: Many more parameters to learn from the same amount of data\n",
|
|
|
|
| 1257 |
"\n",
|
| 1258 |
+
"The tuned body region model without polynomial features provides a good balance of accuracy and simplicity."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1259 |
]
|
| 1260 |
},
|
| 1261 |
{
|
|
|
|
| 1268 |
},
|
| 1269 |
{
|
| 1270 |
"cell_type": "code",
|
| 1271 |
+
"execution_count": 281,
|
| 1272 |
"id": "0b3e066a",
|
| 1273 |
"metadata": {},
|
| 1274 |
"outputs": [
|
|
|
|
| 1309 |
" </thead>\n",
|
| 1310 |
" <tbody>\n",
|
| 1311 |
" <tr>\n",
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1312 |
" <th>2</th>\n",
|
| 1313 |
" <td>Body Regions</td>\n",
|
| 1314 |
" <td>Baseline</td>\n",
|
|
|
|
| 1341 |
"</div>"
|
| 1342 |
],
|
| 1343 |
"text/plain": [
|
| 1344 |
+
" Approach Iteration Model F1-Score\n",
|
| 1345 |
+
"2 Body Regions Baseline KNN (k=7) 0.827772\n",
|
| 1346 |
+
"3 Body Regions Tuned KNN (k=10) (Tuned) 0.826347\n",
|
| 1347 |
+
"1 14-Class Tuned Logistic Regression (Tuned) 0.610090\n",
|
| 1348 |
+
"0 14-Class Baseline LDA 0.566721"
|
|
|
|
| 1349 |
]
|
| 1350 |
},
|
| 1351 |
"metadata": {},
|
|
|
|
| 1360 |
"FINAL CHAMPION MODEL\n",
|
| 1361 |
"==================================================\n",
|
| 1362 |
"Approach: Body Regions\n",
|
| 1363 |
+
"Iteration: Baseline\n",
|
| 1364 |
+
"Model: KNN (k=7)\n",
|
| 1365 |
+
"F1-Score: 0.8278\n"
|
| 1366 |
]
|
| 1367 |
}
|
| 1368 |
],
|
|
|
|
| 1384 |
" {'Approach': 'Body Regions', 'Iteration': 'Tuned', \n",
|
| 1385 |
" 'Model': tuning_df_region.iloc[0]['Model'], \n",
|
| 1386 |
" 'F1-Score': tuning_df_region.iloc[0]['Test F1-Score']},\n",
|
|
|
|
|
|
|
|
|
|
| 1387 |
"])\n",
|
| 1388 |
"\n",
|
| 1389 |
"all_iterations = all_iterations.sort_values('F1-Score', ascending=False)\n",
|
|
|
|
| 1404 |
},
|
| 1405 |
{
|
| 1406 |
"cell_type": "code",
|
| 1407 |
+
"execution_count": 282,
|
| 1408 |
"id": "d21c037d",
|
| 1409 |
"metadata": {},
|
| 1410 |
"outputs": [
|
|
|
|
| 1416 |
"\n",
|
| 1417 |
" precision recall f1-score support\n",
|
| 1418 |
"\n",
|
| 1419 |
+
" Lower Body 0.79 0.55 0.65 114\n",
|
| 1420 |
+
" Upper Body 0.85 0.94 0.89 305\n",
|
| 1421 |
"\n",
|
| 1422 |
+
" accuracy 0.84 419\n",
|
| 1423 |
+
" macro avg 0.82 0.75 0.77 419\n",
|
| 1424 |
+
"weighted avg 0.83 0.84 0.83 419\n",
|
| 1425 |
"\n"
|
| 1426 |
]
|
| 1427 |
},
|
| 1428 |
{
|
| 1429 |
"data": {
|
| 1430 |
+
"image/png": "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KGXLlpX06dObciOt827Xrp2sXr36liUvut2ZM2fM/fUMjb6GwoULy6uvvhqtd/uFCxdk+PDhUrFiRcmQIYOkSJFCcuTIYQ4au3btKj/99JP4mz6v/twGDhwo8+fP97ot6ntVDwLat29vrjCr7099rbq/SpUqJT169Iix5l3PDOjjly5dWtKlS2fuoz+7qlWrmvtYJXCeNm7cKE888YR5T+vPWJ/jrrvuMvtU92F83c574vDhw/LUU09J7ty5ze9TyZIl5ZNPPon1TNV7770ntWvXNgeu+pr0fg8//LA5CxITfcxmzZq5fx8mT54c79cBAHFyAfDJHXfcodGaWebOnRvt9okTJ7pv12Xx4sVm/dWrV10//PCDKzw83H1bx44dve57+PBhV+nSpb3uH3Vp3bq169q1a173e+yxx2LctmnTpl7f69jUoUOHXClSpHCv13F5Gjx4sPu2UqVKxWu/3Hvvve77FChQwOu2d955x2scO3fu9Lr9r7/+chUsWDDW15wqVSrXN99843WfU6dOuUqUKBHj9s2bN/f6fs+ePe776T631uuYPS1dutSVOXPmWMehP7uxY8d63WfIkCHu27NmzeoqWbJkjPcdNGiQ1/3q1Klzy5/zo48+6rKb59g999OlS5dc48eP97pNt/Wk78NbjT9jxoyuTZs2ubfXxyxevPgt79O3b1+v5/jggw9cyZMnj3V7fW/q74wnfe/FNGb9PYzPe6Jw4cKu3Llzx/h8EyZM8HquY8eOuSpUqHDL98tbb70V475/9913Y30fAkBCUK4D+GDfvn1msWjmOC5169aNcb1mJZ977jmvdW3btvXKWj/00EMmM6pnAKys4HfffWeymIMHDzbfT58+XaZNm+a+T5EiReSRRx4xGekvvvgixufWTKOehbDu9+mnn5ozBRbNhls6d+4svrKy9prNt2jmWsfouU3Lli3dmVWd8KmTmTUr+vPPP5vyKM2WdujQQSpVqmQy40qzzZ7Z5Vq1apl9/euvv8qcOXNue6ynT5+WVq1auSeZ6s9HX7uelfjqq69k79695oyHZqJ1HNbkyahnFvT+OtY8efKY/arZa/X222+bMWum988//zSZZRUeHm62L1asmNl2z5497tv8rVChQjGuz5Ytm3Tp0sVrnZ6Ruv/++02W2zrjdPToUZPh198RPTOjE8y1HEVpmdqOHTvM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",
|
| 1431 |
"text/plain": [
|
| 1432 |
"<Figure size 800x600 with 2 Axes>"
|
| 1433 |
]
|
|
|
|
| 1444 |
" final_model = best_models_region[tuning_df_region.iloc[0]['Model'].replace(' (Tuned)', '')]\n",
|
| 1445 |
" X_test_final = X_test_region_scaled\n",
|
| 1446 |
" y_test_final = y_test_region\n",
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1447 |
" else: # Baseline\n",
|
| 1448 |
" final_model = trained_region[champion_region_baseline]\n",
|
| 1449 |
" X_test_final = X_test_region_scaled\n",
|
|
|
|
| 1482 |
},
|
| 1483 |
{
|
| 1484 |
"cell_type": "code",
|
| 1485 |
+
"execution_count": 283,
|
| 1486 |
"id": "4f01e27a",
|
| 1487 |
"metadata": {},
|
| 1488 |
"outputs": [
|
|
|
|
| 1547 |
},
|
| 1548 |
{
|
| 1549 |
"cell_type": "code",
|
| 1550 |
+
"execution_count": 284,
|
| 1551 |
"id": "9c52b59b",
|
| 1552 |
"metadata": {},
|
| 1553 |
"outputs": [
|
|
|
|
| 1584 |
"\n",
|
| 1585 |
"==================================================\n",
|
| 1586 |
"\n",
|
| 1587 |
+
"FINAL CHAMPION: KNN (k=7)\n",
|
| 1588 |
"Approach: Body Regions\n",
|
| 1589 |
+
"F1-Score: 0.8278\n"
|
| 1590 |
]
|
| 1591 |
}
|
| 1592 |
],
|
|
|
|
| 1636 |
"| 2 | Tuned | 14-Class | GridSearchCV (5-fold CV) |\n",
|
| 1637 |
"| 3 | Baseline | Body Regions | Grouped classes (Upper/Lower) |\n",
|
| 1638 |
"| 4 | Tuned | Body Regions | GridSearchCV (5-fold CV) |\n",
|
| 1639 |
+
"\n",
|
| 1640 |
+
"Note: Polynomial interaction features were tested but not included in final iterations due to minimal improvement and increased complexity (820 features vs 40).\n",
|
| 1641 |
"\n",
|
| 1642 |
"### Deployed model\n",
|
| 1643 |
"\n",
|