TIF_E41202334/Crop_Backpropagation.ipynb

3562 lines
220 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "Bzr_4rf-KvdO"
},
"source": [
"# Data Collection & Data Understanding"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "IA3vunaUkl7h"
},
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import seaborn as sns\n",
"import matplotlib.pyplot as plt\n",
"from sklearn.model_selection import train_test_split\n",
"from sklearn.metrics import accuracy_score, precision_score, recall_score, classification_report, confusion_matrix, f1_score"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"background_save": true,
"base_uri": "https://localhost:8080/",
"height": 424
},
"id": "KKAbPSUGkl7p",
"outputId": "edf69254-6d05-40be-8035-de4bb5c1080f"
},
"outputs": [
{
"data": {
"application/vnd.google.colaboratory.intrinsic+json": {
"summary": "{\n \"name\": \"df\",\n \"rows\": 150,\n \"fields\": [\n {\n \"column\": \"mfcc_1\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 36.276014922615474,\n \"min\": -28.16607541028273,\n \"max\": 134.00756340540602,\n \"num_unique_values\": 148,\n \"samples\": [\n 36.08258057714812,\n 58.86680953129214,\n -3.523882247385767\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"mfcc_2\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 25.55141187112381,\n \"min\": -68.12144268080341,\n \"max\": 34.202640399438096,\n \"num_unique_values\": 148,\n \"samples\": [\n 23.939076705384803,\n 21.946738597467206,\n 13.0356526884146\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"mfcc_3\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 16.607602505135112,\n \"min\": -35.34655184816533,\n \"max\": 38.62011424617032,\n \"num_unique_values\": 148,\n \"samples\": [\n 13.91699151797878,\n -8.389756054170379,\n -1.8076506613349623\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"mfcc_4\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 12.248647405224922,\n \"min\": -37.65939195051028,\n \"max\": 16.511813215011305,\n \"num_unique_values\": 148,\n \"samples\": [\n 11.817977912406883,\n -25.196198956208004,\n -1.877552087075581\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"mfcc_5\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 14.67376981879269,\n \"min\": -25.168957020117585,\n \"max\": 33.86979700528147,\n \"num_unique_values\": 148,\n \"samples\": [\n -9.159842263653752,\n 12.502871968905891,\n -5.269233643564018\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"mfcc_6\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 10.967088795363342,\n \"min\": -37.11021563514957,\n \"max\": 22.823063964431544,\n \"num_unique_values\": 148,\n \"samples\": [\n -11.37754250437596,\n -21.623600445733462,\n -7.599002274584097\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"mfcc_7\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 7.156816371373767,\n \"min\": -18.00557350489408,\n \"max\": 26.58538472976201,\n \"num_unique_values\": 148,\n \"samples\": [\n -6.540024131817128,\n -2.978011309692604,\n -3.908204318319117\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"mfcc_8\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 7.3954280048501255,\n \"min\": -19.42019336425255,\n \"max\": 11.666184384702827,\n \"num_unique_values\": 148,\n \"samples\": [\n -8.77716113407432,\n -9.47772235720944,\n -6.146912684052977\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"mfcc_9\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 8.925604847630165,\n \"min\": -16.537194540172763,\n \"max\": 16.626586628222096,\n \"num_unique_values\": 148,\n \"samples\": [\n -5.5096426829032765,\n -4.192069878917911,\n 0.0969209496106391\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"mfcc_10\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 5.736041581214664,\n \"min\": -22.006870967705165,\n \"max\": 5.341944901286143,\n \"num_unique_values\": 148,\n \"samples\": [\n -14.888090524599049,\n -2.679905652845484,\n -4.124536203962681\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"mfcc_11\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 7.964057207796632,\n \"min\": -15.97644564504034,\n \"max\": 14.539281254023074,\n \"num_unique_values\": 148,\n \"samples\": [\n -8.107532163193822,\n -10.48949586980253,\n -2.566518390687336\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"mfcc_12\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 6.866482357947159,\n \"min\": -21.68206080071003,\n \"max\": 8.456266425271922,\n \"num_unique_values\": 148,\n \"samples\": [\n -5.797938428082079,\n -2.674145185062222,\n -5.316564560856999\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"target\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 5,\n \"samples\": [\n \"Tanti\",\n \"Random\",\n \"Vasyilla\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}",
"type": "dataframe",
"variable_name": "df"
},
"text/html": [
"\n",
" <div id=\"df-c97b443d-34fc-424d-9a33-aa4b70ed75ec\" class=\"colab-df-container\">\n",
" <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>mfcc_1</th>\n",
" <th>mfcc_2</th>\n",
" <th>mfcc_3</th>\n",
" <th>mfcc_4</th>\n",
" <th>mfcc_5</th>\n",
" <th>mfcc_6</th>\n",
" <th>mfcc_7</th>\n",
" <th>mfcc_8</th>\n",
" <th>mfcc_9</th>\n",
" <th>mfcc_10</th>\n",
" <th>mfcc_11</th>\n",
" <th>mfcc_12</th>\n",
" <th>target</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>134.007563</td>\n",
" <td>-10.597640</td>\n",
" <td>7.266465</td>\n",
" <td>-3.754714</td>\n",
" <td>-13.808333</td>\n",
" <td>2.155736</td>\n",
" <td>-12.878377</td>\n",
" <td>-4.975601</td>\n",
" <td>6.321278</td>\n",
" <td>-2.777375</td>\n",
" <td>-6.506576</td>\n",
" <td>-1.876924</td>\n",
" <td>Hilmi</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>50.750191</td>\n",
" <td>-5.598916</td>\n",
" <td>32.949004</td>\n",
" <td>-22.501260</td>\n",
" <td>14.779131</td>\n",
" <td>-19.538301</td>\n",
" <td>7.961897</td>\n",
" <td>-11.957439</td>\n",
" <td>7.594936</td>\n",
" <td>-14.929685</td>\n",
" <td>5.006317</td>\n",
" <td>-1.295943</td>\n",
" <td>Hilmi</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>122.293842</td>\n",
" <td>-12.814458</td>\n",
" <td>12.493625</td>\n",
" <td>-10.989077</td>\n",
" <td>-15.963840</td>\n",
" <td>1.330859</td>\n",
" <td>-17.650124</td>\n",
" <td>-3.014083</td>\n",
" <td>3.925209</td>\n",
" <td>-6.664020</td>\n",
" <td>-1.170681</td>\n",
" <td>-0.027291</td>\n",
" <td>Hilmi</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>126.803849</td>\n",
" <td>-0.053941</td>\n",
" <td>8.270297</td>\n",
" <td>-6.800313</td>\n",
" <td>-13.392560</td>\n",
" <td>-0.899367</td>\n",
" <td>-14.874580</td>\n",
" <td>0.227556</td>\n",
" <td>7.045879</td>\n",
" <td>-7.464138</td>\n",
" <td>-5.668817</td>\n",
" <td>-0.148281</td>\n",
" <td>Hilmi</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>10.468602</td>\n",
" <td>9.117828</td>\n",
" <td>-8.683499</td>\n",
" <td>-1.466168</td>\n",
" <td>24.753077</td>\n",
" <td>-21.531051</td>\n",
" <td>2.124193</td>\n",
" <td>-6.581121</td>\n",
" <td>11.937312</td>\n",
" <td>-18.942954</td>\n",
" <td>5.763798</td>\n",
" <td>0.569468</td>\n",
" <td>Hilmi</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>145</th>\n",
" <td>36.427943</td>\n",
" <td>25.707284</td>\n",
" <td>8.212668</td>\n",
" <td>10.450583</td>\n",
" <td>-5.248485</td>\n",
" <td>-11.510404</td>\n",
" <td>-6.744978</td>\n",
" <td>-9.246621</td>\n",
" <td>-3.982937</td>\n",
" <td>-10.705474</td>\n",
" <td>-6.795224</td>\n",
" <td>-6.532252</td>\n",
" <td>Random</td>\n",
" </tr>\n",
" <tr>\n",
" <th>146</th>\n",
" <td>43.954271</td>\n",
" <td>6.456048</td>\n",
" <td>2.131374</td>\n",
" <td>-9.353882</td>\n",
" <td>-17.369689</td>\n",
" <td>-7.557169</td>\n",
" <td>-15.326618</td>\n",
" <td>-16.521912</td>\n",
" <td>1.466365</td>\n",
" <td>-6.723767</td>\n",
" <td>1.931086</td>\n",
" <td>2.092220</td>\n",
" <td>Random</td>\n",
" </tr>\n",
" <tr>\n",
" <th>147</th>\n",
" <td>55.782108</td>\n",
" <td>26.974924</td>\n",
" <td>-5.329280</td>\n",
" <td>-1.423440</td>\n",
" <td>-9.777956</td>\n",
" <td>-8.758294</td>\n",
" <td>-1.948076</td>\n",
" <td>-6.980490</td>\n",
" <td>-0.893085</td>\n",
" <td>-4.223947</td>\n",
" <td>-4.055362</td>\n",
" <td>-5.809257</td>\n",
" <td>Random</td>\n",
" </tr>\n",
" <tr>\n",
" <th>148</th>\n",
" <td>26.584968</td>\n",
" <td>-8.043035</td>\n",
" <td>-4.178721</td>\n",
" <td>-0.592769</td>\n",
" <td>-15.964644</td>\n",
" <td>-9.010896</td>\n",
" <td>-4.953900</td>\n",
" <td>-11.460907</td>\n",
" <td>-0.344327</td>\n",
" <td>-4.228080</td>\n",
" <td>-1.677582</td>\n",
" <td>-2.752977</td>\n",
" <td>Random</td>\n",
" </tr>\n",
" <tr>\n",
" <th>149</th>\n",
" <td>19.589333</td>\n",
" <td>9.885163</td>\n",
" <td>-20.071891</td>\n",
" <td>-13.235444</td>\n",
" <td>-15.691194</td>\n",
" <td>-10.111671</td>\n",
" <td>2.390462</td>\n",
" <td>-5.974159</td>\n",
" <td>-0.621773</td>\n",
" <td>-2.311574</td>\n",
" <td>4.188963</td>\n",
" <td>-0.232814</td>\n",
" <td>Random</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>150 rows × 13 columns</p>\n",
"</div>\n",
" <div class=\"colab-df-buttons\">\n",
"\n",
" <div class=\"colab-df-container\">\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-c97b443d-34fc-424d-9a33-aa4b70ed75ec')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
"\n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
" <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
" </svg>\n",
" </button>\n",
"\n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" .colab-df-buttons div {\n",
" margin-bottom: 4px;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-c97b443d-34fc-424d-9a33-aa4b70ed75ec button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-c97b443d-34fc-424d-9a33-aa4b70ed75ec');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
"\n",
"\n",
"<div id=\"df-b8fd3650-c403-48fb-a337-44a091273621\">\n",
" <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-b8fd3650-c403-48fb-a337-44a091273621')\"\n",
" title=\"Suggest charts\"\n",
" style=\"display:none;\">\n",
"\n",
"<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <g>\n",
" <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
" </g>\n",
"</svg>\n",
" </button>\n",
"\n",
"<style>\n",
" .colab-df-quickchart {\n",
" --bg-color: #E8F0FE;\n",
" --fill-color: #1967D2;\n",
" --hover-bg-color: #E2EBFA;\n",
" --hover-fill-color: #174EA6;\n",
" --disabled-fill-color: #AAA;\n",
" --disabled-bg-color: #DDD;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-quickchart {\n",
" --bg-color: #3B4455;\n",
" --fill-color: #D2E3FC;\n",
" --hover-bg-color: #434B5C;\n",
" --hover-fill-color: #FFFFFF;\n",
" --disabled-bg-color: #3B4455;\n",
" --disabled-fill-color: #666;\n",
" }\n",
"\n",
" .colab-df-quickchart {\n",
" background-color: var(--bg-color);\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: var(--fill-color);\n",
" height: 32px;\n",
" padding: 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-quickchart:hover {\n",
" background-color: var(--hover-bg-color);\n",
" box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: var(--button-hover-fill-color);\n",
" }\n",
"\n",
" .colab-df-quickchart-complete:disabled,\n",
" .colab-df-quickchart-complete:disabled:hover {\n",
" background-color: var(--disabled-bg-color);\n",
" fill: var(--disabled-fill-color);\n",
" box-shadow: none;\n",
" }\n",
"\n",
" .colab-df-spinner {\n",
" border: 2px solid var(--fill-color);\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" animation:\n",
" spin 1s steps(1) infinite;\n",
" }\n",
"\n",
" @keyframes spin {\n",
" 0% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" border-left-color: var(--fill-color);\n",
" }\n",
" 20% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 30% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 40% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 60% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 80% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" 90% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" }\n",
"</style>\n",
"\n",
" <script>\n",
" async function quickchart(key) {\n",
" const quickchartButtonEl =\n",
" document.querySelector('#' + key + ' button');\n",
" quickchartButtonEl.disabled = true; // To prevent multiple clicks.\n",
" quickchartButtonEl.classList.add('colab-df-spinner');\n",
" try {\n",
" const charts = await google.colab.kernel.invokeFunction(\n",
" 'suggestCharts', [key], {});\n",
" } catch (error) {\n",
" console.error('Error during call to suggestCharts:', error);\n",
" }\n",
" quickchartButtonEl.classList.remove('colab-df-spinner');\n",
" quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
" }\n",
" (() => {\n",
" let quickchartButtonEl =\n",
" document.querySelector('#df-b8fd3650-c403-48fb-a337-44a091273621 button');\n",
" quickchartButtonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
" })();\n",
" </script>\n",
"</div>\n",
" </div>\n",
" </div>\n"
],
"text/plain": [
" mfcc_1 mfcc_2 mfcc_3 mfcc_4 mfcc_5 mfcc_6 \\\n",
"0 134.007563 -10.597640 7.266465 -3.754714 -13.808333 2.155736 \n",
"1 50.750191 -5.598916 32.949004 -22.501260 14.779131 -19.538301 \n",
"2 122.293842 -12.814458 12.493625 -10.989077 -15.963840 1.330859 \n",
"3 126.803849 -0.053941 8.270297 -6.800313 -13.392560 -0.899367 \n",
"4 10.468602 9.117828 -8.683499 -1.466168 24.753077 -21.531051 \n",
".. ... ... ... ... ... ... \n",
"145 36.427943 25.707284 8.212668 10.450583 -5.248485 -11.510404 \n",
"146 43.954271 6.456048 2.131374 -9.353882 -17.369689 -7.557169 \n",
"147 55.782108 26.974924 -5.329280 -1.423440 -9.777956 -8.758294 \n",
"148 26.584968 -8.043035 -4.178721 -0.592769 -15.964644 -9.010896 \n",
"149 19.589333 9.885163 -20.071891 -13.235444 -15.691194 -10.111671 \n",
"\n",
" mfcc_7 mfcc_8 mfcc_9 mfcc_10 mfcc_11 mfcc_12 target \n",
"0 -12.878377 -4.975601 6.321278 -2.777375 -6.506576 -1.876924 Hilmi \n",
"1 7.961897 -11.957439 7.594936 -14.929685 5.006317 -1.295943 Hilmi \n",
"2 -17.650124 -3.014083 3.925209 -6.664020 -1.170681 -0.027291 Hilmi \n",
"3 -14.874580 0.227556 7.045879 -7.464138 -5.668817 -0.148281 Hilmi \n",
"4 2.124193 -6.581121 11.937312 -18.942954 5.763798 0.569468 Hilmi \n",
".. ... ... ... ... ... ... ... \n",
"145 -6.744978 -9.246621 -3.982937 -10.705474 -6.795224 -6.532252 Random \n",
"146 -15.326618 -16.521912 1.466365 -6.723767 1.931086 2.092220 Random \n",
"147 -1.948076 -6.980490 -0.893085 -4.223947 -4.055362 -5.809257 Random \n",
"148 -4.953900 -11.460907 -0.344327 -4.228080 -1.677582 -2.752977 Random \n",
"149 2.390462 -5.974159 -0.621773 -2.311574 4.188963 -0.232814 Random \n",
"\n",
"[150 rows x 13 columns]"
]
},
"execution_count": 49,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.read_csv('/content/drive/MyDrive/REVISI SKRIPSI/dataset_pertama.csv')\n",
"df"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"background_save": true,
"base_uri": "https://localhost:8080/"
},
"id": "pEq1S0fvMhNC",
"outputId": "ca0ddc40-512c-4f16-aa7f-90105c4523a9"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"<class 'pandas.core.frame.DataFrame'>\n",
"RangeIndex: 150 entries, 0 to 149\n",
"Data columns (total 13 columns):\n",
" # Column Non-Null Count Dtype \n",
"--- ------ -------------- ----- \n",
" 0 mfcc_1 150 non-null float64\n",
" 1 mfcc_2 150 non-null float64\n",
" 2 mfcc_3 150 non-null float64\n",
" 3 mfcc_4 150 non-null float64\n",
" 4 mfcc_5 150 non-null float64\n",
" 5 mfcc_6 150 non-null float64\n",
" 6 mfcc_7 150 non-null float64\n",
" 7 mfcc_8 150 non-null float64\n",
" 8 mfcc_9 150 non-null float64\n",
" 9 mfcc_10 150 non-null float64\n",
" 10 mfcc_11 150 non-null float64\n",
" 11 mfcc_12 150 non-null float64\n",
" 12 target 150 non-null object \n",
"dtypes: float64(12), object(1)\n",
"memory usage: 15.4+ KB\n"
]
}
],
"source": [
"df.info()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"background_save": true,
"base_uri": "https://localhost:8080/",
"height": 300
},
"id": "sfJWMIBtMpnC",
"outputId": "9c7cd929-0dde-47a7-aaac-a056830ce72e"
},
"outputs": [
{
"data": {
"application/vnd.google.colaboratory.intrinsic+json": {
"summary": "{\n \"name\": \"df\",\n \"rows\": 8,\n \"fields\": [\n {\n \"column\": \"mfcc_1\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 57.54294921506547,\n \"min\": -28.16607541028273,\n \"max\": 150.0,\n \"num_unique_values\": 8,\n \"samples\": [\n 52.92849559071616,\n 52.67909415139298,\n 150.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"mfcc_2\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 63.40642771663973,\n \"min\": -68.12144268080341,\n \"max\": 150.0,\n \"num_unique_values\": 8,\n \"samples\": [\n -6.307195613479998,\n 0.6106925847553657,\n 150.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"mfcc_3\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 58.28185810277617,\n \"min\": -35.34655184816533,\n \"max\": 150.0,\n \"num_unique_values\": 8,\n \"samples\": [\n -7.113904243435991,\n -8.825214761246645,\n 150.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"mfcc_4\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 57.62183217405129,\n \"min\": -37.65939195051028,\n \"max\": 150.0,\n \"num_unique_values\": 8,\n \"samples\": [\n -8.56453359187676,\n -6.867867350377988,\n 150.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"mfcc_5\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 55.07233923831515,\n \"min\": -25.168957020117585,\n \"max\": 150.0,\n \"num_unique_values\": 8,\n \"samples\": [\n -0.9577231590327248,\n -0.1339447985360342,\n 150.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"mfcc_6\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 58.48142309958314,\n \"min\": -37.11021563514957,\n \"max\": 150.0,\n \"num_unique_values\": 8,\n \"samples\": [\n -10.869185206092027,\n -11.802906445496959,\n 150.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"mfcc_7\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 54.47579295130784,\n \"min\": -18.00557350489408,\n \"max\": 150.0,\n \"num_unique_values\": 8,\n \"samples\": [\n -3.140169897880235,\n -3.564955884869387,\n 150.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"mfcc_8\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 54.869632735816396,\n \"min\": -19.42019336425255,\n \"max\": 150.0,\n \"num_unique_values\": 8,\n \"samples\": [\n -4.324533343488815,\n -6.129346251905641,\n 150.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"mfcc_9\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 53.67205279983795,\n \"min\": -16.537194540172763,\n \"max\": 150.0,\n \"num_unique_values\": 8,\n \"samples\": [\n -0.8533399931483685,\n -0.91361396963881,\n 150.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"mfcc_10\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 56.25721142309399,\n \"min\": -22.006870967705165,\n \"max\": 150.0,\n \"num_unique_values\": 8,\n \"samples\": [\n -9.213072109360212,\n -10.193841663943422,\n 150.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"mfcc_11\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 53.80363736760405,\n \"min\": -15.97644564504034,\n \"max\": 150.0,\n \"num_unique_values\": 8,\n \"samples\": [\n -0.8568085259266088,\n -1.679220197784177,\n 150.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"mfcc_12\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 54.705272151561935,\n \"min\": -21.68206080071003,\n \"max\": 150.0,\n \"num_unique_values\": 8,\n \"samples\": [\n -4.006372983455339,\n -2.0080499610978477,\n 150.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}",
"type": "dataframe"
},
"text/html": [
"\n",
" <div id=\"df-20220ebf-55fa-4939-ad4f-e258fb189a5d\" class=\"colab-df-container\">\n",
" <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>mfcc_1</th>\n",
" <th>mfcc_2</th>\n",
" <th>mfcc_3</th>\n",
" <th>mfcc_4</th>\n",
" <th>mfcc_5</th>\n",
" <th>mfcc_6</th>\n",
" <th>mfcc_7</th>\n",
" <th>mfcc_8</th>\n",
" <th>mfcc_9</th>\n",
" <th>mfcc_10</th>\n",
" <th>mfcc_11</th>\n",
" <th>mfcc_12</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>count</th>\n",
" <td>150.000000</td>\n",
" <td>150.000000</td>\n",
" <td>150.000000</td>\n",
" <td>150.000000</td>\n",
" <td>150.000000</td>\n",
" <td>150.000000</td>\n",
" <td>150.000000</td>\n",
" <td>150.000000</td>\n",
" <td>150.000000</td>\n",
" <td>150.000000</td>\n",
" <td>150.000000</td>\n",
" <td>150.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mean</th>\n",
" <td>52.928496</td>\n",
" <td>-6.307196</td>\n",
" <td>-7.113904</td>\n",
" <td>-8.564534</td>\n",
" <td>-0.957723</td>\n",
" <td>-10.869185</td>\n",
" <td>-3.140170</td>\n",
" <td>-4.324533</td>\n",
" <td>-0.853340</td>\n",
" <td>-9.213072</td>\n",
" <td>-0.856809</td>\n",
" <td>-4.006373</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td>36.276015</td>\n",
" <td>25.551412</td>\n",
" <td>16.607603</td>\n",
" <td>12.248647</td>\n",
" <td>14.673770</td>\n",
" <td>10.967089</td>\n",
" <td>7.156816</td>\n",
" <td>7.395428</td>\n",
" <td>8.925605</td>\n",
" <td>5.736042</td>\n",
" <td>7.964057</td>\n",
" <td>6.866482</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>-28.166075</td>\n",
" <td>-68.121443</td>\n",
" <td>-35.346552</td>\n",
" <td>-37.659392</td>\n",
" <td>-25.168957</td>\n",
" <td>-37.110216</td>\n",
" <td>-18.005574</td>\n",
" <td>-19.420193</td>\n",
" <td>-16.537195</td>\n",
" <td>-22.006871</td>\n",
" <td>-15.976446</td>\n",
" <td>-21.682061</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>27.083477</td>\n",
" <td>-28.192809</td>\n",
" <td>-20.513877</td>\n",
" <td>-16.970205</td>\n",
" <td>-14.360503</td>\n",
" <td>-19.147536</td>\n",
" <td>-8.061160</td>\n",
" <td>-9.374177</td>\n",
" <td>-7.514854</td>\n",
" <td>-13.849136</td>\n",
" <td>-8.240238</td>\n",
" <td>-5.374539</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>52.679094</td>\n",
" <td>0.610693</td>\n",
" <td>-8.825215</td>\n",
" <td>-6.867867</td>\n",
" <td>-0.133945</td>\n",
" <td>-11.802906</td>\n",
" <td>-3.564956</td>\n",
" <td>-6.129346</td>\n",
" <td>-0.913614</td>\n",
" <td>-10.193842</td>\n",
" <td>-1.679220</td>\n",
" <td>-2.008050</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>70.328345</td>\n",
" <td>13.607770</td>\n",
" <td>1.999736</td>\n",
" <td>1.168449</td>\n",
" <td>12.395716</td>\n",
" <td>-5.553877</td>\n",
" <td>1.296588</td>\n",
" <td>0.978148</td>\n",
" <td>7.045267</td>\n",
" <td>-4.224980</td>\n",
" <td>5.814857</td>\n",
" <td>0.083519</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>134.007563</td>\n",
" <td>34.202640</td>\n",
" <td>38.620114</td>\n",
" <td>16.511813</td>\n",
" <td>33.869797</td>\n",
" <td>22.823064</td>\n",
" <td>26.585385</td>\n",
" <td>11.666184</td>\n",
" <td>16.626587</td>\n",
" <td>5.341945</td>\n",
" <td>14.539281</td>\n",
" <td>8.456266</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
" <div class=\"colab-df-buttons\">\n",
"\n",
" <div class=\"colab-df-container\">\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-20220ebf-55fa-4939-ad4f-e258fb189a5d')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
"\n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
" <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
" </svg>\n",
" </button>\n",
"\n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" .colab-df-buttons div {\n",
" margin-bottom: 4px;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-20220ebf-55fa-4939-ad4f-e258fb189a5d button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-20220ebf-55fa-4939-ad4f-e258fb189a5d');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
"\n",
"\n",
"<div id=\"df-9c3e3910-8fbe-4b28-9924-cb9a60383b99\">\n",
" <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-9c3e3910-8fbe-4b28-9924-cb9a60383b99')\"\n",
" title=\"Suggest charts\"\n",
" style=\"display:none;\">\n",
"\n",
"<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <g>\n",
" <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
" </g>\n",
"</svg>\n",
" </button>\n",
"\n",
"<style>\n",
" .colab-df-quickchart {\n",
" --bg-color: #E8F0FE;\n",
" --fill-color: #1967D2;\n",
" --hover-bg-color: #E2EBFA;\n",
" --hover-fill-color: #174EA6;\n",
" --disabled-fill-color: #AAA;\n",
" --disabled-bg-color: #DDD;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-quickchart {\n",
" --bg-color: #3B4455;\n",
" --fill-color: #D2E3FC;\n",
" --hover-bg-color: #434B5C;\n",
" --hover-fill-color: #FFFFFF;\n",
" --disabled-bg-color: #3B4455;\n",
" --disabled-fill-color: #666;\n",
" }\n",
"\n",
" .colab-df-quickchart {\n",
" background-color: var(--bg-color);\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: var(--fill-color);\n",
" height: 32px;\n",
" padding: 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-quickchart:hover {\n",
" background-color: var(--hover-bg-color);\n",
" box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: var(--button-hover-fill-color);\n",
" }\n",
"\n",
" .colab-df-quickchart-complete:disabled,\n",
" .colab-df-quickchart-complete:disabled:hover {\n",
" background-color: var(--disabled-bg-color);\n",
" fill: var(--disabled-fill-color);\n",
" box-shadow: none;\n",
" }\n",
"\n",
" .colab-df-spinner {\n",
" border: 2px solid var(--fill-color);\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" animation:\n",
" spin 1s steps(1) infinite;\n",
" }\n",
"\n",
" @keyframes spin {\n",
" 0% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" border-left-color: var(--fill-color);\n",
" }\n",
" 20% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 30% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 40% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 60% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 80% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" 90% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" }\n",
"</style>\n",
"\n",
" <script>\n",
" async function quickchart(key) {\n",
" const quickchartButtonEl =\n",
" document.querySelector('#' + key + ' button');\n",
" quickchartButtonEl.disabled = true; // To prevent multiple clicks.\n",
" quickchartButtonEl.classList.add('colab-df-spinner');\n",
" try {\n",
" const charts = await google.colab.kernel.invokeFunction(\n",
" 'suggestCharts', [key], {});\n",
" } catch (error) {\n",
" console.error('Error during call to suggestCharts:', error);\n",
" }\n",
" quickchartButtonEl.classList.remove('colab-df-spinner');\n",
" quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
" }\n",
" (() => {\n",
" let quickchartButtonEl =\n",
" document.querySelector('#df-9c3e3910-8fbe-4b28-9924-cb9a60383b99 button');\n",
" quickchartButtonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
" })();\n",
" </script>\n",
"</div>\n",
" </div>\n",
" </div>\n"
],
"text/plain": [
" mfcc_1 mfcc_2 mfcc_3 mfcc_4 mfcc_5 mfcc_6 \\\n",
"count 150.000000 150.000000 150.000000 150.000000 150.000000 150.000000 \n",
"mean 52.928496 -6.307196 -7.113904 -8.564534 -0.957723 -10.869185 \n",
"std 36.276015 25.551412 16.607603 12.248647 14.673770 10.967089 \n",
"min -28.166075 -68.121443 -35.346552 -37.659392 -25.168957 -37.110216 \n",
"25% 27.083477 -28.192809 -20.513877 -16.970205 -14.360503 -19.147536 \n",
"50% 52.679094 0.610693 -8.825215 -6.867867 -0.133945 -11.802906 \n",
"75% 70.328345 13.607770 1.999736 1.168449 12.395716 -5.553877 \n",
"max 134.007563 34.202640 38.620114 16.511813 33.869797 22.823064 \n",
"\n",
" mfcc_7 mfcc_8 mfcc_9 mfcc_10 mfcc_11 mfcc_12 \n",
"count 150.000000 150.000000 150.000000 150.000000 150.000000 150.000000 \n",
"mean -3.140170 -4.324533 -0.853340 -9.213072 -0.856809 -4.006373 \n",
"std 7.156816 7.395428 8.925605 5.736042 7.964057 6.866482 \n",
"min -18.005574 -19.420193 -16.537195 -22.006871 -15.976446 -21.682061 \n",
"25% -8.061160 -9.374177 -7.514854 -13.849136 -8.240238 -5.374539 \n",
"50% -3.564956 -6.129346 -0.913614 -10.193842 -1.679220 -2.008050 \n",
"75% 1.296588 0.978148 7.045267 -4.224980 5.814857 0.083519 \n",
"max 26.585385 11.666184 16.626587 5.341945 14.539281 8.456266 "
]
},
"execution_count": 51,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.describe()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"background_save": true,
"base_uri": "https://localhost:8080/"
},
"id": "jJdKYUOUNDx9",
"outputId": "4cce76eb-d6b4-421d-e260-f08f436e770c"
},
"outputs": [
{
"data": {
"text/plain": [
"mfcc_1 0\n",
"mfcc_2 0\n",
"mfcc_3 0\n",
"mfcc_4 0\n",
"mfcc_5 0\n",
"mfcc_6 0\n",
"mfcc_7 0\n",
"mfcc_8 0\n",
"mfcc_9 0\n",
"mfcc_10 0\n",
"mfcc_11 0\n",
"mfcc_12 0\n",
"target 0\n",
"dtype: int64"
]
},
"execution_count": 52,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.isnull().sum()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"background_save": true,
"base_uri": "https://localhost:8080/",
"height": 465
},
"id": "_djz4EoQNVXF",
"outputId": "546a0924-c80b-4b20-8aed-ddbf7691b0e4"
},
"outputs": [
{
"data": {
"image/png": "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lWY9cOCARo8erVatWsnf318tW7aUpKs+nzeqadOmmjRpkiIjI2/4dFdOTo569uzpsKxXr15XbVe/fn21bt3afj00NNThPs3Pz9eECRPUpk0bBQQEyN/fX0VFRZU6lsvfVxkZGYqNjdXYsWM1cuRISbrufXfZL3/HcuWcOTk5Cg8Pd3j53V8ea05Ojjp37uxwn/bu3VtlZWUOv4typ+9fAu9kDRo00O233+5wue222yq1j7p16zpcv/zsgV8uq8qP6zVlxowZWr16tebPn68tW7YoKytLUVFRunjxosN2rj6O+Ph4ff755zp37pySk5PVunVr3X///XrllVe0aNEizZw5Uxs3blRWVpZiYmLs89epU0fr1q3TV199pfbt2+vtt99Wu3btdPjwYUk/B3To0KFKTk5Wfn6+vvrqqyqfnpF+ftbPDz/8oPfee08ZGRnKyMiQpKs+n5Xh6ekpT8+fn1dxOUDWFaerLl26VKX9lnefXrnf2NhYZWVladGiRdq2bZuysrIUFBRUqWO5/H3VuXNnLVu2TBkZGXr//fcl6br33bXmrImvPXf6/iXwcIqtW7cqLi5ODz30kKKiohQSElLhL+QqcvmcamlpaQ1M+LNHH31UHh4eSklJ0QcffKBx48bJZrNp69atGjZsmJ544gl17txZrVq1uuppjTabTb1799bcuXO1e/dueXl5afXq1fb148eP16effqqlS5eqdevW6t27d5VmPH36tPbt26dZs2ZpwIABioyMdPhpwRmaNGkiyfGZUb/8JX1kZORV57Ev/4RSGVu3btXTTz+tIUOGqEOHDvL29tapU6cqP/T/5+Hhof/+7//WrFmzdP78+Ru6764nMjJSR48edfh8/PJYIyMjtWfPHhUX/99beG7dulUeHh5q165dlY+nJhF4OEWbNm20atUqZWVlac+ePfr1r39d6UcoTZs2lY+Pj9auXav8/Hz7++k6k6+vr0aNGqXExESdOHFCcXFx9vnXrVunbdu2KScnR5MmTXJ4J7GMjAzNnz9fu3btUm5urlatWqWTJ08qMjLSvk1MTIz8/f314osvVuv9Cho2bKigoCAtXbpUBw8e1IYNGxzepcwZfHx8dPfdd+sPf/iDcnJylJ6erlmzZjls89RTT+nAgQN65plntG/fPqWkpFTp7xHatGmjDz/8UDk5OcrIyNDjjz9e7aeMPvLII6pTp46SkpKue9/diOjoaLVt21axsbHas2ePtmzZoueee85hm8cff1z16tVTbGyssrOztXHjRk2dOlVjxoxx25cvJ/Bwitdff10NGzbUPffco6FDhyomJkZ33nlnpfbh6empt956S3/84x8VFhamYcOG1cis8fHxOnPmjGJiYuznXGfNmqU777xTMTEx6tu3r0JCQhzOVfv7+2vz5s0aMmSI2rZtq1mzZum1117T4MGD7dt4eHgoLi5OpaWlevLJJ6s8n4eHh1asWKHMzEx17NhR06dP1yuvvFLl/VVk2bJl+umnn9StWzdNmzZNL774osP65s2b6/PPP9eaNWvUuXNnLVmyRPPnz6/0x3n//fd15swZ3XnnnRozZoyefvppNW3atFqze3p6asqUKXr55Zf1u9/97pr33Y3w8PDQ6tWrdf78ed11110aP368XnrpJYdt6tevr9TUVP3www/q0aOHHn74YQ0YMEDvvPNOtY6lJvFywYATxcfH6+TJk/rrX//q6lEA/pIVcIaCggJ98803SklJIe5wGwQecIJhw4bpn//8p5566ik98MADrh4HkMQpGgAwFr9kBQBDEXgAMBSBBwBDEXgAMBSBBwBDEXjc0vr27atp06a5egw7d5sHtRuBB6qpOq/wCNQkAo9bVlxcnNLT07Vo0SL7mzofOnRI8fHxioiIkI+Pj9q1a6dFixZddbvhw4frpZdeUlhYmP2VBLdt26YuXbqoXr166t69u9asWXPVWylmZ2dr8ODB8vX1VXBwsMaMGWN/ZcXy5qnsK3ICV+IvWXHLWrRokfbv36+OHTtq3rx5kn5+JcdmzZpp5cqVCgoK0rZt2zRx4kSFhobq0Ucftd82LS1N/v7+9rd8Kyws1NChQzVkyBClpKTo3//+91WnWs6ePav+/ftr/PjxeuONN3T+/HnNnDlTjz76qDZs2FDuPJdf1heoCgKPW1ZAQIC8vLxUv359hYSE2JfPnTvX/u+IiAht375df/7znx0C36BBA/3pT3+yv4b9kiVLZLPZ9N5779nftPnYsWOaMGGC/TbvvPOOunbt6vCKjMuWLVN4eLj279+vtm3bljsPUFUEHviFpKQkLVu2TLm5uTp//rwuXryoLl26OGwTFRVlj7sk7du3T506dVK9evXsy+666y6H2+zZs0cbN26Ur6/vVR/z0KFDatu2rXMPBLc8Ag9cYcWKFZoxY4Zee+019erVS35+fnrllVfsb5l3WVXea7WoqEhDhw7VwoULr1oXGhpa5ZmBihB43NK8vLwc3iJw69atuueee/Tb3/7WvuzQoUPX3U+7du300UcfqaSkRN7e3pKknTt3Omxz55136vPPP1fLli3t7416vXmA6uBZNLiltWzZUhkZGTpy5IhOnTqlNm3aaNeuXUpNTdX+/fv1/PPPXxXq8lx+i8KJEycqJydHqampevXVVyX9/F6ukjR58mT98MMPGj16tHbu3KlDhw4pNTVVY8eOtUf9l/O40xuro/Yh8LilzZgxQ3Xq1FH79u3VpEkTxcTEaMSIERo1apR69uyp06dPOzyar4i/v7+++OILZWVlqUuXLnruuec0e/ZsSbKflw8LC9PWrVtVWlqqgQMHKioqStOmTVNgYKA8PDzKnSc3N7fmDh7G4/XggRry8ccfa+zYsSooKKj2m0wDVcE5eMBJPvjgA7Vq1Uq33Xab9uzZY3+OO3GHqxB4wEny8vI0e/Zs5eXlKTQ0VI888oheeuklV4+FWxinaADAUPySFQAMReABwFAEHgAMReABwFAEHgAMReABwFAEHgAMReABwFAEHgAM9f8AKLWODihrfJoAAAAASUVORK5CYII=\n",
"text/plain": [
"<Figure size 400x500 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig, axes = plt.subplots(1, 1, figsize=(4, 5))\n",
"sns.histplot(data=df, x='target', ax=axes, color='skyblue')\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Oz4HrFkvK5HX"
},
"source": [
"# Data Preparation"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Vbm0Iyx1LZDL"
},
"source": [
"Pengambilan 5 kelas dari dataframe"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"background_save": true,
"base_uri": "https://localhost:8080/",
"height": 424
},
"id": "W-NoSdhxsUsH",
"outputId": "c1670698-b0f3-4175-867d-f5c39806d759"
},
"outputs": [
{
"data": {
"application/vnd.google.colaboratory.intrinsic+json": {
"summary": "{\n \"name\": \"df\",\n \"rows\": 150,\n \"fields\": [\n {\n \"column\": \"mfcc_1\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 36.276014922615474,\n \"min\": -28.16607541028273,\n \"max\": 134.00756340540602,\n \"num_unique_values\": 148,\n \"samples\": [\n 36.08258057714812,\n 58.86680953129214,\n -3.523882247385767\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"mfcc_2\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 25.55141187112381,\n \"min\": -68.12144268080341,\n \"max\": 34.202640399438096,\n \"num_unique_values\": 148,\n \"samples\": [\n 23.939076705384803,\n 21.946738597467206,\n 13.0356526884146\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"mfcc_3\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 16.607602505135112,\n \"min\": -35.34655184816533,\n \"max\": 38.62011424617032,\n \"num_unique_values\": 148,\n \"samples\": [\n 13.91699151797878,\n -8.389756054170379,\n -1.8076506613349623\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"mfcc_4\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 12.248647405224922,\n \"min\": -37.65939195051028,\n \"max\": 16.511813215011305,\n \"num_unique_values\": 148,\n \"samples\": [\n 11.817977912406883,\n -25.196198956208004,\n -1.877552087075581\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"mfcc_5\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 14.67376981879269,\n \"min\": -25.168957020117585,\n \"max\": 33.86979700528147,\n \"num_unique_values\": 148,\n \"samples\": [\n -9.159842263653752,\n 12.502871968905891,\n -5.269233643564018\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"mfcc_6\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 10.967088795363342,\n \"min\": -37.11021563514957,\n \"max\": 22.823063964431544,\n \"num_unique_values\": 148,\n \"samples\": [\n -11.37754250437596,\n -21.623600445733462,\n -7.599002274584097\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"mfcc_7\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 7.156816371373767,\n \"min\": -18.00557350489408,\n \"max\": 26.58538472976201,\n \"num_unique_values\": 148,\n \"samples\": [\n -6.540024131817128,\n -2.978011309692604,\n -3.908204318319117\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"mfcc_8\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 7.3954280048501255,\n \"min\": -19.42019336425255,\n \"max\": 11.666184384702827,\n \"num_unique_values\": 148,\n \"samples\": [\n -8.77716113407432,\n -9.47772235720944,\n -6.146912684052977\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"mfcc_9\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 8.925604847630165,\n \"min\": -16.537194540172763,\n \"max\": 16.626586628222096,\n \"num_unique_values\": 148,\n \"samples\": [\n -5.5096426829032765,\n -4.192069878917911,\n 0.0969209496106391\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"mfcc_10\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 5.736041581214664,\n \"min\": -22.006870967705165,\n \"max\": 5.341944901286143,\n \"num_unique_values\": 148,\n \"samples\": [\n -14.888090524599049,\n -2.679905652845484,\n -4.124536203962681\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"mfcc_11\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 7.964057207796632,\n \"min\": -15.97644564504034,\n \"max\": 14.539281254023074,\n \"num_unique_values\": 148,\n \"samples\": [\n -8.107532163193822,\n -10.48949586980253,\n -2.566518390687336\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"mfcc_12\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 6.866482357947159,\n \"min\": -21.68206080071003,\n \"max\": 8.456266425271922,\n \"num_unique_values\": 148,\n \"samples\": [\n -5.797938428082079,\n -2.674145185062222,\n -5.316564560856999\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"target\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 5,\n \"samples\": [\n \"Tanti\",\n \"Random\",\n \"Vasyilla\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}",
"type": "dataframe",
"variable_name": "df"
},
"text/html": [
"\n",
" <div id=\"df-21b77810-6d8e-4579-91f8-3634690ab633\" class=\"colab-df-container\">\n",
" <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>mfcc_1</th>\n",
" <th>mfcc_2</th>\n",
" <th>mfcc_3</th>\n",
" <th>mfcc_4</th>\n",
" <th>mfcc_5</th>\n",
" <th>mfcc_6</th>\n",
" <th>mfcc_7</th>\n",
" <th>mfcc_8</th>\n",
" <th>mfcc_9</th>\n",
" <th>mfcc_10</th>\n",
" <th>mfcc_11</th>\n",
" <th>mfcc_12</th>\n",
" <th>target</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>134.007563</td>\n",
" <td>-10.597640</td>\n",
" <td>7.266465</td>\n",
" <td>-3.754714</td>\n",
" <td>-13.808333</td>\n",
" <td>2.155736</td>\n",
" <td>-12.878377</td>\n",
" <td>-4.975601</td>\n",
" <td>6.321278</td>\n",
" <td>-2.777375</td>\n",
" <td>-6.506576</td>\n",
" <td>-1.876924</td>\n",
" <td>Hilmi</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>50.750191</td>\n",
" <td>-5.598916</td>\n",
" <td>32.949004</td>\n",
" <td>-22.501260</td>\n",
" <td>14.779131</td>\n",
" <td>-19.538301</td>\n",
" <td>7.961897</td>\n",
" <td>-11.957439</td>\n",
" <td>7.594936</td>\n",
" <td>-14.929685</td>\n",
" <td>5.006317</td>\n",
" <td>-1.295943</td>\n",
" <td>Hilmi</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>122.293842</td>\n",
" <td>-12.814458</td>\n",
" <td>12.493625</td>\n",
" <td>-10.989077</td>\n",
" <td>-15.963840</td>\n",
" <td>1.330859</td>\n",
" <td>-17.650124</td>\n",
" <td>-3.014083</td>\n",
" <td>3.925209</td>\n",
" <td>-6.664020</td>\n",
" <td>-1.170681</td>\n",
" <td>-0.027291</td>\n",
" <td>Hilmi</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>126.803849</td>\n",
" <td>-0.053941</td>\n",
" <td>8.270297</td>\n",
" <td>-6.800313</td>\n",
" <td>-13.392560</td>\n",
" <td>-0.899367</td>\n",
" <td>-14.874580</td>\n",
" <td>0.227556</td>\n",
" <td>7.045879</td>\n",
" <td>-7.464138</td>\n",
" <td>-5.668817</td>\n",
" <td>-0.148281</td>\n",
" <td>Hilmi</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>10.468602</td>\n",
" <td>9.117828</td>\n",
" <td>-8.683499</td>\n",
" <td>-1.466168</td>\n",
" <td>24.753077</td>\n",
" <td>-21.531051</td>\n",
" <td>2.124193</td>\n",
" <td>-6.581121</td>\n",
" <td>11.937312</td>\n",
" <td>-18.942954</td>\n",
" <td>5.763798</td>\n",
" <td>0.569468</td>\n",
" <td>Hilmi</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>145</th>\n",
" <td>36.427943</td>\n",
" <td>25.707284</td>\n",
" <td>8.212668</td>\n",
" <td>10.450583</td>\n",
" <td>-5.248485</td>\n",
" <td>-11.510404</td>\n",
" <td>-6.744978</td>\n",
" <td>-9.246621</td>\n",
" <td>-3.982937</td>\n",
" <td>-10.705474</td>\n",
" <td>-6.795224</td>\n",
" <td>-6.532252</td>\n",
" <td>Random</td>\n",
" </tr>\n",
" <tr>\n",
" <th>146</th>\n",
" <td>43.954271</td>\n",
" <td>6.456048</td>\n",
" <td>2.131374</td>\n",
" <td>-9.353882</td>\n",
" <td>-17.369689</td>\n",
" <td>-7.557169</td>\n",
" <td>-15.326618</td>\n",
" <td>-16.521912</td>\n",
" <td>1.466365</td>\n",
" <td>-6.723767</td>\n",
" <td>1.931086</td>\n",
" <td>2.092220</td>\n",
" <td>Random</td>\n",
" </tr>\n",
" <tr>\n",
" <th>147</th>\n",
" <td>55.782108</td>\n",
" <td>26.974924</td>\n",
" <td>-5.329280</td>\n",
" <td>-1.423440</td>\n",
" <td>-9.777956</td>\n",
" <td>-8.758294</td>\n",
" <td>-1.948076</td>\n",
" <td>-6.980490</td>\n",
" <td>-0.893085</td>\n",
" <td>-4.223947</td>\n",
" <td>-4.055362</td>\n",
" <td>-5.809257</td>\n",
" <td>Random</td>\n",
" </tr>\n",
" <tr>\n",
" <th>148</th>\n",
" <td>26.584968</td>\n",
" <td>-8.043035</td>\n",
" <td>-4.178721</td>\n",
" <td>-0.592769</td>\n",
" <td>-15.964644</td>\n",
" <td>-9.010896</td>\n",
" <td>-4.953900</td>\n",
" <td>-11.460907</td>\n",
" <td>-0.344327</td>\n",
" <td>-4.228080</td>\n",
" <td>-1.677582</td>\n",
" <td>-2.752977</td>\n",
" <td>Random</td>\n",
" </tr>\n",
" <tr>\n",
" <th>149</th>\n",
" <td>19.589333</td>\n",
" <td>9.885163</td>\n",
" <td>-20.071891</td>\n",
" <td>-13.235444</td>\n",
" <td>-15.691194</td>\n",
" <td>-10.111671</td>\n",
" <td>2.390462</td>\n",
" <td>-5.974159</td>\n",
" <td>-0.621773</td>\n",
" <td>-2.311574</td>\n",
" <td>4.188963</td>\n",
" <td>-0.232814</td>\n",
" <td>Random</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>150 rows × 13 columns</p>\n",
"</div>\n",
" <div class=\"colab-df-buttons\">\n",
"\n",
" <div class=\"colab-df-container\">\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-21b77810-6d8e-4579-91f8-3634690ab633')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
"\n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
" <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
" </svg>\n",
" </button>\n",
"\n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" .colab-df-buttons div {\n",
" margin-bottom: 4px;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-21b77810-6d8e-4579-91f8-3634690ab633 button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-21b77810-6d8e-4579-91f8-3634690ab633');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
"\n",
"\n",
"<div id=\"df-6ff8c610-007f-4733-874c-a460f2d07b64\">\n",
" <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-6ff8c610-007f-4733-874c-a460f2d07b64')\"\n",
" title=\"Suggest charts\"\n",
" style=\"display:none;\">\n",
"\n",
"<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <g>\n",
" <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
" </g>\n",
"</svg>\n",
" </button>\n",
"\n",
"<style>\n",
" .colab-df-quickchart {\n",
" --bg-color: #E8F0FE;\n",
" --fill-color: #1967D2;\n",
" --hover-bg-color: #E2EBFA;\n",
" --hover-fill-color: #174EA6;\n",
" --disabled-fill-color: #AAA;\n",
" --disabled-bg-color: #DDD;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-quickchart {\n",
" --bg-color: #3B4455;\n",
" --fill-color: #D2E3FC;\n",
" --hover-bg-color: #434B5C;\n",
" --hover-fill-color: #FFFFFF;\n",
" --disabled-bg-color: #3B4455;\n",
" --disabled-fill-color: #666;\n",
" }\n",
"\n",
" .colab-df-quickchart {\n",
" background-color: var(--bg-color);\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: var(--fill-color);\n",
" height: 32px;\n",
" padding: 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-quickchart:hover {\n",
" background-color: var(--hover-bg-color);\n",
" box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: var(--button-hover-fill-color);\n",
" }\n",
"\n",
" .colab-df-quickchart-complete:disabled,\n",
" .colab-df-quickchart-complete:disabled:hover {\n",
" background-color: var(--disabled-bg-color);\n",
" fill: var(--disabled-fill-color);\n",
" box-shadow: none;\n",
" }\n",
"\n",
" .colab-df-spinner {\n",
" border: 2px solid var(--fill-color);\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" animation:\n",
" spin 1s steps(1) infinite;\n",
" }\n",
"\n",
" @keyframes spin {\n",
" 0% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" border-left-color: var(--fill-color);\n",
" }\n",
" 20% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 30% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 40% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 60% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 80% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" 90% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" }\n",
"</style>\n",
"\n",
" <script>\n",
" async function quickchart(key) {\n",
" const quickchartButtonEl =\n",
" document.querySelector('#' + key + ' button');\n",
" quickchartButtonEl.disabled = true; // To prevent multiple clicks.\n",
" quickchartButtonEl.classList.add('colab-df-spinner');\n",
" try {\n",
" const charts = await google.colab.kernel.invokeFunction(\n",
" 'suggestCharts', [key], {});\n",
" } catch (error) {\n",
" console.error('Error during call to suggestCharts:', error);\n",
" }\n",
" quickchartButtonEl.classList.remove('colab-df-spinner');\n",
" quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
" }\n",
" (() => {\n",
" let quickchartButtonEl =\n",
" document.querySelector('#df-6ff8c610-007f-4733-874c-a460f2d07b64 button');\n",
" quickchartButtonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
" })();\n",
" </script>\n",
"</div>\n",
" </div>\n",
" </div>\n"
],
"text/plain": [
" mfcc_1 mfcc_2 mfcc_3 mfcc_4 mfcc_5 mfcc_6 \\\n",
"0 134.007563 -10.597640 7.266465 -3.754714 -13.808333 2.155736 \n",
"1 50.750191 -5.598916 32.949004 -22.501260 14.779131 -19.538301 \n",
"2 122.293842 -12.814458 12.493625 -10.989077 -15.963840 1.330859 \n",
"3 126.803849 -0.053941 8.270297 -6.800313 -13.392560 -0.899367 \n",
"4 10.468602 9.117828 -8.683499 -1.466168 24.753077 -21.531051 \n",
".. ... ... ... ... ... ... \n",
"145 36.427943 25.707284 8.212668 10.450583 -5.248485 -11.510404 \n",
"146 43.954271 6.456048 2.131374 -9.353882 -17.369689 -7.557169 \n",
"147 55.782108 26.974924 -5.329280 -1.423440 -9.777956 -8.758294 \n",
"148 26.584968 -8.043035 -4.178721 -0.592769 -15.964644 -9.010896 \n",
"149 19.589333 9.885163 -20.071891 -13.235444 -15.691194 -10.111671 \n",
"\n",
" mfcc_7 mfcc_8 mfcc_9 mfcc_10 mfcc_11 mfcc_12 target \n",
"0 -12.878377 -4.975601 6.321278 -2.777375 -6.506576 -1.876924 Hilmi \n",
"1 7.961897 -11.957439 7.594936 -14.929685 5.006317 -1.295943 Hilmi \n",
"2 -17.650124 -3.014083 3.925209 -6.664020 -1.170681 -0.027291 Hilmi \n",
"3 -14.874580 0.227556 7.045879 -7.464138 -5.668817 -0.148281 Hilmi \n",
"4 2.124193 -6.581121 11.937312 -18.942954 5.763798 0.569468 Hilmi \n",
".. ... ... ... ... ... ... ... \n",
"145 -6.744978 -9.246621 -3.982937 -10.705474 -6.795224 -6.532252 Random \n",
"146 -15.326618 -16.521912 1.466365 -6.723767 1.931086 2.092220 Random \n",
"147 -1.948076 -6.980490 -0.893085 -4.223947 -4.055362 -5.809257 Random \n",
"148 -4.953900 -11.460907 -0.344327 -4.228080 -1.677582 -2.752977 Random \n",
"149 2.390462 -5.974159 -0.621773 -2.311574 4.188963 -0.232814 Random \n",
"\n",
"[150 rows x 13 columns]"
]
},
"execution_count": 54,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = df = df = df = df[df['target'].isin(['Hilmi', 'Tanti', 'Vasyilla', 'Yudha', 'Random'])]\n",
"df"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "wpBWFvGaLiny"
},
"source": [
"Normalisasi MinMax"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"background_save": true
},
"id": "xzmFgA9xtKEP"
},
"outputs": [],
"source": [
"def minmax(df_input):\n",
" list_fitur = df_input.columns[:-1]\n",
" for fitur in list_fitur:\n",
" max = df_input[fitur].max()\n",
" min = df_input[fitur].min()\n",
" df_input[fitur] = (df_input[fitur]-min)/(max-min)\n",
" return df_input"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"background_save": true,
"base_uri": "https://localhost:8080/",
"height": 424
},
"id": "IWlYLLujtKpR",
"outputId": "1d3f38e3-2e69-4bd2-a30c-a0039491a5a8"
},
"outputs": [
{
"data": {
"application/vnd.google.colaboratory.intrinsic+json": {
"summary": "{\n \"name\": \"df\",\n \"rows\": 150,\n \"fields\": [\n {\n \"column\": \"mfcc_1\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.22368626114286905,\n \"min\": 0.0,\n \"max\": 1.0,\n \"num_unique_values\": 148,\n \"samples\": [\n 0.39617200709450573,\n 0.5366648092572446,\n 0.151949437299751\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"mfcc_2\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.24971063606879967,\n \"min\": 0.0,\n \"max\": 1.0,\n \"num_unique_values\": 148,\n \"samples\": [\n 0.8996955224509101,\n 0.8802246603826399,\n 0.7931377729089978\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"mfcc_3\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.22452820144623117,\n \"min\": 0.0,\n \"max\": 1.0,\n \"num_unique_values\": 148,\n \"samples\": [\n 0.6660235747723758,\n 0.364445191562572,\n 0.4534326468635954\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"mfcc_4\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.22610992994892484,\n \"min\": 0.0,\n \"max\": 1.0,\n \"num_unique_values\": 148,\n \"samples\": [\n 0.9133518390764562,\n 0.2300704397515369,\n 0.6605324683861532\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"mfcc_5\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.2485447069645116,\n \"min\": 0.0,\n \"max\": 1.0,\n \"num_unique_values\": 148,\n \"samples\": [\n 0.2711628153530569,\n 0.638086450347795,\n 0.33706204856546446\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"mfcc_6\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.18298829746403522,\n \"min\": 0.0,\n \"max\": 1.0,\n \"num_unique_values\": 148,\n \"samples\": [\n 0.4293553315068956,\n 0.25839759300481113,\n 0.4924011093291103\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"mfcc_7\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.16049927282817375,\n \"min\": 0.0,\n \"max\": 1.0,\n \"num_unique_values\": 148,\n \"samples\": [\n 0.25712722549581657,\n 0.33700917832086547,\n 0.3161486037682521\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"mfcc_8\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.23789931604683792,\n \"min\": 0.0,\n \"max\": 1.0,\n \"num_unique_values\": 148,\n \"samples\": [\n 0.342369648729366,\n 0.3198336933088711,\n 0.42698061470496046\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"mfcc_9\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.26913712891509134,\n \"min\": 0.0,\n \"max\": 1.0,\n \"num_unique_values\": 148,\n \"samples\": [\n 0.3325179297642562,\n 0.3722471993941323,\n 0.5015747572727244\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"mfcc_10\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.20973637793650562,\n \"min\": 0.0,\n \"max\": 1.0,\n \"num_unique_values\": 148,\n \"samples\": [\n 0.2602957465217917,\n 0.7066838069860648,\n 0.6538613901751362\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"mfcc_11\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.2609820580102604,\n \"min\": 0.0,\n \"max\": 1.0,\n \"num_unique_values\": 148,\n \"samples\": [\n 0.2578641992659867,\n 0.17980727751912784,\n 0.4394431533192342\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"mfcc_12\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.22783223191058968,\n \"min\": 0.0,\n \"max\": 1.0,\n \"num_unique_values\": 148,\n \"samples\": [\n 0.5270406102344792,\n 0.630689137891544,\n 0.5430127597043442\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"target\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 5,\n \"samples\": [\n \"Tanti\",\n \"Random\",\n \"Vasyilla\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}",
"type": "dataframe",
"variable_name": "df"
},
"text/html": [
"\n",
" <div id=\"df-f0b903f7-048d-4ed1-8ad8-dd30c9135d5c\" class=\"colab-df-container\">\n",
" <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>mfcc_1</th>\n",
" <th>mfcc_2</th>\n",
" <th>mfcc_3</th>\n",
" <th>mfcc_4</th>\n",
" <th>mfcc_5</th>\n",
" <th>mfcc_6</th>\n",
" <th>mfcc_7</th>\n",
" <th>mfcc_8</th>\n",
" <th>mfcc_9</th>\n",
" <th>mfcc_10</th>\n",
" <th>mfcc_11</th>\n",
" <th>mfcc_12</th>\n",
" <th>target</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1.000000</td>\n",
" <td>0.562173</td>\n",
" <td>0.576111</td>\n",
" <td>0.625880</td>\n",
" <td>0.192427</td>\n",
" <td>0.655161</td>\n",
" <td>0.114983</td>\n",
" <td>0.464660</td>\n",
" <td>0.689260</td>\n",
" <td>0.703120</td>\n",
" <td>0.310328</td>\n",
" <td>0.657141</td>\n",
" <td>Hilmi</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>0.486616</td>\n",
" <td>0.611025</td>\n",
" <td>0.923329</td>\n",
" <td>0.279819</td>\n",
" <td>0.676642</td>\n",
" <td>0.293191</td>\n",
" <td>0.582348</td>\n",
" <td>0.240065</td>\n",
" <td>0.727665</td>\n",
" <td>0.258775</td>\n",
" <td>0.687605</td>\n",
" <td>0.676418</td>\n",
" <td>Hilmi</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>0.927770</td>\n",
" <td>0.540508</td>\n",
" <td>0.646780</td>\n",
" <td>0.492334</td>\n",
" <td>0.155917</td>\n",
" <td>0.641398</td>\n",
" <td>0.007971</td>\n",
" <td>0.527759</td>\n",
" <td>0.617011</td>\n",
" <td>0.561006</td>\n",
" <td>0.485185</td>\n",
" <td>0.718513</td>\n",
" <td>Hilmi</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>0.955580</td>\n",
" <td>0.665215</td>\n",
" <td>0.589683</td>\n",
" <td>0.569658</td>\n",
" <td>0.199469</td>\n",
" <td>0.604186</td>\n",
" <td>0.070216</td>\n",
" <td>0.632037</td>\n",
" <td>0.711109</td>\n",
" <td>0.531750</td>\n",
" <td>0.337781</td>\n",
" <td>0.714498</td>\n",
" <td>Hilmi</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>0.238230</td>\n",
" <td>0.754849</td>\n",
" <td>0.360474</td>\n",
" <td>0.668127</td>\n",
" <td>0.845581</td>\n",
" <td>0.259942</td>\n",
" <td>0.451432</td>\n",
" <td>0.413013</td>\n",
" <td>0.858603</td>\n",
" <td>0.112031</td>\n",
" <td>0.712428</td>\n",
" <td>0.738313</td>\n",
" <td>Hilmi</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>145</th>\n",
" <td>0.398302</td>\n",
" <td>0.916976</td>\n",
" <td>0.588903</td>\n",
" <td>0.888110</td>\n",
" <td>0.337413</td>\n",
" <td>0.427139</td>\n",
" <td>0.252531</td>\n",
" <td>0.327268</td>\n",
" <td>0.378553</td>\n",
" <td>0.413232</td>\n",
" <td>0.300869</td>\n",
" <td>0.502676</td>\n",
" <td>Random</td>\n",
" </tr>\n",
" <tr>\n",
" <th>146</th>\n",
" <td>0.444711</td>\n",
" <td>0.728836</td>\n",
" <td>0.506687</td>\n",
" <td>0.522519</td>\n",
" <td>0.132104</td>\n",
" <td>0.493099</td>\n",
" <td>0.060078</td>\n",
" <td>0.093233</td>\n",
" <td>0.542868</td>\n",
" <td>0.558821</td>\n",
" <td>0.586830</td>\n",
" <td>0.788839</td>\n",
" <td>Random</td>\n",
" </tr>\n",
" <tr>\n",
" <th>147</th>\n",
" <td>0.517644</td>\n",
" <td>0.929364</td>\n",
" <td>0.405822</td>\n",
" <td>0.668915</td>\n",
" <td>0.260693</td>\n",
" <td>0.473058</td>\n",
" <td>0.360107</td>\n",
" <td>0.400166</td>\n",
" <td>0.471723</td>\n",
" <td>0.650226</td>\n",
" <td>0.390654</td>\n",
" <td>0.526665</td>\n",
" <td>Random</td>\n",
" </tr>\n",
" <tr>\n",
" <th>148</th>\n",
" <td>0.337608</td>\n",
" <td>0.587138</td>\n",
" <td>0.421377</td>\n",
" <td>0.684250</td>\n",
" <td>0.155903</td>\n",
" <td>0.468843</td>\n",
" <td>0.292698</td>\n",
" <td>0.256038</td>\n",
" <td>0.488270</td>\n",
" <td>0.650075</td>\n",
" <td>0.468574</td>\n",
" <td>0.628073</td>\n",
" <td>Random</td>\n",
" </tr>\n",
" <tr>\n",
" <th>149</th>\n",
" <td>0.294471</td>\n",
" <td>0.762348</td>\n",
" <td>0.206507</td>\n",
" <td>0.450866</td>\n",
" <td>0.160535</td>\n",
" <td>0.450477</td>\n",
" <td>0.457403</td>\n",
" <td>0.432538</td>\n",
" <td>0.479904</td>\n",
" <td>0.720152</td>\n",
" <td>0.660820</td>\n",
" <td>0.711693</td>\n",
" <td>Random</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>150 rows × 13 columns</p>\n",
"</div>\n",
" <div class=\"colab-df-buttons\">\n",
"\n",
" <div class=\"colab-df-container\">\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-f0b903f7-048d-4ed1-8ad8-dd30c9135d5c')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
"\n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
" <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
" </svg>\n",
" </button>\n",
"\n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" .colab-df-buttons div {\n",
" margin-bottom: 4px;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-f0b903f7-048d-4ed1-8ad8-dd30c9135d5c button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-f0b903f7-048d-4ed1-8ad8-dd30c9135d5c');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
"\n",
"\n",
"<div id=\"df-ccd8d328-086d-4492-ad8b-2cfcf2f5a336\">\n",
" <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-ccd8d328-086d-4492-ad8b-2cfcf2f5a336')\"\n",
" title=\"Suggest charts\"\n",
" style=\"display:none;\">\n",
"\n",
"<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <g>\n",
" <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
" </g>\n",
"</svg>\n",
" </button>\n",
"\n",
"<style>\n",
" .colab-df-quickchart {\n",
" --bg-color: #E8F0FE;\n",
" --fill-color: #1967D2;\n",
" --hover-bg-color: #E2EBFA;\n",
" --hover-fill-color: #174EA6;\n",
" --disabled-fill-color: #AAA;\n",
" --disabled-bg-color: #DDD;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-quickchart {\n",
" --bg-color: #3B4455;\n",
" --fill-color: #D2E3FC;\n",
" --hover-bg-color: #434B5C;\n",
" --hover-fill-color: #FFFFFF;\n",
" --disabled-bg-color: #3B4455;\n",
" --disabled-fill-color: #666;\n",
" }\n",
"\n",
" .colab-df-quickchart {\n",
" background-color: var(--bg-color);\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: var(--fill-color);\n",
" height: 32px;\n",
" padding: 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-quickchart:hover {\n",
" background-color: var(--hover-bg-color);\n",
" box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: var(--button-hover-fill-color);\n",
" }\n",
"\n",
" .colab-df-quickchart-complete:disabled,\n",
" .colab-df-quickchart-complete:disabled:hover {\n",
" background-color: var(--disabled-bg-color);\n",
" fill: var(--disabled-fill-color);\n",
" box-shadow: none;\n",
" }\n",
"\n",
" .colab-df-spinner {\n",
" border: 2px solid var(--fill-color);\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" animation:\n",
" spin 1s steps(1) infinite;\n",
" }\n",
"\n",
" @keyframes spin {\n",
" 0% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" border-left-color: var(--fill-color);\n",
" }\n",
" 20% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 30% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 40% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 60% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 80% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" 90% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" }\n",
"</style>\n",
"\n",
" <script>\n",
" async function quickchart(key) {\n",
" const quickchartButtonEl =\n",
" document.querySelector('#' + key + ' button');\n",
" quickchartButtonEl.disabled = true; // To prevent multiple clicks.\n",
" quickchartButtonEl.classList.add('colab-df-spinner');\n",
" try {\n",
" const charts = await google.colab.kernel.invokeFunction(\n",
" 'suggestCharts', [key], {});\n",
" } catch (error) {\n",
" console.error('Error during call to suggestCharts:', error);\n",
" }\n",
" quickchartButtonEl.classList.remove('colab-df-spinner');\n",
" quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
" }\n",
" (() => {\n",
" let quickchartButtonEl =\n",
" document.querySelector('#df-ccd8d328-086d-4492-ad8b-2cfcf2f5a336 button');\n",
" quickchartButtonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
" })();\n",
" </script>\n",
"</div>\n",
" </div>\n",
" </div>\n"
],
"text/plain": [
" mfcc_1 mfcc_2 mfcc_3 mfcc_4 mfcc_5 mfcc_6 mfcc_7 \\\n",
"0 1.000000 0.562173 0.576111 0.625880 0.192427 0.655161 0.114983 \n",
"1 0.486616 0.611025 0.923329 0.279819 0.676642 0.293191 0.582348 \n",
"2 0.927770 0.540508 0.646780 0.492334 0.155917 0.641398 0.007971 \n",
"3 0.955580 0.665215 0.589683 0.569658 0.199469 0.604186 0.070216 \n",
"4 0.238230 0.754849 0.360474 0.668127 0.845581 0.259942 0.451432 \n",
".. ... ... ... ... ... ... ... \n",
"145 0.398302 0.916976 0.588903 0.888110 0.337413 0.427139 0.252531 \n",
"146 0.444711 0.728836 0.506687 0.522519 0.132104 0.493099 0.060078 \n",
"147 0.517644 0.929364 0.405822 0.668915 0.260693 0.473058 0.360107 \n",
"148 0.337608 0.587138 0.421377 0.684250 0.155903 0.468843 0.292698 \n",
"149 0.294471 0.762348 0.206507 0.450866 0.160535 0.450477 0.457403 \n",
"\n",
" mfcc_8 mfcc_9 mfcc_10 mfcc_11 mfcc_12 target \n",
"0 0.464660 0.689260 0.703120 0.310328 0.657141 Hilmi \n",
"1 0.240065 0.727665 0.258775 0.687605 0.676418 Hilmi \n",
"2 0.527759 0.617011 0.561006 0.485185 0.718513 Hilmi \n",
"3 0.632037 0.711109 0.531750 0.337781 0.714498 Hilmi \n",
"4 0.413013 0.858603 0.112031 0.712428 0.738313 Hilmi \n",
".. ... ... ... ... ... ... \n",
"145 0.327268 0.378553 0.413232 0.300869 0.502676 Random \n",
"146 0.093233 0.542868 0.558821 0.586830 0.788839 Random \n",
"147 0.400166 0.471723 0.650226 0.390654 0.526665 Random \n",
"148 0.256038 0.488270 0.650075 0.468574 0.628073 Random \n",
"149 0.432538 0.479904 0.720152 0.660820 0.711693 Random \n",
"\n",
"[150 rows x 13 columns]"
]
},
"execution_count": 56,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_scaled = minmax(df)\n",
"df_scaled"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"background_save": true,
"base_uri": "https://localhost:8080/",
"height": 300
},
"id": "EF7XAYFSMvBs",
"outputId": "f5fdd9fb-d824-4fb9-89b7-3f6580b8805a"
},
"outputs": [
{
"data": {
"application/vnd.google.colaboratory.intrinsic+json": {
"summary": "{\n \"name\": \"df_scaled\",\n \"rows\": 8,\n \"fields\": [\n {\n \"column\": \"mfcc_1\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 52.87369352743623,\n \"min\": 0.0,\n \"max\": 150.0,\n \"num_unique_values\": 8,\n \"samples\": [\n 0.5000477981083185,\n 0.4985099314047994,\n 150.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"mfcc_2\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 52.846342550332686,\n \"min\": 0.0,\n \"max\": 150.0,\n \"num_unique_values\": 8,\n \"samples\": [\n 0.6041026238060625,\n 0.6717102484237238,\n 150.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"mfcc_3\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 52.89895398708089,\n \"min\": 0.0,\n \"max\": 150.0,\n \"num_unique_values\": 8,\n \"samples\": [\n 0.38169420220619343,\n 0.35855796248939886,\n 150.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"mfcc_4\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 52.86061906054653,\n \"min\": 0.0,\n \"max\": 150.0,\n \"num_unique_values\": 8,\n \"samples\": [\n 0.5370908450298161,\n 0.5684112898365092,\n 150.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"mfcc_5\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 52.88730537785032,\n \"min\": 0.0,\n \"max\": 150.0,\n \"num_unique_values\": 8,\n \"samples\": [\n 0.410090528852776,\n 0.4240437088291402,\n 150.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"mfcc_6\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 52.8888888393393,\n \"min\": 0.0,\n \"max\": 150.0,\n \"num_unique_values\": 8,\n \"samples\": [\n 0.43783738524532445,\n 0.4222580402529731,\n 150.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"mfcc_7\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 52.90888920487374,\n \"min\": 0.0,\n \"max\": 150.0,\n \"num_unique_values\": 8,\n \"samples\": [\n 0.33337259829192134,\n 0.3238463175433949,\n 150.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"mfcc_8\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 52.87572416739311,\n \"min\": 0.0,\n \"max\": 150.0,\n \"num_unique_values\": 8,\n \"samples\": [\n 0.485603698915066,\n 0.42754569926673214,\n 150.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"mfcc_9\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 52.87243291238593,\n \"min\": 0.0,\n \"max\": 150.0,\n \"num_unique_values\": 8,\n \"samples\": [\n 0.47292118071178,\n 0.4711037167686793,\n 150.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"mfcc_10\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 52.879403376782854,\n \"min\": 0.0,\n \"max\": 150.0,\n \"num_unique_values\": 8,\n \"samples\": [\n 0.46780083348511053,\n 0.43193933369362497,\n 150.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"mfcc_11\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 52.87263831838093,\n \"min\": 0.0,\n \"max\": 150.0,\n \"num_unique_values\": 8,\n \"samples\": [\n 0.4954703248303675,\n 0.46851990432824897,\n 150.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"mfcc_12\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 52.845471999528556,\n \"min\": 0.0,\n \"max\": 150.0,\n \"num_unique_values\": 8,\n \"samples\": [\n 0.5864853641252078,\n 0.6527904051241242,\n 150.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}",
"type": "dataframe"
},
"text/html": [
"\n",
" <div id=\"df-ce4f8e24-3834-4ef5-b402-cbeaa9d09666\" class=\"colab-df-container\">\n",
" <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>mfcc_1</th>\n",
" <th>mfcc_2</th>\n",
" <th>mfcc_3</th>\n",
" <th>mfcc_4</th>\n",
" <th>mfcc_5</th>\n",
" <th>mfcc_6</th>\n",
" <th>mfcc_7</th>\n",
" <th>mfcc_8</th>\n",
" <th>mfcc_9</th>\n",
" <th>mfcc_10</th>\n",
" <th>mfcc_11</th>\n",
" <th>mfcc_12</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>count</th>\n",
" <td>150.000000</td>\n",
" <td>150.000000</td>\n",
" <td>150.000000</td>\n",
" <td>150.000000</td>\n",
" <td>150.000000</td>\n",
" <td>150.000000</td>\n",
" <td>150.000000</td>\n",
" <td>150.000000</td>\n",
" <td>150.000000</td>\n",
" <td>150.000000</td>\n",
" <td>150.000000</td>\n",
" <td>150.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mean</th>\n",
" <td>0.500048</td>\n",
" <td>0.604103</td>\n",
" <td>0.381694</td>\n",
" <td>0.537091</td>\n",
" <td>0.410091</td>\n",
" <td>0.437837</td>\n",
" <td>0.333373</td>\n",
" <td>0.485604</td>\n",
" <td>0.472921</td>\n",
" <td>0.467801</td>\n",
" <td>0.495470</td>\n",
" <td>0.586485</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td>0.223686</td>\n",
" <td>0.249711</td>\n",
" <td>0.224528</td>\n",
" <td>0.226110</td>\n",
" <td>0.248545</td>\n",
" <td>0.182988</td>\n",
" <td>0.160499</td>\n",
" <td>0.237899</td>\n",
" <td>0.269137</td>\n",
" <td>0.209736</td>\n",
" <td>0.260982</td>\n",
" <td>0.227832</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>0.340681</td>\n",
" <td>0.390217</td>\n",
" <td>0.200532</td>\n",
" <td>0.381922</td>\n",
" <td>0.183074</td>\n",
" <td>0.299711</td>\n",
" <td>0.223014</td>\n",
" <td>0.323165</td>\n",
" <td>0.272054</td>\n",
" <td>0.298285</td>\n",
" <td>0.253515</td>\n",
" <td>0.541089</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>0.498510</td>\n",
" <td>0.671710</td>\n",
" <td>0.358558</td>\n",
" <td>0.568411</td>\n",
" <td>0.424044</td>\n",
" <td>0.422258</td>\n",
" <td>0.323846</td>\n",
" <td>0.427546</td>\n",
" <td>0.471104</td>\n",
" <td>0.431939</td>\n",
" <td>0.468520</td>\n",
" <td>0.652790</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>0.607339</td>\n",
" <td>0.798729</td>\n",
" <td>0.504907</td>\n",
" <td>0.716762</td>\n",
" <td>0.636271</td>\n",
" <td>0.526524</td>\n",
" <td>0.432872</td>\n",
" <td>0.656183</td>\n",
" <td>0.711091</td>\n",
" <td>0.650189</td>\n",
" <td>0.714101</td>\n",
" <td>0.722189</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>1.000000</td>\n",
" <td>1.000000</td>\n",
" <td>1.000000</td>\n",
" <td>1.000000</td>\n",
" <td>1.000000</td>\n",
" <td>1.000000</td>\n",
" <td>1.000000</td>\n",
" <td>1.000000</td>\n",
" <td>1.000000</td>\n",
" <td>1.000000</td>\n",
" <td>1.000000</td>\n",
" <td>1.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
" <div class=\"colab-df-buttons\">\n",
"\n",
" <div class=\"colab-df-container\">\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-ce4f8e24-3834-4ef5-b402-cbeaa9d09666')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
"\n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
" <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
" </svg>\n",
" </button>\n",
"\n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" .colab-df-buttons div {\n",
" margin-bottom: 4px;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-ce4f8e24-3834-4ef5-b402-cbeaa9d09666 button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-ce4f8e24-3834-4ef5-b402-cbeaa9d09666');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
"\n",
"\n",
"<div id=\"df-5234de1c-19a2-41e5-a13a-0ad4a8b9b9b4\">\n",
" <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-5234de1c-19a2-41e5-a13a-0ad4a8b9b9b4')\"\n",
" title=\"Suggest charts\"\n",
" style=\"display:none;\">\n",
"\n",
"<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <g>\n",
" <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
" </g>\n",
"</svg>\n",
" </button>\n",
"\n",
"<style>\n",
" .colab-df-quickchart {\n",
" --bg-color: #E8F0FE;\n",
" --fill-color: #1967D2;\n",
" --hover-bg-color: #E2EBFA;\n",
" --hover-fill-color: #174EA6;\n",
" --disabled-fill-color: #AAA;\n",
" --disabled-bg-color: #DDD;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-quickchart {\n",
" --bg-color: #3B4455;\n",
" --fill-color: #D2E3FC;\n",
" --hover-bg-color: #434B5C;\n",
" --hover-fill-color: #FFFFFF;\n",
" --disabled-bg-color: #3B4455;\n",
" --disabled-fill-color: #666;\n",
" }\n",
"\n",
" .colab-df-quickchart {\n",
" background-color: var(--bg-color);\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: var(--fill-color);\n",
" height: 32px;\n",
" padding: 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-quickchart:hover {\n",
" background-color: var(--hover-bg-color);\n",
" box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: var(--button-hover-fill-color);\n",
" }\n",
"\n",
" .colab-df-quickchart-complete:disabled,\n",
" .colab-df-quickchart-complete:disabled:hover {\n",
" background-color: var(--disabled-bg-color);\n",
" fill: var(--disabled-fill-color);\n",
" box-shadow: none;\n",
" }\n",
"\n",
" .colab-df-spinner {\n",
" border: 2px solid var(--fill-color);\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" animation:\n",
" spin 1s steps(1) infinite;\n",
" }\n",
"\n",
" @keyframes spin {\n",
" 0% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" border-left-color: var(--fill-color);\n",
" }\n",
" 20% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 30% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 40% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 60% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 80% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" 90% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" }\n",
"</style>\n",
"\n",
" <script>\n",
" async function quickchart(key) {\n",
" const quickchartButtonEl =\n",
" document.querySelector('#' + key + ' button');\n",
" quickchartButtonEl.disabled = true; // To prevent multiple clicks.\n",
" quickchartButtonEl.classList.add('colab-df-spinner');\n",
" try {\n",
" const charts = await google.colab.kernel.invokeFunction(\n",
" 'suggestCharts', [key], {});\n",
" } catch (error) {\n",
" console.error('Error during call to suggestCharts:', error);\n",
" }\n",
" quickchartButtonEl.classList.remove('colab-df-spinner');\n",
" quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
" }\n",
" (() => {\n",
" let quickchartButtonEl =\n",
" document.querySelector('#df-5234de1c-19a2-41e5-a13a-0ad4a8b9b9b4 button');\n",
" quickchartButtonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
" })();\n",
" </script>\n",
"</div>\n",
" </div>\n",
" </div>\n"
],
"text/plain": [
" mfcc_1 mfcc_2 mfcc_3 mfcc_4 mfcc_5 mfcc_6 \\\n",
"count 150.000000 150.000000 150.000000 150.000000 150.000000 150.000000 \n",
"mean 0.500048 0.604103 0.381694 0.537091 0.410091 0.437837 \n",
"std 0.223686 0.249711 0.224528 0.226110 0.248545 0.182988 \n",
"min 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 \n",
"25% 0.340681 0.390217 0.200532 0.381922 0.183074 0.299711 \n",
"50% 0.498510 0.671710 0.358558 0.568411 0.424044 0.422258 \n",
"75% 0.607339 0.798729 0.504907 0.716762 0.636271 0.526524 \n",
"max 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 \n",
"\n",
" mfcc_7 mfcc_8 mfcc_9 mfcc_10 mfcc_11 mfcc_12 \n",
"count 150.000000 150.000000 150.000000 150.000000 150.000000 150.000000 \n",
"mean 0.333373 0.485604 0.472921 0.467801 0.495470 0.586485 \n",
"std 0.160499 0.237899 0.269137 0.209736 0.260982 0.227832 \n",
"min 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 \n",
"25% 0.223014 0.323165 0.272054 0.298285 0.253515 0.541089 \n",
"50% 0.323846 0.427546 0.471104 0.431939 0.468520 0.652790 \n",
"75% 0.432872 0.656183 0.711091 0.650189 0.714101 0.722189 \n",
"max 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 "
]
},
"execution_count": 57,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_scaled.describe()"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "6hB7WF5bLr5B"
},
"source": [
"Mengacak baris dalam dataframe"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"background_save": true
},
"id": "ZYzVYIwplBDw"
},
"outputs": [],
"source": [
"df_scaled = df_scaled.sample(frac=1).reset_index(drop=True)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "LljaqH4ykl7r"
},
"source": [
"Mengambil kolom yang bukan target, dan mengubahnya dalam bentuk array agar bisa diproses ke langkah selanjutnya"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"background_save": true,
"base_uri": "https://localhost:8080/"
},
"id": "Yn-bfLBbkl7t",
"outputId": "d53364a9-ed29-48ab-c047-1611c9e8357f"
},
"outputs": [
{
"data": {
"text/plain": [
"array([[0.29121659, 0.84588868, 0.12388285, 0.71149628, 0.13523701,\n",
" 0.51554656, 0.29915299, 0.63665473, 0.74734425, 0.23148366,\n",
" 0.44838036, 0.72694892],\n",
" [0.83619592, 0.31438551, 0.58094409, 0.66021311, 0.09954104,\n",
" 0.84357682, 0.22297908, 0.14641018, 0.58019394, 0.27560393,\n",
" 0.09594089, 0.82759198],\n",
" [0.49518097, 0.66935134, 0.59251915, 0.74893544, 0.14104965,\n",
" 0.49621374, 0.21525878, 0.22361814, 0.62380065, 0.57862401,\n",
" 0.42216781, 0.8169304 ],\n",
" [0.52529014, 0.74516424, 0.39434066, 0.67422405, 0.16254567,\n",
" 0.4754561 , 0.41733271, 0.29990747, 0.43985614, 0.63028369,\n",
" 0.44933817, 0.57891455],\n",
" [0.47336725, 0.72736701, 0.29602544, 0.43782187, 0.10415111,\n",
" 0.51156742, 0.3924323 , 0.33880198, 0.45233126, 0.52496245,\n",
" 0.46761847, 0.63632228],\n",
" [0.46549479, 0.68830612, 0.46321952, 0.63378994, 0.13768277,\n",
" 0.5177148 , 0.34761035, 0.33241868, 0.47781942, 0.43611844,\n",
" 0.53457644, 0.85542425],\n",
" [0.58151584, 0.78039673, 0.26726235, 0.15763886, 0.64530875,\n",
" 0.2129583 , 0.32646394, 0.34507955, 0.31369449, 0.8072768 ,\n",
" 0.12466667, 0.75164049],\n",
" [0.90634916, 0.68215495, 0.57196028, 0.63612229, 0.14953645,\n",
" 0.59652429, 0.16449957, 0.62814211, 0.77226034, 0.66965948,\n",
" 0.32163293, 0.64889549],\n",
" [0.16593316, 0.67184425, 0.02639212, 0.74555434, 0.56651819,\n",
" 0.73011609, 0.21427763, 0.57631273, 0.69006371, 0.70191246,\n",
" 0.23066824, 0.65091788],\n",
" [0.45141925, 0.88116315, 0.32234545, 0.24041898, 0.66228758,\n",
" 0.24554089, 0.39900941, 0.45281556, 0.37851654, 0.65094633,\n",
" 0.1740261 , 0.72254218],\n",
" [0.83943984, 0.32146997, 0.59196573, 0.6836961 , 0.03665406,\n",
" 0.75820591, 0.29457384, 0.27667737, 0.61236251, 0.29902099,\n",
" 0.17876748, 0.88709761],\n",
" [0.48377523, 0.38527968, 0.12618517, 0.42833944, 0.50914349,\n",
" 0.41111474, 0.44888022, 0.74018461, 0.04999605, 0.37316789,\n",
" 0.8514738 , 0.26695911],\n",
" [0.85219505, 0.28867415, 0.6164554 , 0.69177126, 0. ,\n",
" 0.78519746, 0.36838812, 0.38211587, 0.62055586, 0.3013742 ,\n",
" 0.22989701, 0.88030156]])"
]
},
"execution_count": 59,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X = df_scaled[['mfcc_1', 'mfcc_2', 'mfcc_3', 'mfcc_4', 'mfcc_5', 'mfcc_6', 'mfcc_7', 'mfcc_8', 'mfcc_9', 'mfcc_10', 'mfcc_11', 'mfcc_12']]\n",
"X = np.array(X)\n",
"X[:13]"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Yy7-vajIkl70"
},
"source": [
"# One-Hot Encoding\n",
"\n",
"One-hot encoding adalah suatu metode yang digunakan untuk menggambarkan data kategorikal atau nilai kelas dalam bentuk vektor biner. Tujuannya adalah untuk memberikan representasi numerik yang sesuai dengan nilai kelas atau kategori tanpa memberikan arti atau urutan numerik yang salah."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"background_save": true,
"base_uri": "https://localhost:8080/"
},
"id": "GGGs7-w4kl72",
"outputId": "df1267a4-831d-4d6d-f6ca-22147dd9d309"
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/usr/local/lib/python3.10/dist-packages/sklearn/preprocessing/_encoders.py:868: FutureWarning: `sparse` was renamed to `sparse_output` in version 1.2 and will be removed in 1.4. `sparse_output` is ignored unless you leave `sparse` to its default value.\n",
" warnings.warn(\n"
]
},
{
"data": {
"text/plain": [
"array([[0., 0., 0., 0., 1.],\n",
" [0., 0., 0., 0., 1.],\n",
" [0., 1., 0., 0., 0.],\n",
" [0., 1., 0., 0., 0.],\n",
" [0., 1., 0., 0., 0.]])"
]
},
"execution_count": 60,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from sklearn.preprocessing import OneHotEncoder\n",
"one_hot_encoder = OneHotEncoder(sparse=False)\n",
"\n",
"Y = df_scaled.target\n",
"Y = one_hot_encoder.fit_transform(np.array(Y).reshape(-1, 1))\n",
"Y[:5]"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "-KmMV_oSkl75"
},
"source": [
"# Menentukan Data Latih, Data Uji dan Data Validasi\n",
"\n",
"Dataframe yang awalnya memiliki 150 data, dipecah menjadi data latih dan data sisa dengan perbandingan 60:40, 70:30, 80:20. Data yang tersisa dipecah kembali menjadi data uji dan data validasi dengan perbandingan 60:40, 70:30, 80:20"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"background_save": true
},
"id": "ZYA1UShMkl77"
},
"outputs": [],
"source": [
"from sklearn.model_selection import train_test_split\n",
"X_train, X_temp, Y_train, Y_temp = train_test_split(X, Y, test_size=0.2, random_state=42)\n",
"X_val, X_test, Y_val, Y_test = train_test_split(X_temp, Y_temp, test_size=0.8, random_state=42)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"background_save": true,
"base_uri": "https://localhost:8080/"
},
"id": "Zv6QbhfO721L",
"outputId": "8c738641-4327-454a-eb39-3c9f14d538b6"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"120\n",
"24\n",
"6\n",
"120\n",
"24\n",
"6\n"
]
}
],
"source": [
"print(len(X_train))\n",
"print(len(X_test))\n",
"print(len(X_val))\n",
"print(len(Y_train))\n",
"print(len(Y_test))\n",
"print(len(Y_val))"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "xGflcOX8kl7-"
},
"source": [
"# Implementasi Backpropagation\n",
"\n",
"Fungsi utama `NeuralNetwork` akan melatih jaringan untuk jumlah epoch yang ditentukan. Pada awalnya, bobot jaringan akan diinisialisasi secara acak dengan `InitializeWeights`. Kemudian, di setiap epoch, bobot akan diperbarui dengan `Train` dan setiap 20 epoch nilai loss baik untuk set pelatihan maupun validasi akan dicetak oleh fungsi `Loss`. Di akhir pelatihan, akan dicetak grafik kurva pembelajaran model oleh fungsi ` PlotLearningCurve` Sebagai input, fungsi menerima yang berikut:\n",
"\n",
"* `X_train`, `Y_train`: Data pelatihan dan nilai target.\n",
"* `X_val`, `Y_val`: Data validasi dan nilai target\n",
"* `epochs`: Jumlah epoch. Defaultnya di 10.\n",
"* `node`: Daftar neuron pada setiap layers. Setiap bilangan bulat menunjukkan jumlah neuron di setiap lapisan. Panjang daftar ini menunjukkan jumlah lapisan. Artinya, setiap bilangan bulat dalam daftar ini sesuai dengan jumlah node di setiap lapisan.\n",
"* `lr`: Kecepatan pembelajaran algoritma pelatihan backpropagation. Defaultnya adalah 0,15."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"background_save": true
},
"id": "cMErf613kl7_"
},
"outputs": [],
"source": [
"def NeuralNetwork(X_train, Y_train, X_val=None, Y_val=None, epochs=10, nodes=[], lr=0.15):\n",
" hidden_layers = len(nodes) - 1\n",
" weights = InitializeWeights(nodes)\n",
"\n",
" train_losses, val_losses = [], []\n",
"\n",
" for epoch in range(1, epochs+1):\n",
" weights = Train(X_train, Y_train, lr, weights)\n",
"\n",
" if epoch % 20 == 0:\n",
" print(\"Epoch {}\".format(epoch))\n",
" train_loss = Loss(X_train, Y_train, weights)\n",
" train_losses.append(train_loss)\n",
" print(\"Training Loss: {}\".format(train_loss))\n",
"\n",
" if X_val is not None:\n",
" val_loss = Loss(X_val, Y_val, weights)\n",
" val_losses.append(val_loss)\n",
" print(\"Validation Loss: {}\".format(val_loss))\n",
"\n",
" PlotLearningCurve(train_losses, val_losses)\n",
" return weights\n",
"\n",
"def PlotLearningCurve(train_losses, val_losses):\n",
" epochs = range(20, len(train_losses)*20 + 1, 20)\n",
"\n",
" plt.plot(epochs, train_losses, label='Training Loss')\n",
" plt.plot(epochs, val_losses, label='Validation Loss')\n",
" plt.title('Learning Curve')\n",
" plt.xlabel('Epochs')\n",
" plt.ylabel('Loss')\n",
" plt.legend()\n",
" plt.show()\n",
"\n",
"def Loss(X, Y, weights):\n",
" loss = 0\n",
" for i in range(len(X)):\n",
" x, y = X[i], Y[i]\n",
" x = np.append(1, x) # Augment feature vector\n",
" activations = ForwardPropagation(x, weights, len(weights))\n",
" output = activations[-1].A1\n",
" loss += np.sum((y - output) ** 2) / 2\n",
"\n",
" return loss / len(X)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "x_hdYTW7lMWl"
},
"source": [
"# Inisialisasi Bobot\n",
"\n",
"Inisialisasi bobot adalah langkah awal di mana nilai-nilai bobot antara neuron-neuron dalam jaringan saraf diatur dengan nilai awal tertentu sebelum proses pelatihan dimulai. Inisialisasi bobot yang baik dapat mempengaruhi kinerja jaringan secara keseluruhan."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"background_save": true
},
"id": "hAd1Vn5skl8D"
},
"outputs": [],
"source": [
"def InitializeWeights(nodes):\n",
" \"\"\"Initialize weights with random values in [-1, 1] (including bias)\"\"\"\n",
" layers, weights = len(nodes), []\n",
"\n",
" for i in range(1, layers):\n",
" w = [[np.random.uniform(-1, 1) for k in range(nodes[i-1] + 1)]\n",
" for j in range(nodes[i])]\n",
" weights.append(np.matrix(w))\n",
"\n",
" return weights"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "wGG76tswlTU-"
},
"source": [
"# Fungsi Aktivasi (Sigmoid dan turunannya)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"background_save": true
},
"id": "Wt5SYx11iVda"
},
"outputs": [],
"source": [
"def Sigmoid(x):\n",
" return 1 / (1 + np.exp(-x))\n",
"\n",
"def SigmoidDerivative(x):\n",
" return np.multiply(x, 1-x)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "R07julrUkl8E"
},
"source": [
"# Feed Forward\n",
"\n",
"* Setiap lapisan menerima input dan menghitung output. Keluarannya dihitung dengan perkalian dot antara data input dan bobot pada hidden layer, lalu meneruskan perkalian dot ini melalui fungsi aktivasi (dalam hal ini, fungsi sigmoid).\n",
"* Output dari setiap lapisan adalah input pada lapisan berikutnya.\n",
"* Masukan input pertama adalah vektor fitur. Pada dataset Crop ada 7 fitur yang digunakan"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"background_save": true
},
"id": "Kwlht6NSkl8F"
},
"outputs": [],
"source": [
"def ForwardPropagation(x, weights, layers):\n",
" activations, layer_input = [x], x\n",
" for j in range(layers):\n",
" activation = Sigmoid(np.dot(layer_input, weights[j].T))\n",
" activations.append(activation)\n",
" layer_input = np.append(1, activation)\n",
"\n",
" return activations"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "xa-Usfp7kl8G"
},
"source": [
"# Backward Propagation:\n",
"\n",
"* Hitung error yang dihasilkan dari Feed Forward\n",
"* Hitung error per layer dengan cara:\n",
" * Menghitung Delta menggunakan turunan fungsi Sigmoid yang dikalikan dengan error yang telah dihitung\n",
" * Update bobot pada layer sekarang dengan mengkalikan delta dengan input dari layer sebelumnya (hasil dari fungsi aktivasi) dan learning rate\n",
" * Update error pada layer yang sekarang dengan delta dan bobot yang baru."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"background_save": true
},
"id": "ZuhN8mJAkl8H"
},
"outputs": [],
"source": [
"def BackPropagation(y, activations, weights, layers):\n",
" outputFinal = activations[-1]\n",
" error = np.matrix(y - outputFinal) # Error at output\n",
"\n",
" for j in range(layers, 0, -1):\n",
" currActivation = activations[j]\n",
"\n",
" if(j > 1):\n",
" # Augment previous activation\n",
" prevActivation = np.append(1, activations[j-1])\n",
" else:\n",
" # First hidden layer, prevActivation is input (without bias)\n",
" prevActivation = activations[0]\n",
"\n",
" delta = np.multiply(error, SigmoidDerivative(currActivation))\n",
" weights[j-1] += lr * np.multiply(delta.T, prevActivation)\n",
"\n",
" w = np.delete(weights[j-1], [0], axis=1)\n",
" error = np.dot(delta, w) # Calculate error for current layer\n",
"\n",
" return weights"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "VJiiblGbn1MH"
},
"source": [
"# Fungsi Pelatihan, Prediksi dan Perhitungan Akurasi"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"background_save": true
},
"id": "1WqMoGM9kl8J"
},
"outputs": [],
"source": [
"def Train(X, Y, lr, weights):\n",
" layers = len(weights)\n",
" for i in range(len(X)):\n",
" x, y = X[i], Y[i]\n",
" x = np.matrix(np.append(1, x)) # Augment feature vector\n",
"\n",
" activations = ForwardPropagation(x, weights, layers)\n",
" weights = BackPropagation(y, activations, weights, layers)\n",
"\n",
" return weights"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"background_save": true
},
"id": "Zgg5m9xMkl8O"
},
"outputs": [],
"source": [
"def Predict(item, weights):\n",
" layers = len(weights)\n",
" item = np.append(1, item) # Augment feature vector\n",
"\n",
" ##_Forward Propagation_##\n",
" activations = ForwardPropagation(item, weights, layers)\n",
"\n",
" outputFinal = activations[-1].A1\n",
" index = np.argmax(outputFinal)\n",
"\n",
" # Initialize prediction vector to zeros\n",
" y = [0 for i in range(len(outputFinal))]\n",
" y[index] = 1 # Set guessed class to 1\n",
"\n",
" return y # Return prediction vector"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"background_save": true
},
"id": "2r-cFvFmkl8R"
},
"outputs": [],
"source": [
"def Accuracy(X, Y, weights):\n",
" \"\"\"Run set through network, find overall accuracy\"\"\"\n",
" correct = 0\n",
"\n",
" for i in range(len(X)):\n",
" x, y = X[i], np.array(Y[i]) # Convert y to numpy array\n",
" guess = Predict(x, weights)\n",
"\n",
" # Find the index with the maximum probability\n",
" predicted_class = np.argmax(guess)\n",
" true_class = np.argmax(y)\n",
"\n",
" if predicted_class == true_class:\n",
" # Guessed correctly\n",
" correct += 1\n",
"\n",
" return correct / len(X)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "EJzI3NMkU3z7"
},
"source": [
"# Proses Pelatihan"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"background_save": true,
"base_uri": "https://localhost:8080/",
"height": 732
},
"id": "EcjPREEjkl8X",
"outputId": "89111fbe-857d-43d9-f9d1-dee66ec6beae"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 20\n",
"Training Loss: 0.2743344314418524\n",
"Validation Loss: 0.2107634927801524\n",
"Epoch 40\n",
"Training Loss: 0.10002890201240483\n",
"Validation Loss: 0.057043416301975756\n",
"Epoch 60\n",
"Training Loss: 0.05027575749186288\n",
"Validation Loss: 0.024504097397193978\n",
"Epoch 80\n",
"Training Loss: 0.032250441547394454\n",
"Validation Loss: 0.01798263111575391\n",
"Epoch 100\n",
"Training Loss: 0.022498480908666536\n",
"Validation Loss: 0.015101545170579982\n"
]
},
{
"data": {
"image/png": "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o0t0KT169GDChAl89tlnRQpAYWFh/Pnnnxesz+9EFVXPnj3529/+5hgG27VrF6NHj3bapm7duqSlpV32dyUiugxeRC7BarXSu3dv/vOf/7Bt27YLPi94eXl+56Vgt+PXX39lzZo1pV9oMXTp0gVPT0+mTZvmtL7gpeSX0q5dO7p168bHH3/M/PnzL/g8KyuLUaNGOd7XrVuXP/74w+lntXnzZlavXl2sukNDQ4mPj2fOnDnMmjULb29vevbs6bRNnz59WLNmDYsWLbrg+0lJSeTk5BTrmCKuTB0gEeGTTz5h4cKFF6x/4oknmDhxIsuXLyc2NpaHH36YJk2acOrUKTZs2MDSpUs5deoUALfffjtff/01vXr14rbbbmPfvn1Mnz6dJk2akJaWVtandFHh4eE88cQTvPnmm9xxxx1069aNzZs38/3331OlShWn7tXFfPrpp3Tt2pW77rqLHj160KVLFwICAti9ezezZs0iISHBcS+gBx54gLfeeov4+HgefPBBjh8/zvTp02natGmRJnUX1LdvX/7v//6P999/n/j4+AvmID311FMsWLCA22+/nUGDBtG6dWvOnDnD1q1b+eqrr9i/f7/TkJmIO1MAEpELuiH5Bg0aRI0aNVi7di0vv/wyX3/9Ne+//z6VK1emadOmTvflGTRoEImJiXzwwQcsWrSIJk2a8NlnnzF37lxWrFhRRmdSNJMmTcLf35+PPvqIpUuX0q5dOxYvXswNN9yAr6/vZb9ftWpVfv75Z95//31mz57NmDFjyMrKolatWtxxxx088cQTjm0bN27Mp59+ytixYxk5ciRNmjTh3//+N1988UWxfy533HEHfn5+pKamOl39lc/f35+VK1fy2muvMXfuXD799FOCg4Np0KABL730EiEhIcU6nogrsxglNTNQRKQCS0pKIiwsjFdeeaXEHmUhIuWX5gCJiNs5e/bsBevy75Jc2GMrRMT1aAhMRNzO7NmzmTlzJrfeeiuBgYGsWrWKL7/8kq5du9KhQwezyxORMqAAJCJup3nz5nh6evL666+TkpLimBj9yiuvmF2aiJQRzQESERERt6M5QCIiIuJ2FIBERETE7WgOUCFsNhtHjx4lKCioSDdFExEREfMZhkFqaipRUVF4eFy6x6MAVIijR48SHR1tdhkiIiJyBQ4dOkSNGjUuuY0CUCGCgoIA+w8w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\n",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"f = len(X[0]) # Number of features\n",
"o = len(Y[0]) # Number of outputs / classes\n",
"\n",
"layers = [f, 8, o] # Number of nodes in layers\n",
"lr, epochs = 0.15, 100\n",
"\n",
"weights = NeuralNetwork(X_train, Y_train, X_val, Y_val, epochs=epochs, nodes=layers, lr=lr);"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"background_save": true
},
"id": "EuR5PMOvU_0r",
"outputId": "970d5ea5-f7ee-4887-e37d-40e5562f7dbd"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Testing Accuracy in Train Data: 0.9916666666666667\n"
]
}
],
"source": [
"print(\"Testing Accuracy in Train Data: {}\".format(Accuracy(X_train, Y_train, weights)))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"background_save": true,
"base_uri": "https://localhost:8080/",
"height": 263
},
"id": "VNgszmVDkl8a",
"outputId": "5fef1a6e-6357-4832-9489-65a5e29b3ae6"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Testing Accuracy in Testing Data: 0.9583333333333334\n"
]
}
],
"source": [
"print(\"Testing Accuracy in Testing Data: {}\".format(Accuracy(X_test, Y_test, weights)))"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "oNoUt45XVEH4"
},
"source": [
"# Laporan Klasifikasi"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"background_save": true
},
"id": "Og9UUMobR7H3"
},
"outputs": [],
"source": [
"from sklearn.metrics import classification_report, confusion_matrix\n",
"target_names = 'Hilmi', 'Tanti', 'Vasyilla', 'Yudha', 'Random'"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"background_save": true
},
"id": "jGmuimic_FqL"
},
"outputs": [],
"source": [
"predictions = [Predict(x, weights) for x in X_test]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"background_save": true,
"base_uri": "https://localhost:8080/"
},
"id": "F-FLPqEzUuxH",
"outputId": "464c4df5-9e1c-429a-8653-06e8fadc325b"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" precision recall f1-score support\n",
"\n",
" Hilmi 1.00 0.75 0.86 4\n",
" Tanti 0.67 1.00 0.80 2\n",
" Vasyilla 1.00 1.00 1.00 4\n",
" Yudha 1.00 1.00 1.00 6\n",
" Random 1.00 1.00 1.00 8\n",
"\n",
" micro avg 0.96 0.96 0.96 24\n",
" macro avg 0.93 0.95 0.93 24\n",
"weighted avg 0.97 0.96 0.96 24\n",
" samples avg 0.96 0.96 0.96 24\n",
"\n"
]
}
],
"source": [
"print(classification_report(Y_test, predictions, target_names=target_names))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"background_save": true,
"base_uri": "https://localhost:8080/"
},
"id": "cUbJcTvhso7g",
"outputId": "837a981b-5e65-4980-d840-08f7d61601e3"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Total True Positives (TP): 23\n",
"Total True Negatives (TN): 95\n",
"Total False Positives (FP): 1\n",
"Total False Negatives (FN): 1\n"
]
}
],
"source": [
"from sklearn.metrics import confusion_matrix\n",
"\n",
"# Menghitung confusion matrix\n",
"cm = confusion_matrix(Y_test.argmax(axis=1), np.array(predictions).argmax(axis=1))\n",
"\n",
"# Hitung True Positives (TP) untuk setiap kelas\n",
"TP = np.diag(cm)\n",
"\n",
"TN = []\n",
"FP = []\n",
"FN = []\n",
"for i in range(len(cm)):\n",
" temp = np.delete(cm, i, 0) # hapus baris ke-i\n",
" temp = np.delete(temp, i, 1) # hapus kolom ke-i\n",
" TN.append(np.sum(np.delete(np.delete(cm, i, 0), i, 1)))\n",
" FP.append(np.sum(cm[:, i]) - cm[i, i])\n",
" FN.append(np.sum(cm[i, :]) - cm[i, i])\n",
"\n",
"# Hitung total TP, TN, FP, FN\n",
"total_TP = np.sum(TP)\n",
"total_TN = np.sum(TN)\n",
"total_FP = np.sum(FP)\n",
"total_FN = np.sum(FN)\n",
"\n",
"# Cetak total\n",
"print(f\"Total True Positives (TP): {total_TP}\")\n",
"print(f\"Total True Negatives (TN): {total_TN}\")\n",
"print(f\"Total False Positives (FP): {total_FP}\")\n",
"print(f\"Total False Negatives (FN): {total_FN}\")\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "FsiT6R4wVby-"
},
"source": [
"# Kesimpulan\n",
"\n",
"Pembuatan *artificial neural network* menggunakan metode Backpropagation menggunakan dataset Crop Recommendation memerlukan beberapa langkah, seperti Data Understanding, Data Preparation, Implementasi Neural Network menggunakan Feedforward dan Backpropagation, serta Training dengan menggunakan 150 data.\n",
"\n",
"Hasil dari training menunjukkan bahwa tidak adanya underfitting maupun overfitting dengan kurva pembelajaran yang normal. Akurasi prediksi data mencapai 1.0 dengan menggunakan data test sebanyak 48 data"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "MICH6eE4rzbM"
},
"source": [
"# adada"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"background_save": true
},
"id": "k1lcyhnJ5-ZJ"
},
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import h5py"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"background_save": true
},
"id": "qApq_Oqh5Uf_"
},
"outputs": [],
"source": [
"# Load the model\n",
"def load_model(filepath):\n",
" weights = []\n",
" with h5py.File(filepath, 'r') as f:\n",
" for i in range(len(f.keys())):\n",
" weights.append(f['weight_{}'.format(i)][:])\n",
" return weights"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"background_save": true
},
"id": "AV50Ldtv5cit"
},
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"from sklearn.model_selection import train_test_split\n",
"from sklearn.preprocessing import StandardScaler, LabelEncoder\n",
"from keras.models import Sequential\n",
"from keras.layers import Dense\n",
"from keras.optimizers import Adam\n",
"from keras.utils import to_categorical\n",
"import librosa\n",
"import librosa.display\n",
"import os\n",
"from scipy.fftpack import dct\n",
"from keras.models import load_model\n",
"import matplotlib.pyplot as plt\n",
"from keras.callbacks import History"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"background_save": true
},
"id": "eQNJ2Djc5cx4"
},
"outputs": [],
"source": [
"# Fungsi pre-emphasis\n",
"def pre_emphasis(signal, coefficient=0.97):\n",
" return np.append(signal[0], signal[1:] - coefficient * signal[:-1])"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"background_save": true
},
"id": "k_ExiPrd5geI"
},
"outputs": [],
"source": [
"# Fungsi framing\n",
"def framing(signal, sample_rate, frame_length=0.025, frame_step=0.010):\n",
" nsamples_signal = len(signal)\n",
" nsamples_frame = int(round(frame_length * sample_rate))\n",
" nsamples_stride = int(round(frame_step * sample_rate))\n",
" n_frames = int(np.ceil((nsamples_signal - nsamples_frame) / nsamples_stride) + 1)\n",
" nsamples_padding = ((n_frames - 1) * nsamples_stride + nsamples_frame) - nsamples_signal\n",
" z = np.zeros(nsamples_padding)\n",
" signal = np.append(signal, z)\n",
" frames = np.empty((n_frames, nsamples_frame))\n",
" for i in range(n_frames):\n",
" left = i * nsamples_stride\n",
" right = left + nsamples_frame\n",
" frame = signal[left:right]\n",
" frames[i] = frame\n",
" return frames"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"background_save": true
},
"id": "vH9dRugm5h1v"
},
"outputs": [],
"source": [
"# Fungsi untuk mengekstrak fitur MFCC dari file audio\n",
"def extract_mfcc(audio_file, sr=44100, frame_length=0.025, frame_step=0.010, nfilt=40, num_ceps=12):\n",
" y, _ = librosa.load(audio_file, sr=sr)\n",
"\n",
" # Normalize\n",
" y_norm = librosa.util.normalize(y)\n",
"\n",
" # Pre-emphasis\n",
" y_pre_emphasis = pre_emphasis(y_norm)\n",
"\n",
" # Framing\n",
" frames = framing(y_pre_emphasis, sr, frame_length, frame_step)\n",
"\n",
" # Hamming window\n",
" frames *= np.hanning(len(frames[0]))\n",
"\n",
" # FFT\n",
" NFFT = 512\n",
" mag_frames = np.absolute(np.fft.rfft(frames, NFFT))\n",
" pow_frames = ((1.0 / NFFT) * ((mag_frames) ** 2))\n",
"\n",
" # Mel filter bank\n",
" low_freq_mel = 0\n",
" high_freq_mel = (2595 * np.log10(1 + (sr / 2) / 700))\n",
" mel_points = np.linspace(low_freq_mel, high_freq_mel, nfilt + 2)\n",
" hz_points = (700 * (10**(mel_points / 2595) - 1))\n",
" bin = np.floor((NFFT + 1) * hz_points / sr)\n",
"\n",
" fbank = np.zeros((nfilt, int(np.floor(NFFT / 2 + 1))))\n",
" for m in range(1, nfilt + 1):\n",
" f_m_minus = int(bin[m - 1])\n",
" f_m = int(bin[m])\n",
" f_m_plus = int(bin[m + 1])\n",
" for k in range(f_m_minus, f_m):\n",
" fbank[m - 1, k] = (k - bin[m - 1]) / (bin[m] - bin[m - 1])\n",
" for k in range(f_m, f_m_plus):\n",
" fbank[m - 1, k] = (bin[m + 1] - k) / (bin[m + 1] - bin[m])\n",
"\n",
" filter_banks = np.dot(pow_frames, fbank.T)\n",
" filter_banks = np.where(filter_banks == 0, np.finfo(float).eps, filter_banks)\n",
" filter_banks = 20 * np.log10(filter_banks)\n",
"\n",
" # Discrete Cosine Transform (DCT) for MFCC\n",
" mfcc = dct(filter_banks, type=2, axis=1, norm='ortho')[:, 1:(num_ceps + 1)]\n",
"\n",
" return np.mean(mfcc, axis=0)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"background_save": true
},
"id": "HAqWfz1D5k3i"
},
"outputs": [],
"source": [
"def Predict(item, weights, target_names):\n",
" layers = len(weights)\n",
" item = np.append(1, item) # Augment feature vector\n",
"\n",
" activations = ForwardPropagation(item, weights, layers)\n",
"\n",
" outputFinal = activations[-1].flatten()\n",
" index = np.argmax(outputFinal)\n",
"\n",
" predicted_class = target_names[index]\n",
" return predicted_class\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"background_save": true
},
"id": "AOWrW0tp5jWd"
},
"outputs": [],
"source": [
"# Read the WAV file and extract MFCC features\n",
"wav_file = \"/content/drive/MyDrive/Skripsi/Test/label-2-depan-mati_siVeWW7T.wav\"\n",
"mfcc_features = extract_mfcc(wav_file)\n",
"testing = mfcc_features.reshape(1, -1)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"background_save": true,
"base_uri": "https://localhost:8080/",
"height": 193
},
"id": "Glg25YVv5uHZ",
"outputId": "5713a048-c2df-436b-80a0-f9486fff52cc"
},
"outputs": [
{
"ename": "NameError",
"evalue": "name 'model_user' is not defined",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-86-96c5bf00687d>\u001b[0m in \u001b[0;36m<cell line: 5>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;31m# Predict the class of the sound sample\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m \u001b[0mprediction\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mPredict\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtesting\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmodel_user\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtarget_names\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 6\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mf\"Predicted class: {prediction}\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mNameError\u001b[0m: name 'model_user' is not defined"
]
}
],
"source": [
"# Define the target names\n",
"target_names = ['Hilmi', 'Tanti', 'Vasyilla', 'Yudha', 'Random']\n",
"\n",
"# Predict the class of the sound sample\n",
"prediction = Predict(testing, model_user, target_names)\n",
"print(f\"Predicted class: {prediction}\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"background_save": true
},
"id": "7JaOTyLH5uUk"
},
"outputs": [],
"source": []
}
],
"metadata": {
"colab": {
"provenance": []
},
"kaggle": {
"accelerator": "none",
"dataSources": [
{
"datasetId": 1046158,
"sourceId": 1760012,
"sourceType": "datasetVersion"
}
],
"dockerImageVersionId": 30635,
"isGpuEnabled": false,
"isInternetEnabled": true,
"language": "python",
"sourceType": "notebook"
},
"kernelspec": {
"display_name": "Python 3",
"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.6.6"
}
},
"nbformat": 4,
"nbformat_minor": 0
}