{ "cells": [ { "cell_type": "code", "execution_count": 53, "metadata": {}, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "import pandas as pd\n", "from kneed import KneeLocator\n", "from sklearn.datasets import make_blobs\n", "from sklearn.cluster import KMeans\n", "from sklearn.metrics import silhouette_score\n", "from sklearn.preprocessing import StandardScaler\n", "from sklearn.decomposition import PCA\n", "import seaborn as sns" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Import data" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [], "source": [ "url = 'https://raw.githubusercontent.com/arofiqimaulana/dataset/master/iris.csv'\n", "df = pd.read_csv(url)" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
sepal length (cm)sepal width (cm)petal length (cm)petal width (cm)targetflower_name
05.13.51.40.20setosa
14.93.01.40.20setosa
24.73.21.30.20setosa
34.63.11.50.20setosa
45.03.61.40.20setosa
\n", "
" ], "text/plain": [ " sepal length (cm) sepal width (cm) petal length (cm) petal width (cm) \\\n", "0 5.1 3.5 1.4 0.2 \n", "1 4.9 3.0 1.4 0.2 \n", "2 4.7 3.2 1.3 0.2 \n", "3 4.6 3.1 1.5 0.2 \n", "4 5.0 3.6 1.4 0.2 \n", "\n", " target flower_name \n", "0 0 setosa \n", "1 0 setosa \n", "2 0 setosa \n", "3 0 setosa \n", "4 0 setosa " ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.head()" ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [], "source": [ "X = df[['sepal length (cm)','sepal width (cm)','petal length (cm)','petal width (cm)']]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Standarisasi" ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [], "source": [ "scaler = StandardScaler()\n", "scaled_features = scaler.fit_transform(X)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Clustering\n", "Meskipun k-mean tidak membutuhkan variabel Y, namun kita bisa melakukan validasi menggunakan data berlabel seperti data iris." ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [], "source": [ "kmeans = KMeans(\n", " init=\"random\",\n", " n_clusters=3,\n", " n_init=10,\n", " max_iter=300,\n", " random_state=42\n", ")" ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "KMeans(init='random', n_clusters=3, random_state=42)" ] }, "execution_count": 44, "metadata": {}, "output_type": "execute_result" } ], "source": [ "kmeans.fit(scaled_features)" ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [], "source": [ "labels = pd.DataFrame(kmeans.labels_)\n", "labels.columns = ['label_kmeans']" ] }, { "cell_type": "code", "execution_count": 46, "metadata": {}, "outputs": [], "source": [ "df['labels'] = labels" ] }, { "cell_type": "code", "execution_count": 47, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
sepal length (cm)sepal width (cm)petal length (cm)petal width (cm)targetflower_namelabels
05.13.51.40.20setosa1
14.93.01.40.20setosa1
24.73.21.30.20setosa1
34.63.11.50.20setosa1
45.03.61.40.20setosa1
........................
1456.73.05.22.32virginica0
1466.32.55.01.92virginica2
1476.53.05.22.02virginica0
1486.23.45.42.32virginica0
1495.93.05.11.82virginica2
\n", "

150 rows × 7 columns

\n", "
" ], "text/plain": [ " sepal length (cm) sepal width (cm) petal length (cm) petal width (cm) \\\n", "0 5.1 3.5 1.4 0.2 \n", "1 4.9 3.0 1.4 0.2 \n", "2 4.7 3.2 1.3 0.2 \n", "3 4.6 3.1 1.5 0.2 \n", "4 5.0 3.6 1.4 0.2 \n", ".. ... ... ... ... \n", "145 6.7 3.0 5.2 2.3 \n", "146 6.3 2.5 5.0 1.9 \n", "147 6.5 3.0 5.2 2.0 \n", "148 6.2 3.4 5.4 2.3 \n", "149 5.9 3.0 5.1 1.8 \n", "\n", " target flower_name labels \n", "0 0 setosa 1 \n", "1 0 setosa 1 \n", "2 0 setosa 1 \n", "3 0 setosa 1 \n", "4 0 setosa 1 \n", ".. ... ... ... \n", "145 2 virginica 0 \n", "146 2 virginica 2 \n", "147 2 virginica 0 \n", "148 2 virginica 0 \n", "149 2 virginica 2 \n", "\n", "[150 rows x 7 columns]" ] }, "execution_count": 47, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Visualize using PCA\n", "Visualisasi data paling mudah menggunakan grafik 2 dimensi. Karena kita punya lebih dari 2 variabel, maka kita bisa gunakan PCA untuk menjadikannya menjadi 2 variabel baru." ] }, { "cell_type": "code", "execution_count": 51, "metadata": {}, "outputs": [], "source": [ "pca = PCA(2)\n", "\n", "arr_pca = pca.fit_transform(X)" ] }, { "cell_type": "code", "execution_count": 54, "metadata": {}, "outputs": [], "source": [ "df_pca = pd.DataFrame(arr_pca)\n", "df_pca.columns = ['PC1','PC2']\n", "df_pca['labels'] = labels" ] }, { "cell_type": "code", "execution_count": 55, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 55, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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xRdf+Ox9CIEpLCKEgRHZAPzrradpaLAQHhmC0Sh2MxeEQBYw6wSXLl3KuHHjuPbaawG45JJLGDduHJ999pn7mLy8PMrKytyPR44cydKlS3nrrbc49dRTefvtt1m6dCnDhg3r8voL3UdwaBDxidEiAApCNxAwLcF58+Yxb968ox6zefNmr7KpU6cyderUzqqWIAiCEMACpiUoCIIg9AxPP/00EyZMICUlhczMTC699FK2bt3aKdcSQVAQBEHwKz/++CPXXHMNX375JStWrECr1TJt2jT279/f4dcKmO5QQRAEoWdYvny5x+OXXnqJ1NRU1q5dy9lnn92h1xJBUBAEQTiqkqIyljy/jMp91UTHRDLrxj+RmBzfZddvaGhAURTCw8M7/LVFEBQEQRBaVVJUxq3/dx/FRYdm3m/dtIOnX36oywLh3LlzGThwICNGjOjw1xZjgoIgHJWlsZnGBssx0w0K3dOS55d5BECA4gMtw65w9913s3btWl5//fVO2WBctAQFQWiRzWbnlzUbWfT0UqxWG3+57jImTD5VZMjpYSr3VbdYXtVKeUeaN28ey5cv5+OPPyY9Pb1TriGCoCAILdqxZRd33fyw+/HjDzyHOcjExDPH+LBWQleLjml5a7eoVso7yl133cXy5cv55JNP6NOnT6ddR3SHCoLgRZZlvv/mJ6/y995YgdOp+KBGgq/MuvFPJB0x9peUHM+sG//Uade8/fbbefPNN1myZAnh4eHutJkNDQ0dfi3REhQEwYuqqsTER3uVxyfGoZHFvXNPkpgcz9MvP8SS55dRta+aqC6YHbpkyRIAr2xfd9111zEzhx0vEQQFQfCiqipjxo/gtZffoa62HgCdXseMv1wIYn5Mj5OYHM99j93WZderqanpsmuJICgInUBVVaorawCJqJhwH9emfZJS41ny1tNs3bwTm81OzsA+pGW0f39PQfBHIggKQgerq23gw7c/5bUl7yFLEjOvv5wp088kOCTI11U7bgnJcSQkx/m6GoLQaUTnviB0sPU/bWTJomXYrDaam60sfuY/bFi/xdfVEgShBSIICkIH0mg0fPbh/7zK//fZd52y0FcQhBMjgqAgdCBFUejbP8urvE92bxRFLC0QBH8jgqAgdCBVVTln2iQiIsPcZTGxUUycPAZVVX1YM0EQWiImxghCB0tOTeCVd55hT24BAJl9exEdE+HjWgk9kVarpbGxEbPZ3K1zv6qqSkNDAyaT6bjPFUFQEDpBTFwUMXFRvq6G0MMFBQVhtVqpq6s75rF1dXWEhoZ2Qa06R01NDdHR3gkejkUEQUEQhG7MYDBgMBiOeVxFRQUpKSldUKPOUVFR0a7zxJigIAiC0GOJICgIgiD0WCIICoIgCD2WCIKCIAhCjyXV1NSIxUuCIAhCjyRagoIgCEKPJYKgIAiC0GOJICgIgiD0WCIICoIgCD2WCIKCIAhCjyWCoB+4+eabGTx4MPHx8WRmZnL55ZezY8cOX1erzfbv388dd9zB8OHDiY+Pp3///tx6661UV1f7umpt9p///IfzzjuP1NRUwsPDKSgo8HWVjmnJkiUMGjSIuLg4xo8fz5o1a3xdpeOyevVqLrvsMrKzswkPD2fZsmW+rtJxefrpp5kwYQIpKSlkZmZy6aWXsnXrVl9Xq83+9a9/ccopp5CSkkJKSgpnnHEGX375pa+rdUKeeuopwsPDueOOO9p8jgiCfmDIkCG88MILrFu3jg8++ABVVZk2bRp2u93XVWuT0tJSSktLefDBB1mzZg0vvfQSa9as4ZprrvF11dqsqamJiRMnMnfuXF9XpU2WL1/O3Llzue222/jhhx8YMWIE06dPp7Cw0NdVa7PGxkZycnJ47LHH2pX939d+/PFHrrnmGr788ktWrFiBVqtl2rRp7N+/39dVa5PExEQefPBBvv/+e1auXMm4ceP405/+xJYtW3xdtXZZv349r776Kv379z+u88Q6QT+0ZcsWxowZw/r168nK8t6gNRB89dVXXHrppRQUFARUZvoNGzYwYcIEfv/9d9LS0nxdnVZNmjSJ/v378+yzz7rLTj75ZKZOncr999/vw5q1T1JSEk888QR/+tOffF2VdmtoaCA1NZVly5Zx9tln+7o67ZKens7999/PzJkzfV2V41JbW8v48eP55z//yRNPPEFOTg4LFy5s07miJehnGhsbWbZsGcnJyaSmpvq6Ou1WX1+PwWDAbDb7uirdjs1mY+PGjUycONGjfOLEiaxbt85HtRIaGhpQFIXw8HBfV+W4OZ1OPvjgAxobGxkxYoSvq3Pc/va3vzF16lTGjx9/3OeKrZT8xJIlS7j//vtpbGwkKyuLFStWtGn7E39UU1PDI488wpVXXolWK/7EOlpVVRVOp5OYmBiP8piYmHZvJyOcuLlz5zJw4MCACiJ//PEHkydPprm5maCgIN54443j7k70tVdffZU9e/bw0ksvtet80RLsJPPnzyc8PPyo/1atWuU+fvr06fzwww98+umnZGZmctVVV9HU1OTDd3D87wFcLdnLL7+chIQEHnroIR/V3KU99Q8kR+4Urqpqt9493J/dfffdrF27ltdffx2NRuPr6rRZVlYWq1at4uuvv+aaa67hhhtuCKjJPbm5uTz00EP861//Qq/Xt+s1xG16J7nhhhu45JJLjnpMcnKy+//DwsIICwsjMzOT4cOHk56ezooVK7jssss6u6qtOt730NDQwPTp0wF45513MBqNnVq/Yzne+geKqKgoNBqNV6uvsrLSq3UodL558+axfPlyPv74Y9LT031dneOi1+vJyMgAXBP0fvvtN1544QWef/55H9esbX7++WeqqqoYPXq0u8zpdLJmzRqWLl1KSUnJMXvURBDsJFFRUURFRbXrXFVVUVUVm83WwbU6PsfzHurr65k+fTqqqvL+++8THBzcybU7thP5HfgzvV7P4MGDWblyJdOmTXOXr1y5kilTpviuYj3QXXfdxfLly/nkk0/o06ePr6tzwhRF8fn3zvE499xzGTJkiEfZnDlzyMzM5NZbb21T61AEQR/bs2cPK1as4LTTTiMqKoqSkhL+8Y9/oNfrOfPMM31dvTapr6/nwgsvpL6+nmXLltHU1OTuyo2IiGh3N0VXKi8vp7y8nF27dgGwY8cOamtrSUlJISIiwse18zZnzhyuu+46hg4dysiRI1m6dCllZWUBNauvoaGBPXv2AK4v36KiIjZt2kRERAQpKSk+rt2x3X777bzzzju88cYbhIeHU15eDkBQUJBf3AQeywMPPMDkyZNJSkqioaGB999/nx9//JF3333X11Vrs4PDGoczm81ERESQk5PTptcQSyR8rKioiL/97W9s3LiR2tpaYmNjOeWUU7jjjjsC5s5y1apVnH/++S0+9/HHHzN27NgurtHxW7BgAY8//rhX+aJFi/x22v6SJUv45z//SXl5OdnZ2Tz66KOceuqpvq5Wm7X2d3P55ZezePFiH9To+LQ2C/Suu+5i3rx5XVuZdrjhhhtYtWoVFRUVhIaG0r9/f26++WYmTZrk66qdkHPPPfe4lkiIICgIgiD0WGJ2qCAIgtBjiSAoCIIg9FgiCAqCIAg9lgiCgiAIQo8lgqAgCILQY4kgKAiCIPRYIggKgiAIPZYIgoIQwJYtW+aREDwqKoqcnBxuvPFGysrKPI6tr6/nySefZPz48aSkpBAXF8ewYcO444472L17t/u4srIyHnjgAaZMmUJqairh4eF88MEHXf3WBKFLiLRpgtANzJ07l169emG1Wlm7di1vvvkmq1evZs2aNZhMJvLz87ngggsoKChgypQpzJgxA5PJxI4dO1i+fDn/+c9/2LdvH+DKzP/MM8+Qnp7OgAEDWLNmjY/fnSB0HhEEBaEbmDRpEsOHDwfgyiuvJCIigkWLFvHZZ58xdepU/vznP1NWVsaKFSsYM2aMx7n33nuvx7ZXgwcPZs+ePURGRh41JZ4gdAeiO1QQuqFx48YBkJ+fz4oVK9iyZQu33nqrVwAEMBqNPProo+7HISEhREZGdlldBcGXRBAUhG4oLy8PgMjISD7//HMAn+5NKQj+SgRBQegG6urqqKqqori4mOXLl/PEE09gMpk488wz2bFjB6GhoQGxPZEgdDUxJigI3cBFF13k8Tg7O5vHH3+cxMRE6uvrCQkJ8VHNBMG/iSAoCN3A448/Tt++fTEYDCQnJ5OcnIwkSYBrjC8/P9+3FRQEPyWCoCB0AyeffLJ7duiR+vbty6ZNmygqKiI5ObmLayYI/k2MCQpCN3f22WcD8Pbbb/u4JoLgf0QQFIRubsqUKQwYMICnn36an376yet5q9XKPffc44OaCYLvie5QQejmtFotb7zxBtOmTeO8885jypQpnHLKKRgMBnbt2sXy5cupqKjgkUcecZ+zcOFCAAoKCgD45JNP2LNnDwB33HFH178JQegkUk1NjerrSgiC0D7Lli1jzpw5/O9//2t1TPCguro6XnrpJVasWMGePXtwOBykpKQwadIkbrjhBtLT093HhoeHt/o6NTU1HVN5QfADIggKgiAIPZYYExQEQRB6LBEEBUEQhB5LBEFBEAShxxJBUBAEQeixRBAUBEEQeiwRBAVBEIQeSwRBQRAEoccSQVAQBEHosUQQFARBEHosEQQFQRCEHuv/ASni1xzQWbwvAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sns.scatterplot(data=df_pca, x=\"PC1\", y=\"PC2\", hue=\"labels\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Pemilihan k terbaik\n", "Pemilihan k terbaik bisa menggunakan teknik silhouette. Teknik ini menggunakan SSE (Sum of Square) di setiap nilai k. SSE yang sudah tidak terlalu jauh, maka bisa katakan k itulah yang terbaik. \n", "\n", "Berdasarkan grafik di bawah ini, bisa kita katakan bahwa jumlah cluster paling optimal adalah 3. Hal ini karena nilai SSE yang sudah tidak terlalu jauh jika kita pake k=4,k=5,k=6 dst." ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [], "source": [ "kmeans_kwargs = {\n", " \"init\": \"random\",\n", " \"n_init\": 10,\n", " \"max_iter\": 300,\n", " \"random_state\": 42\n", "}" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "C:\\Anaconda\\lib\\site-packages\\sklearn\\cluster\\_kmeans.py:881: UserWarning: KMeans is known to have a memory leak on Windows with MKL, when there are less chunks than available threads. You can avoid it by setting the environment variable OMP_NUM_THREADS=1.\n", " warnings.warn(\n" ] } ], "source": [ "sse = []\n", "for k in range(1, 11):\n", " kmeans = KMeans(n_clusters=k, **kmeans_kwargs)\n", " kmeans.fit(scaled_features)\n", " sse.append(kmeans.inertia_)" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.style.use(\"fivethirtyeight\")\n", "plt.plot(range(1, 11), sse)\n", "plt.xticks(range(1, 11))\n", "plt.xlabel(\"Number of Clusters\")\n", "plt.ylabel(\"SSE\")\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Reference\n", "- https://realpython.com/k-means-clustering-python/\n", "- https://www.askpython.com/python/examples/plot-k-means-clusters-python\n", "- https://seaborn.pydata.org/generated/seaborn.scatterplot.html" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5" } }, "nbformat": 4, "nbformat_minor": 4 }