{ "cells": [ { "cell_type": "markdown", "id": "f8683b72", "metadata": {}, "source": [ "# Evaluasi Model Klasifikasi Kematangan Tomat\n", "Dataset: matang, mentah, setengah_matang | Model: Random Forest" ] }, { "cell_type": "code", "execution_count": 1, "id": "87f3ffaf", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Libraries loaded successfully\n" ] } ], "source": [ "import os\n", "import cv2\n", "import numpy as np\n", "import joblib\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "from sklearn.metrics import (accuracy_score, precision_score, \n", "recall_score, f1_score, classification_report, confusion_matrix)\n", "from sklearn.model_selection import train_test_split\n", "from sklearn.ensemble import RandomForestClassifier\n", "%matplotlib inline\n", "print(\"Libraries loaded successfully\")" ] }, { "cell_type": "markdown", "id": "182ad587", "metadata": {}, "source": [ "## 1. Load Dataset" ] }, { "cell_type": "code", "execution_count": 2, "id": "86958ea3", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "matang: 169 gambar\n", "mentah: 136 gambar\n", "setengah_matang: 170 gambar\n", "Total: 475 gambar\n" ] } ], "source": [ "CLASS_NAMES = ['matang', 'mentah', 'setengah_matang']\n", "IMG_SIZE = (256, 256)\n", "BINS = (8, 8, 8)\n", "\n", "def extract_histogram(image):\n", " image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)\n", " features = []\n", " for i in range(3):\n", " hist = cv2.calcHist([image_rgb], [i], None, [BINS[i]], [0, 256])\n", " hist = cv2.normalize(hist, hist).flatten()\n", " features.append(hist)\n", " return np.concatenate(features)\n", "\n", "X, y = [], []\n", "for label, cls in enumerate(CLASS_NAMES):\n", " files = [f for f in os.listdir(cls) \n", " if f.lower().endswith(('.jpg','.jpeg','.png'))]\n", " for fname in files:\n", " img = cv2.imread(os.path.join(cls, fname))\n", " if img is None: continue\n", " img = cv2.resize(img, IMG_SIZE)\n", " X.append(extract_histogram(img))\n", " y.append(label)\n", " print(f\"{cls}: {files.__len__()} gambar\")\n", "\n", "X = np.array(X)\n", "y = np.array(y)\n", "print(f\"Total: {len(y)} gambar\")" ] }, { "cell_type": "markdown", "id": "d478ebe9", "metadata": {}, "source": [ "## 2. Split Dataset into Training and Testing Sets" ] }, { "cell_type": "code", "execution_count": 3, "id": "adce8dde", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Classification Report (Testing Data):\n", "\n", " precision recall f1-score support\n", "\n", " matang 0.97 1.00 0.99 37\n", " mentah 1.00 0.85 0.92 20\n", "setengah_matang 0.95 1.00 0.97 38\n", "\n", " accuracy 0.97 95\n", " macro avg 0.97 0.95 0.96 95\n", " weighted avg 0.97 0.97 0.97 95\n", "\n", "Confusion Matrix (Testing Data):\n", "\n", "[[37 0 0]\n", " [ 1 17 2]\n", " [ 0 0 38]]\n", "\n", "Accuracy Comparison:\n", "Training Accuracy: 100.00%\n", "Testing Accuracy: 96.84%\n" ] } ], "source": [ "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n", "\n", "# 2. Train Random Forest model\n", "model = RandomForestClassifier(n_estimators=100, random_state=42)\n", "model.fit(X_train, y_train)\n", "\n", "# 3. Make predictions\n", "train_predictions = model.predict(X_train)\n", "test_predictions = model.predict(X_test)\n", "\n", "# 4. Calculate accuracy\n", "train_accuracy = accuracy_score(y_train, train_predictions)\n", "test_accuracy = accuracy_score(y_test, test_predictions)\n", "\n", "# 5. Display classification report and confusion matrix for testing data\n", "print(\"Classification Report (Testing Data):\\n\")\n", "print(classification_report(y_test, test_predictions, target_names=CLASS_NAMES))\n", "\n", "# 6. Convert images to HSV and calculate histogram\n", "for image in images:\n", " image_hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)\n", " hist = cv2.calcHist([image_hsv], [0, 1, 2], None, [8, 8, 8], [0, 256, 0, 256, 0, 256])\n", " hist = cv2.normalize(hist, hist).flatten()\n", " features.append(hist)\n", "\n", "# 7. Confusion Matrix\n", "print(\"Confusion Matrix (Testing Data):\\n\")\n", "conf_matrix = confusion_matrix(y_test, test_predictions)\n", "print(conf_matrix)\n", "\n", "# 8. Compare training and testing accuracy\n", "print(\"\\nAccuracy Comparison:\")\n", "print(f\"Training Accuracy: {train_accuracy * 100:.2f}%\")\n", "print(f\"Testing Accuracy: {test_accuracy * 100:.2f}%\")" ] }, { "cell_type": "markdown", "id": "00c09cc4", "metadata": {}, "source": [ "## 3. Metrik Evaluasi" ] }, { "cell_type": "code", "execution_count": 15, "id": "c71674c5", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Akurasi : 99.37%\n", "Precision : 99.37%\n", "Recall : 99.37%\n", "F1-Score : 99.37%\n" ] } ], "source": [ "y_pred = model.predict(X)\n", "acc = accuracy_score(y, y_pred)\n", "prec = precision_score(y, y_pred, average='weighted')\n", "rec = recall_score(y, y_pred, average='weighted')\n", "f1 = f1_score(y, y_pred, average='weighted')\n", "\n", "print(f\"Akurasi : {acc*100:.2f}%\")\n", "print(f\"Precision : {prec*100:.2f}%\")\n", "print(f\"Recall : {rec*100:.2f}%\")\n", "print(f\"F1-Score : {f1*100:.2f}%\")" ] }, { "cell_type": "markdown", "id": "a0030db6", "metadata": {}, "source": [ "## 4. Confusion Matrix" ] }, { "cell_type": "code", "execution_count": 16, "id": "d687dd71", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAuYAAAJOCAYAAAD71sLQAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAb5JJREFUeJzt3Qd4U+X3wPHTQmnLXrJElkxliGxRkSF7D1kCCg6QoeAE2aKIAxFEEFBUBERFEEEZIkMQ2ciQKWXIKhspLQWa/3Ne/8kvaRtoS5vcJN8Pz31Ibtbbm3uTk3PPPTfIZrPZBAAAAIBXBXv35QEAAAAoAnMAAADAAgjMAQAAAAsgMAcAAAAsgMAcAAAAsAACcwAAAMACCMwBAAAACyAwBwAAACyAwBwAAACwAAJz3NK0adOkQoUKkiVLFgkKCjLTypUr03zJ2V9Lp0OHDvFO3SZ9z+zLs0iRIj6/PJ944gnH3zN8+HCPvKYuN3fbgK6jnTp1koIFC0q6dOnMfR555JGbPk5vt8///PPPxVt07M7bGwDAOwjMLSQuLk5++OEHeeyxx8wXeXh4uGTNmlXKlCkjjz/+uPz4449is9k8Oqbvv/9enn76adm+fbtcvnxZAp0GgM4BTGhoqJw6dSrB/SZOnOhyv9v9cbFt2zbz2jp5M4BLC/r3uAsKdZtwDsAzZMhg1kmr0XG2atVKZs+eLceOHTPX/Z3z+2L/AWJ35swZqVixouN2/bGyd+9e8TXjxo1zbHckB5L32XirSdcfX/qMsq8H+lkMpKX0afrsSDIN7jQgX716tcv8mJgY2bNnj5lmzpwp58+fl+zZs3tsyc6bN89xuXnz5tK/f39Jnz69lCtXLs1f+7fffnNczp8/v1hRbGysfPLJJzJ06FDHPP3x9NFHH6Xq6+iXwYgRI8zlWrVqpehLTQMl+zINCwsTq7tx44Z06dLFBLtKfwR999130rRpU6+NSV9ft0nlvA1EREQ4vrB1+5gxY4YJRrNly3bTx1mFbl/O29vtiIyMlLp168rOnTvN9UKFCsmvv/4qd999t/hiYH748GFzWX98+MOeJqQsMF+1apW5rOvAfffdx2JEmiEwt4ArV65IgwYN5M8//zTXg4ODTeClAYh+sR89elR+/vlnr2QKNftn17JlywSZsbT04IMPii+YPHmyDBw4UEJCQsz1pUuXmh9SVnHt2jXzY0HXJV9ZpjpmLQvRgFbp3qP58+dL/fr1vTquypUr33I7KVCggHTo0CFJj7MK/dGTGuvGiRMnpE6dOo71v1ixYiYoL1y4cCqMElbWvXt3qVevnuP6yZMnpV27do7r48ePN8kBu7x583p8jIBPsMHr3nrrLa1PcUyzZ89O9H579+61Xb161XE9Li7ONn36dNsjjzxiy5Ejhy19+vS2vHnz2po3b2775ZdfEjze+TV27dplGzRokK1QoUK2DBky2EqVKmWbMWOG4776vM73jz+pYcOGOa5369bN5bVq1arluE2fy+6ff/6xPfPMM7aiRYua1w0LC7MVLFjQVq9ePdvQoUPdjjciIsLltm3bttm6dOniGH+WLFlsVapUsb377ru2mJgYl/vq2OzPo2P+4YcfbNWqVTOvnTt3bjOey5cvJ+m9cv6bs2bNmuh71rhx4wS3x/8bZs2aZd6nu+++25YtWzbz3uXMmdP28MMP2z799FPz3ia2HNy9F/rczvOOHz9u/u477rjDFhQUZNu6dattxYoVjtsLFy5sHhcbG2urWrWqY/6IESMcr7tz505baGioma/LeMuWLba0EH9d03Vcl439eqZMmWzLly9P8Lj476vdxo0bbZ07d7aVLVvWvL+6bDNnzmyrUKGCWcf+/fdfl+c5f/687cUXXzTbgK4T+rfmz5/fvBcvvfSSLSoqynFfXW7219TlGX9e/Mk+rsQed7PtRN8H+3xdL/RvSu56o3bv3m3r1KmT2cZCQkJsGTNmNGNp0qSJ7cMPP3TcL/76kxTOy1//jqNHj9qKFy/umFeiRAkzLzFff/217dFHH7XlypXLjCtfvny2Dh062P78888E93Uel97es2dP877qe9q0aVMzdv27x40bZ15f37/SpUvbvvrqK5fnOXPmjO3ZZ58167u+nq7b+n7rsnzqqadsf//9d6Lb+c3e1yVLltjatWtn1h19H/T90O1eX+P9998321dqfBZNnjzZ/E36t+l433nnHbNNxN+e1fXr1219+/a1Pfjgg7YCBQrYwsPDzeP0s1LXBf0scBb/vT979qztueeeM8tIH1exYkXb4sWLk7RO3Ox5ndd7O/37GzVqZD6ndNnp+qDrxbfffpvgvs7bkC73gQMHOv4+/Q60/136vuu2r+9vkSJFbGPHjnV5nuQsn1t9D8b/3gNSA4G5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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "cm = confusion_matrix(y, y_pred)\n", "fig, ax = plt.subplots(figsize=(8, 6))\n", "sns.heatmap(cm, annot=True, fmt='d', cmap='Blues',\n", " xticklabels=CLASS_NAMES, yticklabels=CLASS_NAMES,\n", " linewidths=0.5, annot_kws={\"size\": 13})\n", "ax.set_title('Confusion Matrix - Klasifikasi Kematangan Tomat', \n", " fontsize=13, fontweight='bold')\n", "ax.set_ylabel('Aktual', fontsize=11)\n", "ax.set_xlabel('Prediksi', fontsize=11)\n", "plt.tight_layout()\n", "plt.savefig(\"confusion_matrix_eval.png\", dpi=150, bbox_inches='tight')\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "d6e5e4ab", "metadata": {}, "source": [ "## 5. Precision, Recall, F1 per Kelas" ] }, { "cell_type": "code", "execution_count": 17, "id": "ad9f3c4e", "metadata": {}, "outputs": [ { "data": { "image/png": "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Pw/DVfbdd9/l/btv3755P+7evXseKiy+C9XVtR1ri6HG1l133bxfxv4Zw8fF+k1rCLW6ln/OOefkzzSWEf+fffbZv+j7Wvt7+EvLldhH11tvvfz43nvvnYf8mt59fGrbMYZv69+/f96fY0i/3XffvfTll1/measPORbzDRw4sNSzZ8/8nmPeGMLwX//6V0XvD6C5ahX/NHbwB4D6dEwWtWVRS1hXj+8zgqi1jJrkuDY2an/5dZVbW1x55ZUNXkMNQMvhmm4AmqUYaip6AZ9RA3eIZtDRnDeaCgMATZNrugFoluKa6RldXJdc1zW0AEDToaYbAAAACuKabgAAACiImm4AAAAoiNANAAAABWnbXIdIGTFiRJp11llTq1atGnt1AAAAmMGUSqX07bffprnmmiu1bt26ZYXuCNy9e/du7NUAAABgBvfJJ5+keeaZp2WF7qjhLr+5zp07N/bqAAAAMIMZO3Zsrgwu59MWFbrLTcojcAvdAAAANJafu+RZR2oAAABQEKEbAAAACiJ0AwAAQEGEbgAAACiI0A0AAAAFEboBAACgIEI3AAAAFEToBgAAgIII3QAAAFAQoRsAAAAKInQDAABAQYRuAAAAKIjQDQAAAAURugEAAKAgQjcAAAAUROgGAACAggjdAAAAUBChGwAAAAoidAMAAEBBhG4AAAAoiNANAAAABRG6AQAAoCBCNwAAABRE6AYAAICCCN0AAABQEKEbAAAACiJ0AwAAQEGEbgAAACiI0A0AAAAFEboBAACgIEI3AAAAFEToBgAAgIII3QAAAFAQoRsAAAAKInQDAABAQYRuAAAAKIjQDQAAAAURugEAAKAgQjcAAAAUROgGAACAggjdAAAAUBChGwAAAAoidAMAAEBBhG4AAAAoiNANAAAABRG6AQAAoCBCNwAAABRE6AYAAICCCN0AAABQEKEbAAAACiJ0AwAAQEGEbgAAACiI0E2Lcv3116fll18+dejQIbVq1SqtscYaNR4fMWJE2nbbbdNss82WOnXqlFZfffX07LPP1pjnmWeeSauttlp+PObbbrvt0meffTbN1504cWI6/PDD0zzzzJNfe9FFF01XX3111eMffvhhXpeZZ545LbfccunVV1+teuzNN99MHTt2TE8++WSDbQdoanw3AWZsfgeYoZWaoW+++aYUqx7/Q3VHHHFEaYUVVigtvvjieR9ZffXVqx6bMmVKaamllsrTV1xxxdLmm2+e/5555plLI0aMyPP873//K80000x5+hZbbJHni7+XXXbZ/Pyp2W+//fJ8ffr0Ke244455mXH/rrvuyo/Hsjp16lTabbfdSnPMMUdpwIABVeu08sorl/bcc88m9UG+8847efv06NGj1LFjx9Kqq65aeuqpp6oev+6660rLLLNMfp/xfnbfffdpfh+HDx+et0ddt/JnFPPE37H9Y3u/8sorVc9/4403Sh06dCg98cQTBb9ziuK7CTBj8ztASzS9uVTopkU6/PDDfxK677zzzjytV69epYkTJ+Zpm2yySZ528MEH5/sHHnhgvh+BM0yYMKHUvXv3PO3uu++u87VGjRqVA2HM89prr+VpZ511VlVYD/379y+tv/76+e9DDjkkB8swbNiw0pxzzlkaM2ZMqamIdendu3de/zXWWKO0/fbbl9q0aZPXOU5K3HrrrfmxCOM77bRTafnll8/3N95446ku88svvyztv//+NW7dunXLz4vA3hxPTFA/vpsAMza/A8yIoVvz8mbk3XffTVtssUXq2bNnbvr829/+Nj399NM1mu0su+yyaZZZZkndu3dPe+yxRxo7dux0LTuaOM8000y5SXavXr1aZLPol156Kf+/1FJLpXbt2uW/V1xxxRqPlf+PJuqhffv2aZlllqnxWG2xHSZMmJC3xRJLLFFjubG9Jk+enJubP/LII2n77bdPV1xxRVpsscVyU/chQ4akc889N3Xp0iU1Ff/+97/TJ598kj/zBx98MP39739PG264Yfr+++/T6aefnm644YY836BBg9KVV16ZHnjggXz/rrvuSq+88kqdy+zWrVs6++yzq26xb3799dd5fzvwwAPzPG+99VZac80106WXXpp22mmnvF3DhRdemIYPH55OPfXUX20b8Ovy3QSYsfkdmH7yQPMkdDcT33zzTRo4cGC67bbbcoCL8B2BO6Z9+umnefof/vCHHFy22mqrNP/88+fwssMOO/zssn/44Ye0zTbbpEmTJv3ksUMOOSQ999xzedkfffRR2n333fP0aCURwSnC0aqrrpqag88//zz/Hyclysp/l6/Znp55Klnujz/+mL744ov017/+NQ0YMCDdcccdqU+fPvmz2WefffIJjTgJsMEGG6QFFlggfw6jRo1KjSlOHoTx48en119/PX355Zfp/fffz9NefvnlqsfffvvtfFIn9o+yeHx6nHnmmXkfijDfv3//PK05nZigYfluAszY/A5MH3mg+RK6m4kiah/LDjjggPTxxx/njsBqa0m1j+Ua/O+++65q2rfffpv/n3POOad7nkqW27Zt2zTHHHPkoP3YY4+lcePGpRdffDF98MEH6aGHHkrDhg3L2zU+x3vvvTeH3IMOOig1puhELk4GRA191PLH+pc/9/hRjPWLkwqPP/54DsLrrbfeT340p2XkyJF5/w2HHnpo1fTmdGKChuW7SWPWCp111llp8cUXz+Va586dc4uxa6+99hctM05AxnLiNzt+Q+M3tix+w6Nl2X//+9+C3jEtaV+Lzl7jdzZaMMZJ7/nmmy/tu++++bihJe1rfgemjzzQjJWaoRmxI7WHH344v+e4tvall14qffHFF6XFFlssT1tttdVKO+ywQ9XfsV0eeOCBqo6qrrjiiqku9+abb87zXHvttaUrr7wy/92zZ8+qx8vX2f7hD3/I1+DGdbaffvppqXPnzvm5zel6oTvuuKPq/ZWv6Y7rkGPaQQcdlO8fcMABU72mu9wp2ujRo0tvv/126aOPPqq6prt9+/Y1ruk+88wz8/3obKy2+Hzmnnvu0rnnnpvvx7XScZ13eXsvuuiipcb2448/lm644YbSUUcdla9PP/TQQ/P7iQ7VQnQ8F9OHDBmSr/FeZJFF8uOXXXbZzy47lhnzRod303LbbbeVZp111tInn3xSWmWVVfL15f/5z3/y9fFxnTnNk+8mTamPiptuuik/1qpVq9J2221X+t3vfld1/+WXX67XMkP05zH77LPnPipi+lZbbZWnjxs3rjT//POXTj755F91O9A897U4VunatWvV8UTsT7PMMku+H8crzXVf8ztQf/JA06MjtRZm0qRJuRCvq/fnhRdeOBfY5YK49u2kk06qc5nRW3QU5jvvvHO+X1fojnkiyEdBHgV+9Ci92Wab5bD63nvv5c7BolDfeuutSyNHjiw1tttvv700aNCgqt7L473E/egobfLkyaUll1wyT19ppZWqei+P9xYnEkIEvDjJULv38qWXXrqq9/LjjjvuJ4F+n332qeq9PF6v3Ht5rE9te++9dw6csT4htutss82WP4fokK0c+BtTnGwo+/7773PQjfczdOjQvC+W1z088sgj+bHWrVuXPvjggzpP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gIII3QAAAFAQoRsAAAAKInQDAABAQYRuAAAAKIjQDQAAAAURugEAAKAgQjcAAAAUROgGAACAggjdAAAAUBChGwAAAAoidAMAAEBBhG4AAAAoiNANAAAABRG6AQAAoCBCNwAAABRE6AYAAICCCN0AAABQEKEbAAAACiJ0AwAAQEGEbgAAACiI0A0AAAAFEboBAACgIEI3AAAAFEToBgAAgIII3QAAAFAQoRsAAAAKInQDAABAQYRuAAAAKIjQDQAAAAURugEAAKAgQjcAAAAUROgGAACAggjdAAAAUBChGwAAAAoidAMAAEBBhG4AAAAoiNANAAAABRG6AQAAoCBCNwAAABRE6AYAAICCCN0AAABQEKEbAAAACiJ0AwAAQEGEbgAAACiI0A0AAAAFEboBAACgIEI3AAAAFEToBgAAgIII3QAAAFAQoRsAAAAKInQDAABAQYRuAAAAKIjQDQAAAAURugEAAKAgQjcAAAAUROgGAACAggjdAAAAUBChGwAAAAoidAMAAEBBhG4AAAAoiNANAAAABRG6AQAAoCBCNwAAABRE6AYAAICCCN0AAABQEKEbAAAACiJ0AwAAQEGEbgAAACiI0A0AAAAFEboBAACguYTuyZMnp2OOOSb17ds3derUKS2wwALpL3/5SyqVSlXzxN/HHntsmnPOOfM8AwcOTO+9915DrwoAAAC0rNB96qmnpgsvvDCdf/756e233873TzvttHTeeedVzRP3zz333HTRRRelZ599Ns0888xpvfXWS+PHj2/o1QEAAIBG07ahF/jUU0+lTTbZJG2wwQb5fp8+fdL111+fnnvuuapa7rPPPjsdffTReb5w9dVXp549e6Y77rgjbbvttg29SgAAANAyQvfKK6+cLrnkkvTuu++mhRdeOL366qvpySefTGeeeWZ+fPjw4enzzz/PTcrLunTpklZYYYX09NNP1xm6J0yYkG9lY8eOzf9PmTIl35q6Vq0aew2an1Ky0SrVyjarWHMoP5oa5VnllGf13NeUaRVTptVjP3O4UTFlWj32M+VZiy3TpncdGzx0H3HEETkU9+vXL7Vp0yZf433iiSem7bffPj8egTtEzXZ1cb/8WG0nn3xyGjp06E+mjx49ulk0SV+oe2OvQfMztvP8jb0KzU7f9r0aexWanVGjRjX2KjQ7yrPKKc/qR5lWOWVa5ZRplVOmVU551nLLtG+//bZxQvdNN92Urr322nTdddelxRZbLL3yyivpgAMOSHPNNVcaNGhQvZY5ZMiQdNBBB1Xdj1Dfu3fv1L1799S5c+fU1L03urHXoPnpXPqgsVeh2Rk+m9P1lerRo0chn0VLpjyrnPKsfpRplVOmVU6ZVjllWuWUZy23TOvYsWPjhO5DDz0013aXm4kvscQS6aOPPsq11RG6e/X6v9q4kSNH5t7Ly+L+UkstVecyO3TokG+1tW7dOt+aumodtzOdWiUbreL9zDarWHMoP5oa5VnllGf13NeUaRVTptVjP3O4UTFlWj32M+VZiy3TpncdG/ydfP/99z958WhmXm7vHkOJRfB++OGHa9RcRy/mK620UkOvDgAAADSaBq/p3mijjfI13PPOO29uXv7yyy/nTtR22WWX/HirVq1yc/MTTjghLbTQQjmEx7je0fx80003bejVAQAAgJYTumM87gjRe++9d774PcL0nnvumY499tiqeQ477LA0bty4tMcee6QxY8akVVddNd1///3T3SYeAAAAZsjQPeuss+ZxuOM2NVHbffzxx+cbAAAAtFRN/+p0AAAAaKaEbgAAACiI0A0AAAAFEboBAACgIEI3AAAAFEToBgAAgIII3QAAAFAQoRsAAAAKInQDAACA0A0AAADNi5puAAAAKIjQDQAAAAURugEAAKAgQjcAAAAUROgGAACAggjdAAAAUBChGwAAAAoidAMAAEBBhG4AAAAoiNANAAAABRG6AQAAoCBCNwAAABRE6AYAAICCCN0AAABQEKEbAAAACiJ0AwAAQEGEbgAAACiI0A0AAAAFEboBAACgIEI3AAAAFEToBgAAgIII3QAAAFAQoRsAAAAKInQDAABAQYRuAAAAKIjQDQAAAAURugEAAKAgQjcAAAAUROgGAACAggjdAAAAUBChGwAAAAoidAMAAEBBhG4AAAAoiNANAAAABRG6AQAAoCBCNwAAABRE6AYAAICCCN0AAABQEKEbAAAACiJ0AwAAQEGEbgAAACiI0A0AAAAFEboBAACgIEI3AAAAFEToBgAAgIII3QAAAFAQoRsAAAAKInQDAABAQYRuAAAAKIjQDQAAAAURugEAAKAgQjcAAAAUROgGAACAggjdAAAAUBChGwAAAAoidAMAAEBBhG4AAAAQugEAAKB5UdMNAAAABRG6AQAAoCBCNwAAABRE6AYAAICCCN0AAABQEKEbAAAACiJ0AwAAQEGEbgAAACiI0A0AAAAFEboBAACgIEI3AAAANKfQ/emnn6Y//vGPafbZZ0+dOnVKSyyxRHrhhReqHi+VSunYY49Nc845Z3584MCB6b333itiVQAAAKDlhO6vv/46rbLKKqldu3bpvvvuS2+99VY644wz0myzzVY1z2mnnZbOPffcdNFFF6Vnn302zTzzzGm99dZL48ePb+jVAQAAgEbTtqEXeOqpp6bevXunK6+8smpa3759a9Ryn3322enoo49Om2yySZ529dVXp549e6Y77rgjbbvttg29SgAAANAyarrvuuuutNxyy6Wtttoq9ejRIy299NLp0ksvrXp8+PDh6fPPP89Nysu6dOmSVlhhhfT000839OoAAABAy6np/uCDD9KFF16YDjrooHTkkUem559/Pu23336pffv2adCgQTlwh6jZri7ulx+rbcKECflWNnbs2Pz/lClT8q2pa9Wqsdeg+SklG61SrWyzijWH8qOpUZ5VTnlWz31NmVYxZVo99jOHGxVTptVjP1OetdgybXrXsW0RLxw13SeddFK+HzXdb7zxRr5+O0J3fZx88slp6NChP5k+evToZnEd+ELdG3sNmp+xnedv7FVodvq279XYq9DsjBo1qrFXodlRnlVOeVY/yrTKKdMqp0yrnDKtcsqzllumffvtt40TuqNH8kUXXbTGtP79+6dbb701/92r1/8Fg5EjR+Z5y+L+UkstVecyhwwZkmvOq9d0x3Xj3bt3T507d05N3XujG3sNmp/OpQ8aexWaneGzOV1fqbgEhsoozyqnPKsfZVrllGmVU6ZVTplWOeVZyy3TOnbs2DihO3ouf+edd2pMe/fdd9N8881X1alaBO+HH364KmRHiI5ezP/0pz/VucwOHTrkW22tW7fOt6auVGrsNWh+WiUbrVIl26xizaH8aGqUZ5VTntVzX1OmVUyZVo/9zOFGxZRp9djPlGcttkyb3nVs8NB94IEHppVXXjk3L996663Tc889ly655JJ8C61atUoHHHBAOuGEE9JCCy2UQ/gxxxyT5pprrrTppps29OoAAABAo2nw0D1gwIB0++235ybhxx9/fA7VMUTY9ttvXzXPYYcdlsaNG5f22GOPNGbMmLTqqqum+++/f7qr5wEAAGCGDN1hww03zLepidruCORxAwAAgJaq6TeUBwAAgGZK6AYAAICCCN0AAABQEKEbAAAACiJ0AwAAQEGEbgAAACiI0A0AAAAFEboBAACgIEI3AAAAFEToBgAAgIII3QAAAFAQoRsAAAAKInQDAABAQYRuAAAAKIjQDQAAAAURugEAAKAgQjcAAAAUROgGAACAggjdAAAAUBChGwAAAAoidAMAAEBBhG4AAAAoiNANAAAABRG6AQAAoCBCNwAAABRE6AYAAICCCN0AAABQEKEbAAAACiJ0AwAAQEGEbgAAACiI0A0AAAAFEboBAACgIEI3AAAAFEToBgAAgIII3QAAAFAQoRsAAAAKInQDAABAQYRuAAAAKIjQDQAAAAURugEAAKAgQjcAAAAUROgGAACAggjdAAAAUBChGwAAAAoidAMAAEBBhG4AAAAoiNANAAAABRG6AQAAoCBCNwAAABRE6AYAAICCCN0AAABQEKEbAAAACiJ0AwAAQEGEbgAAACiI0A0AAAAFEboBAACgIEI3AAAAFEToBgAAgIII3QAAAFAQoRsAAAAKInQDAABAQYRuAAAAKIjQDQAAAAURugEAAKAgQjcAAAAUROgGAACAggjdAAAAUBChGwAAAAoidAMAAEBBhG4AAAAoiNANAAAABRG6AQAAoCBCNwAAABRE6AYAAICCCN0AAABQEKEbAAAACiJ0AwAAQEGEbgAAACiI0A0AAAAFEboBAACguYbuU045JbVq1SodcMABVdPGjx+fBg8enGafffY0yyyzpC222CKNHDmy6FUBAACAlhO6n3/++XTxxRenJZdcssb0Aw88MN19993p5ptvTo899lgaMWJE2nzzzYtcFQAAAGg5ofu7775L22+/fbr00kvTbLPNVjX9m2++SZdffnk688wz01prrZWWXXbZdOWVV6annnoqPfPMM0WtDgAAALSc0B3NxzfYYIM0cODAGtNffPHFNGnSpBrT+/Xrl+add9709NNPF7U6AAAA8KtrW8RCb7jhhvTSSy/l5uW1ff7556l9+/apa9euNab37NkzP1aXCRMm5FvZ2LFj8/9TpkzJt6auVavGXoPmp5RstEq1ss0q1hzKj6ZGeVY55Vk99zVlWsWUafXYzxxuVEyZVo/9THnWYsu06V3HBg/dn3zySdp///3Tgw8+mDp27Nggyzz55JPT0KFDfzJ99OjRuVO2pm6h7o29Bs3P2M7zN/YqNDt92/dq7FVodkaNGtXYq9DsKM8qpzyrH2Va5ZRplVOmVU6ZVjnlWcst07799tvGCd3RfDw20DLLLFM1bfLkyenxxx9P559/fnrggQfSxIkT05gxY2rUdkfv5b161R0ahgwZkg466KAaNd29e/dO3bt3T507d05N3XujG3sNmp/OpQ8aexWaneGzOV1fqR49ehTyWbRkyrPKKc/qR5lWOWVa5ZRplVOmVU551nLLtOmtZG7w0L322mun119/vca0nXfeOV+3ffjhh+ew3K5du/Twww/nocLCO++8kz7++OO00kor1bnMDh065FttrVu3zremrlRq7DVoflolG61SJdusYs2h/GhqlGeVU57Vc19TplVMmVaP/czhRsWUafXYz5RnLbZMm951bPDQPeuss6bFF1+8xrSZZ545j8ldnr7rrrvmmutu3brlmup99903B+4VV1yxoVcHAAAAWlZHaj/nrLPOymcFoqY7Okhbb7310gUXXNAYqwIAAADNO3Q/+uijP2n7PmzYsHwDAACAlqrpN5QHAACAZkroBgAAgIII3QAAAFAQoRsAAAAKInQDAABAQYRuAAAAKIjQDQAAAAURugEAAKAgQjcAAAAUROgGAACAggjdAAAAUBChGwAAAAoidAMAAEBBhG4AAAAoiNANAAAABRG6AQAAoCBCNwAAABRE6AYAAICCCN0AAABQEKEbAAAACiJ0AwAAQEGEbgAAACiI0A0AAAAFEboBAACgIEI3AAAAFEToBgAAgIII3QAAAFAQoRsAAAAKInQDAABAQYRuAAAAKIjQDQAAAAURugEAAKAgQjcAAAAUROgGAACAggjdAAAAUBChGwAAAAoidAMAAEBBhG4AAAAoiNANAAAABRG6AQAAoCBCNwAAABRE6AYAAICCCN0AAABQEKEbAAAACiJ0AwAAQEGEbgAAACiI0A0AAAAFEboBAACgIEI3AAAAFEToBgAAgIII3QAAAFAQoRsAAAAKInQDAABAQYRuAAAAKIjQDQAAAAURugEAAKAgQjcAAAAUROgGAACAggjdAAAAUBChGwAAAAoidAMAAEBBhG4AAAAoiNANAAAABRG6AQAAoCBCNwAAABRE6AYAAICCCN0AAABQEKEbAAAACiJ0AwAAQEGEbgAAACiI0A0AAAAFEboBAACgIEI3AAAAFETo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6Nmr6u+us3XLj8Vt/0OPSVtusHq68pLz08lnXpA6dOzYYOtd9v24cfn/oaecnZZYatka88X16QAAADMKobuF6Np1tnz7Oe3bt0+95+ubfvjh/4LxIv0WS3feekOdPY7PMmvn1KPnnOnlF5/N13yXvfzic7mp+tRE0/V43icff5g23HSrX/S+AAAAmjOhu5kYN+679PGH/9ejePjfJx+lt998PXXpOltuRl6XRx9+IPcq/vuNNk99+i6QSqVSevTh+9MTjzxYNSzZHwbtnq7926XpkH13TbvvfWC+vvvVl1/IobrvAgulnffYJw07+5TUe94+qd+iS6Tbb74uN0k/7eyLp7m+gw88PJ385yF5eTEM2sSJE9Obr72cvhk7Ju202+AG3joAAABNk9DdTLz52itp5+02rrp/2glH5/832WK7dNIZw+p8zgILLZI6duqUTj/xmPT5iE9zLfe8fRdIQ085J228+TZVTc+j1/K/nnRs2mmbjVLrNq1zuF56uf+7jvuPO++Zr+2OZXz55RdpgQUXSedfem2NnsvrsuW2O6aOnWZKV158XvrrycflXssXXmTR3OEaAADAjGKGCt2P73ZNasqmFp7LHay9+eFXFS0vaqeHnnz2z863SP/F0qXX3FrnY61bt057H3B4vtVl7t7zTnW9Ntxky3wDAACYUbVu7BUAAACAlkroBgAAgIII3QAAAFAQoRsAAAAK0mJDdwyPRfMUn1yrNKWxVwMAAOAXa3Ghu127dvn/77//vrFXhXqY8uOE9OOPU1Kr8WNtPwAAoNlrcUOGtWnTJnXt2jWNGjUq359ppplSq1atGnWdpvw4sVFfvzkF7jFffZGe/M83qd+PExp7dQAAAH6xFhe6Q69evfL/5eDd2EZ9qdZ9epqURw13BO77Xh6bduv+q3w0AAAAhWqRoTtqtuecc87Uo0ePNGnSpMZenXTIlf9s7FVo8uIK7m++n5wmTHItPgAA0HK0yNBdval53Brb59/82NirAAAAwIzUkdqwYcNSnz59UseOHdMKK6yQnnvuucZaFQAAAGg5ofvGG29MBx10UDruuOPSSy+9lH7zm9+k9dZbr8lcgw0AAADNNnSfeeaZaffdd08777xzWnTRRdNFF12Uexm/4oorGmN1AAAAoGVc0z1x4sT04osvpiFDhlRNa926dRo4cGB6+umn63zOhAkT8q3sm2++yf+PGTMmTZkSXXA1bVMm6b28UmMnTC7ks2jJJv/Q+J0GNjdRhlAZ5VnllGf1o0yrnDKtcsq0yinTKqc8a7ll2tixY/P/pdK0O4NuVfq5ORrYiBEj0txzz52eeuqptNJKK1VNP+yww9Jjjz2Wnn322Z88589//nMaOnTor7maAAAA8LM++eSTNM888zTv3sujVjyuAS+L2u2vvvoqzT777Hl4MPi1zmT17t07f6k6d+5sowPNmjINaEmUaTSGqL/+9ttv01xzzTXN+X710D3HHHPkYbxGjhxZY3rc79WrV53P6dChQ75V17Vr10LXE6YmArfQDbQUyjSgJVGm8Wvr0qVL0+tIrX379mnZZZdNDz/8cI2a67hfvbk5AAAANHeN0rw8mooPGjQoLbfccmn55ZdPZ599dho3blzuzRwAAABaikYJ3dtss00aPXp0OvbYY9Pnn3+ellpqqXT//fennj17NsbqwHSJSxxibPnalzoANEfKNKAlUabRlP3qvZcDAADAjOJXv6YbAAAAZhRCNwAAABRE6AYAAICCCN0wFa+88kr685//nL7//nvbCJhh3HHHHemCCy6o13MfffTR1KpVq/TCCy80+HoBxRgzZkw+3nnrrbeazSbu06dP2meffVJT5jiS6oRumEZhOXToUKEbmKH8ktANNM/QHcc7zSl0NweOI6lO6AYAAICCCN00azvttFNafPHF00MPPZSWXHLJ1KlTp7T66qunDz/8MH311Vdp6623Tp07d04LLLBAuvHGG6ue949//COts846qUePHvnxFVZYIY8VX3bVVVelnXfeOf/dvXv33FwymjKFzz77LO2yyy5p/vnnz6+30EILpSOPPDJNmDChxrrFc0477bTcZCvGoJ9jjjnyMseNG1djvieffDItvfTSqWPHjvk9PPjgg3ns+nhvwIylvmVauVyLsiyeE+XWn/70pxrlTbnpd5Qxf/jDH9Kss86a5ptvvlxOVX/9v/3tb+nNN9/M88atXBY9/fTTaeONN05zzTVXmnnmmXM5dc0119T5Pr7++uupvgbQsOL7uv7666fZZ589zTTTTGmRRRap8Z2L7+5aa62Vv7ddunTJ381Ro0blx6Js6du3b/57q622qvrex/QQxzZxjBPf4xgHu3///um6666rs9yKMiaOZ+J1ll9++fTiiy/WmO+bb75Jf/zjH3O5EMdfsdwzzjgjv15ZlFnRbDzeQ7yXOPbaa6+98nPrMmzYsLxu8b423XTTNHr06F+tvHUcSUVinG5orgYNGlSaffbZS0suuWTphhtuKN16662lueeeu7TyyiuXBg4cWDr++ONL//znP0tbbbVVqW3btqUPP/wwP++8884rnXPOOaX7778/P37ggQeWWrVqVXrkkUfy46NGjSodffTRMYZ9nufpp58uvfTSS/mx1157rXTwwQeXbr/99tKjjz5auuSSS0pzzTVXaaeddqqxbvHc3r17l/7whz+U7rvvvvx67du3Lx1++OFV84wYMaI088wzl37729+W7rzzztLVV19dWmCBBUpzzDFHfm/AjKW+ZdrNN99cat26dWnXXXfN5c0VV1xR6tGjR2mbbbapWnaUb1EuzT///KXjjjuu9OCDD5YGDx6cp8Vzwvvvv19af/318zxR7sUtpoXrr7++dMopp5T+8Y9/lB5++OG8Lu3atStdddVVFb0G0LD69u1bWnHFFfNxyb/+9a98XHLsscfmx5566ql87LHpppuW7r777lyuLLjggnn+MH78+NJtt92Wv6MnnXRS1fc+poeNN9641K1bt3wME2XPAQcckI+X7r333p+UW0sssUTp2muvLd1zzz357zgGmjhxYtV8m222WalLly6lCy64IJcjsU4xT/U4Esdfe+21Vy7T4hjrmmuuKfXr16+0xhpr1HjP8803X37uuuuum9/XlVdeWeratWuNMq+o8jY4jqRSQjfNWhSYUfi/8cYbNQrCKMCrh9uvv/661KZNm9LZZ5/9k2VMnjy5NGnSpFxwb7fddlXTowCP5YwePXqa6xDPjR+ZKJDHjRtXNT2eu/zyy/9kfSNUlx166KH5B2js2LFV05544on8XKEbZjz1KdOmTJmSD0Crl18hQm71ZZUDcZQ7ZfHcPn365LBefR0WW2yxaa5nPC/Kvj322KO00korVU2f3tcAGkYco8R37q677qrz8dVWWy2HyPgelr355pu5bIjgG4YPH56XEUG3ugjwMf2BBx6oMT2C7YABA6ZZbpXLgjimKb9m3I/KherHXwsttFCN0F1blDNPPvlknuedd96pmh5l3jzzzFN1ciDEib44ERjL/bWOIcvvw3EkP0fzcpq9aOq42GKLVd1feOGF8/8DBw6smta1a9fclOmTTz7J9//3v/+lQYMGpbnnnju1bds2tWvXLv3zn/9M77777s++XuTps88+Oy266KK5KVI8d/vtt08//vhj+uCDD2rMG02PqovnxGuXPf/882nNNdfMTa3KVl111dStW7d6bQtgxivTotz66KOPclPIKIfKt2gm2bp165/0JL7uuutW/R3NOqO5aPVyaWqiyfh+++2Xm3JGuRe3Sy65pM5ys76vAVQmmpTHd3LIkCH50pDq37MYfeXf//53bjY+efLkqrIhypTevXvnY5BpieOiOB6JpunVy5Y4tnn55ZfzMqdWbsXxTiivT/m14hKVsiifNtpoo5+8bly2Es3UZ5llllzOxHFRqF3WRBkXTd6rv+akSZOqms4XdQxZfl+OI6mE0E2zF4Vhde3bt5/q9PHjx6cpU6bkQj+upT7++OPTI488kn8Mfv/73+fHf04E7oMPPjhtsskm6c4770zPPfdcvqYo1H5+XetQ/drvuD48rr2sLQp3YMZUaZn2xRdf5PubbbZZVRiOW1wPGQfF1Q8Up7Wc6bn+8frrr0+HHHJIPhiPcjP6t6jrufV9DaAycVIrvo9xYmvw4ME5TC+33HLp8ccfzyfKogw48MADa5QNcfv4449/UjbUFmVLXNtc+7m77bZbDt9xDDOt73wof+9j3nhuXHs9reOd22+/Pe244475mvCbbropPfPMM3la9WVN72sWUd4Gx5HUR9t6PQuasffffz+foY1hcSI4l/3www/T9fybb745h/aTTz65alp9h9mYc8456+z0o5KztMCMrdwy5vzzz88dqdVVk/NLxcHmPffck84888y07777Vk2Pg0+gcUXtbBybRC3vU089lTsoixrkCNYRyuN+dDJWW3Tw+nNlS1QM3HvvvXU+XkkFQRzvxPpFh2jVg3ft4514H9FJ48UXX1w17bHHHktNieNI6kPoZoZTDtfls5khmmZGE6xys6JpnTGN51d/brj22mvrtS4DBgzIPyzffvttVRPzJ554Ip9ZBpge/fr1S/PMM0++vCVqun6pumqlo4VOBOzqZV+UW3fddZcPCZqIqEmOJtdHHHFErhwYOXJkWmmlldLbb7+dTjjhhKk+b2rHO9HEOnpBj8ejd+9fImrfQ7QQjJrsEGXK3XffXdgxVlEcR1IfQjcz7AFq/ChFs6vvvvsuHXfccfn67uqiqVaIpuNxhjiaai6xxBL5WqZzzjkn1ypFSP/73/+ez3rWRzT5uuCCC9IGG2yQDj300DRmzJg0dOjQfPY5rnUC+DlRkxU10DEMUAy3E+VJDNkTJxNjWJuTTjqpxgnFnxNl3xVXXJGbkseQiFEexbA9cZLwlFNOyTVf0RdG/B01VlrmQON57bXX8iVv22yzTR7aKmqSoyVefGfj/umnn56vyY7Ht9122zTbbLPl65Fj6MAYxnSNNdZIvXr1ys2p4zsfw4fFddIRsuN4J2rMf/e736XDDjssT4syJoYoi+Oeyy67bLrXM66bjktgol+IuNY8rkOPPiEiwFYfMixeM04e/uUvf8knDKKW/eGHH05NieNI6sNRPTOc+DG57bbb8v/Rucixxx6bjjrqqHx2uLroxCPG2I5QvfLKK1d19hHzx8Ft/B8/YDG+9rnnnluvdYnmVvfdd1+uMdpyyy3zD2UE+ug8pPZ1TwBTE2VZHJz+5z//Sdttt12u5Yrxb+PAu2fPnhVtuF133TUvL5qRR9COcjDE2LwLLrhg7jwoDpyjzCrXWAGNIwJz3OL4Ifqm2XPPPfN13XGdd5s2bfLxS/RhExUMEbJjPO/ozyYqEuL7HOIk/5VXXpmGDx+e1l577fy9HzFiRH7slltuyeNkRwVBLD/Kh1h27WOm6REn8zbccMPcL8QOO+yQ5p9//txXRPXjnVj/OIlw3nnnpc033zxfd157XPDG5jiS+mgVXZjX65lAId577718FjV+nOLgFgCgJVpttdXyyYHo1JaG4TiyadK8HBpZDPMRTbais6O4JjOagkYN+BZbbNHYqwYA0CBuvfXW3LlbXKoXTcyjBjv6sSn3Tk79OI5sHoRuaGQTJ05Mhx9+eO7wJMb9juur4hqsaGIOANASxHFNjMEdNbFx7BOt+uISvrp6Vv+los+eaTXmjX4pWgrHkc2D5uUAAECLERUY0xpqLK5fjz4v4NcidAMAAC3GO++8kzupnZq4rK/20GRQJKEbAAAACmLIMAAAACiI0A0AAAAFEboBAACgIEI3AAAAFEToBgAAgIII3QAAAFAQoRsAAAAKInQDAABAKsb/A1LFDfL6j/JgAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "prec_per = precision_score(y, y_pred, average=None)\n", "rec_per = recall_score(y, y_pred, average=None)\n", "f1_per = f1_score(y, y_pred, average=None)\n", "\n", "x = np.arange(len(CLASS_NAMES))\n", "w = 0.25\n", "fig, ax = plt.subplots(figsize=(10, 6))\n", "b1 = ax.bar(x-w, prec_per*100, w, label='Precision', color='#3266ad')\n", "b2 = ax.bar(x, rec_per*100, w, label='Recall', color='#e07b39')\n", "b3 = ax.bar(x+w, f1_per*100, w, label='F1-Score', color='#3d9b5c')\n", "for bars in [b1, b2, b3]:\n", " for bar in bars:\n", " h = bar.get_height()\n", " ax.text(bar.get_x()+bar.get_width()/2, h+1, \n", " f'{h:.1f}%', ha='center', fontsize=9, fontweight='bold')\n", "ax.set_title('Precision, Recall, F1-Score per Kelas', fontsize=13)\n", "ax.set_xticks(x)\n", "ax.set_xticklabels(CLASS_NAMES, fontsize=11)\n", "ax.set_ylim(0, 115)\n", "ax.legend()\n", "ax.grid(axis='y', alpha=0.3)\n", "plt.tight_layout()\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "d5c48796", "metadata": {}, "source": [ "## 6. Classification Report" ] }, { "cell_type": "code", "execution_count": 18, "id": "73c4eaa5", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " precision recall f1-score support\n", "\n", " matang 0.99 1.00 1.00 169\n", " mentah 1.00 0.98 0.99 136\n", "setengah_matang 0.99 1.00 0.99 170\n", "\n", " accuracy 0.99 475\n", " macro avg 0.99 0.99 0.99 475\n", " weighted avg 0.99 0.99 0.99 475\n", "\n" ] } ], "source": [ "print(classification_report(y, y_pred, target_names=CLASS_NAMES))" ] }, { "cell_type": "markdown", "id": "4484110c", "metadata": {}, "source": [ "## 7. Ringkasan Akhir" ] }, { "cell_type": "code", "execution_count": 19, "id": "a99ff51e", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Kelas Benar Total Akurasi\n", "----------------------------------------------\n", "matang 169 169 100.0%\n", "mentah 133 136 97.8%\n", "setengah_matang 170 170 100.0%\n", "\n", "Akurasi keseluruhan : 99.37%\n", "Precision weighted : 99.37%\n", "Recall weighted : 99.37%\n", "F1-Score weighted : 99.37%\n" ] } ], "source": [ "print(f\"{'Kelas':<22} {'Benar':>6} {'Total':>6} {'Akurasi':>10}\")\n", "print(\"-\" * 46)\n", "for i, cls in enumerate(CLASS_NAMES):\n", " total = int(np.sum(y == i))\n", " benar = int(np.sum((y == i) & (y_pred == i)))\n", " print(f\"{cls:<22} {benar:>6} {total:>6} {benar/total*100:>9.1f}%\")\n", "print(f\"\\nAkurasi keseluruhan : {acc*100:.2f}%\")\n", "print(f\"Precision weighted : {prec*100:.2f}%\")\n", "print(f\"Recall weighted : {rec*100:.2f}%\")\n", "print(f\"F1-Score weighted : {f1*100:.2f}%\")" ] }, { "cell_type": "code", "execution_count": null, "id": "42bead5c", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.13.3" } }, "nbformat": 4, "nbformat_minor": 5 }