{ "cells": [ { "cell_type": "markdown", "id": "813222c9-dfa6-490f-ba57-5d1aca11e5c3", "metadata": { "id": "813222c9-dfa6-490f-ba57-5d1aca11e5c3", "tags": [ "remove-cell" ] }, "source": [ "---\n", "license:\n", " code: MIT\n", " content: CC-BY-4.0\n", "github: https://github.com/ocademy-ai/machine-learning\n", "venue: By Ocademy\n", "open_access: true\n", "bibliography:\n", " - https://raw.githubusercontent.com/ocademy-ai/machine-learning/main/open-machine-learning-jupyter-book/references.bib\n", "---" ] }, { "cell_type": "markdown", "id": "753b1c0e", "metadata": { "id": "753b1c0e", "tags": [] }, "source": [ "# K-Means clustering\n", "\n", "In this section, you will learn how to create clusters using Scikit-learn and the Nigerian music dataset you imported earlier. We will cover the basics of K-Means for Clustering. Keep in mind that, as you learned in the earlier section, there are many ways to work with clusters and the method you use depends on your data. We will try K-Means as it's the most common clustering technique. Let's get started!\n", "\n", "Terms you will learn about:\n", "\n", "- Silhouette scoring\n", "- Elbow method\n", "- Inertia\n", "- Variance\n", "\n", "## Introduction\n", "\n", "K-Means Clustering is a method derived from the domain of signal processing. It is used to divide and partition groups of data into 'k' clusters using a series of observations. Each observation works to group a given datapoint closest to its nearest 'mean', or the center point of a cluster.\n", "\n", "The clusters can be visualized as Voronoi diagrams, which include a point (or 'seed') and its corresponding region.\n", "\n", ":::{figure} https://static-1300131294.cos.ap-shanghai.myqcloud.com/images/clustering/voronoi.png\n", "---\n", "name: voronoi diagram\n", "---\n", "voronoi diagram infographic by Jen Looper\n", ":::\n", "\n", "The K-Means clustering process executes in a three-step process):\n", "\n", "- The algorithm selects k-number of center points by sampling from the dataset. After this, it loops:\n", "\n", "1. It assigns each sample to the nearest centroid.\n", "2. It creates new centroids by taking the mean value of all of the samples assigned to the previous centroids.\n", "3. Then, it calculates the difference between the new and old centroids and repeats until the centroids are stabilized.\n", "\n", "One drawback of using K-Means includes the fact that you will need to establish 'k', that is the number of centroids. Fortunately the 'elbow method' helps to estimate a good starting value for 'k'. You'll try it in a minute.\n", "\n", "## Prerequisite\n", "\n", "You will work in this section's _notebook.ipynb_ file that includes the data import and preliminary cleaning you did in the last section.\n", "\n", "## Exercise - preparation\n", "\n", "Start by taking another look at the songs data." ] }, { "cell_type": "code", "execution_count": null, "id": "83752800-50f3-480c-af1d-f9bc675b6db3", "metadata": { "id": "83752800-50f3-480c-af1d-f9bc675b6db3", "tags": [ "hide-input" ] }, "outputs": [], "source": [ "# Install the necessary dependencies\n", "\n", "import os\n", "import sys\n", "!{sys.executable} -m pip install --quiet pandas scikit-learn numpy matplotlib jupyterlab_myst ipython threadpoolctl seaborn" ] }, { "cell_type": "code", "execution_count": 3, "id": "8bf636c3", "metadata": { "tags": [ "hide-input" ] }, "outputs": [ { "data": { "text/html": [ "\n", "
\n", " \n", " A demo of linear-regression. [source]\n", "
\n" ], "text/plain": [ "\n", " \n", " A demo of linear-regression. [source]\n", "
\n", "\"\"\"))" ] }, { "cell_type": "code", "execution_count": 4, "id": "2ae8e949", "metadata": { "attributes": { "classes": [ "code-cell" ], "id": "" }, "colab": { "base_uri": "https://localhost:8080/", "height": 706 }, "id": "2ae8e949", "outputId": "f6329d7f-1760-45c0-a1a6-e10bc296b5e7", "tags": [] }, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 1.0, 'Top genres')" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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4sWLVadOHXXq1EmSVKpUKbVt21alS5dWkSJF7M9F+CAnzvnBbSUoKEivvfaannnmGUVFRWn79u1ycXGR1WpVgQIFNHr0aL3yyiu69957nT1UADlkf/kYN26cPvroI3322Wf6/vvvNW7cOM2fP1/PP/+84uPjNXPmTNWrV09jxozRmjVrHJ6D8AHMkZWVJcn22REfH6/HHntMI0eO1KlTp+zbnDp1Sjt27JDFYlF6ero+//xzVapUSWPHjpWrq6v93EIgJw57wy0rezf1sWPHlJGRoUuXLqlatWqSpNOnT+vFF1/UypUrtXbtWoWFhbFbG7jFnTx5UkOHDlVERITatWunzz77TN26dVPv3r319ttv66GHHtL06dMVEhKi8ePHKzo6muABDBcbG6vIyEj98ccfioiIUKdOnTRixAiFhIRo27Zt6tWrl06dOqXAwEClpaVp3759cnNz4zsBron4wS0p+0Nr+fLlGjp0qNLT03XhwgX16NFDI0aMkKurq86cOaO+ffvqq6++0ooVK1SvXj1nDxvAdaSkpGjVqlVq2LChjhw5ojZt2qhfv37q27evJk6cqAEDBuiBBx7Q0qVL5e/vL4lD3QDT5Dw38KOPPtLgwYP1ySefqH79+lqzZo0iIiL03HPP6fXXX5e/v7927NihdevWydXVVQMGDJCbmxufG7guzvnBLSU7eiwWi1atWqWOHTtq7NixatGihb788kv17NlTSUlJio2NVUBAgKZMmaIuXbqoffv2Onz4sDw9PZ39FgBcg6enp1q0aKECBQpo7dq1qly5sv1YfXd3dz3zzDM6c+aM/Pz87I/hCwxgluzw+e6777Rt2za9/vrrql+/vjIzM9W4cWOtWrVKERERslqtGjt2rOrWrau6devaH0/44J9wzg9uCZs3b9a5c+fsu6jPnDmj2bNna9iwYerZs6csFovGjx+vxo0ba8aMGerfv78uXbqkgIAAzZ49W9u2bSN8gNuAm5vtN7eff/5ZCQkJslgsSklJ0VdffaXmzZtr1apVcnFxsR/vD8A83377rZ599lktXrzYHjIWi8UhgObOnasXXnhBZ86ccXgs4YN/QvzA6davX69nn31Wb731lv78809JkoeHhxo0aKB27drp9OnTat68uR5++GF99dVXGjZsmKZPn66XXnpJqampKlasmEqUKOHkdwHgRmT/wNG9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", "text/plain": [ "