diff --git a/open-machine-learning-jupyter-book/_toc.yml b/open-machine-learning-jupyter-book/_toc.yml
index 6e5831e55b..fb324ef6f8 100644
--- a/open-machine-learning-jupyter-book/_toc.yml
+++ b/open-machine-learning-jupyter-book/_toc.yml
@@ -160,13 +160,13 @@ parts:
- file: assignments/data-science/low-code-no-code-data-science-project-on-azure-ml
- file: assignments/data-science/data-science-project-using-azure-ml-sdk
- file: assignments/data-science/data-science-in-the-cloud-the-azure-ml-sdk-way
+ - file: assignments/ml-advanced/clustering/Research-other-visualizations-for-clustering.md
+ - file: assignments/ml-advanced/clustering/Try-different-clustering-methods.md
- file: assignments/project-plan-template
- file: assignments/machine-learning-productionization/data-engineering
- file: assignments/machine-learning-productionization/counterintuitive-challenges-in-ml-debugging
- file: assignments/machine-learning-productionization/debugging-in-classification
- file: assignments/machine-learning-productionization/debugging-in-regression
- - file: assignments/ml-advanced/clustering/introduction-to-clustering.md
- - file: assignments/ml-advanced/clustering/k-means-clustering.md
- file: slides/introduction
sections:
- file: slides/python-programming/python-programming-introduction
diff --git a/open-machine-learning-jupyter-book/assets/code/clustering/Julia/README.md b/open-machine-learning-jupyter-book/assets/code/clustering/Julia/README.md
new file mode 100644
index 0000000000..43447e1b81
--- /dev/null
+++ b/open-machine-learning-jupyter-book/assets/code/clustering/Julia/README.md
@@ -0,0 +1 @@
+This is a temporary placeholder
\ No newline at end of file
diff --git a/open-machine-learning-jupyter-book/assets/code/clustering/R/lesson_14-R.ipynb b/open-machine-learning-jupyter-book/assets/code/clustering/R/lesson_14-R.ipynb
new file mode 100644
index 0000000000..1a544104a3
--- /dev/null
+++ b/open-machine-learning-jupyter-book/assets/code/clustering/R/lesson_14-R.ipynb
@@ -0,0 +1,489 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "source": [
+ "## **Nigerian Music scraped from Spotify - an analysis**\r\n",
+ "\r\n",
+ "Clustering is a type of [Unsupervised Learning](https://wikipedia.org/wiki/Unsupervised_learning) that presumes that a dataset is unlabelled or that its inputs are not matched with predefined outputs. It uses various algorithms to sort through unlabeled data and provide groupings according to patterns it discerns in the data.\r\n",
+ "\r\n",
+ "[**Pre-lecture quiz**](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/27/)\r\n",
+ "\r\n",
+ "### **Introduction**\r\n",
+ "\r\n",
+ "[Clustering](https://link.springer.com/referenceworkentry/10.1007%2F978-0-387-30164-8_124) is very useful for data exploration. Let's see if it can help discover trends and patterns in the way Nigerian audiences consume music.\r\n",
+ "\r\n",
+ "> โ Take a minute to think about the uses of clustering. In real life, clustering happens whenever you have a pile of laundry and need to sort out your family members' clothes ๐งฆ๐๐๐ฉฒ. In data science, clustering happens when trying to analyze a user's preferences, or determine the characteristics of any unlabeled dataset. Clustering, in a way, helps make sense of chaos, like a sock drawer.\r\n",
+ "\r\n",
+ "In a professional setting, clustering can be used to determine things like market segmentation, determining what age groups buy what items, for example. Another use would be anomaly detection, perhaps to detect fraud from a dataset of credit card transactions. Or you might use clustering to determine tumors in a batch of medical scans.\r\n",
+ "\r\n",
+ "โ Think a minute about how you might have encountered clustering 'in the wild', in a banking, e-commerce, or business setting.\r\n",
+ "\r\n",
+ "> ๐ Interestingly, cluster analysis originated in the fields of Anthropology and Psychology in the 1930s. Can you imagine how it might have been used?\r\n",
+ "\r\n",
+ "Alternately, you could use it for grouping search results - by shopping links, images, or reviews, for example. Clustering is useful when you have a large dataset that you want to reduce and on which you want to perform more granular analysis, so the technique can be used to learn about data before other models are constructed.\r\n",
+ "\r\n",
+ "โ Once your data is organized in clusters, you assign it a cluster Id, and this technique can be useful when preserving a dataset's privacy; you can instead refer to a data point by its cluster id, rather than by more revealing identifiable data. Can you think of other reasons why you'd refer to a cluster Id rather than other elements of the cluster to identify it?\r\n",
+ "\r\n",
+ "### Getting started with clustering\r\n",
+ "\r\n",
+ "> ๐ How we create clusters has a lot to do with how we gather up the data points into groups. Let's unpack some vocabulary:\r\n",
+ ">\r\n",
+ "> ๐ ['Transductive' vs. 'inductive'](https://wikipedia.org/wiki/Transduction_(machine_learning))\r\n",
+ ">\r\n",
+ "> Transductive inference is derived from observed training cases that map to specific test cases. Inductive inference is derived from training cases that map to general rules which are only then applied to test cases.\r\n",
+ ">\r\n",
+ "> An example: Imagine you have a dataset that is only partially labelled. Some things are 'records', some 'cds', and some are blank. Your job is to provide labels for the blanks. If you choose an inductive approach, you'd train a model looking for 'records' and 'cds', and apply those labels to your unlabeled data. This approach will have trouble classifying things that are actually 'cassettes'. A transductive approach, on the other hand, handles this unknown data more effectively as it works to group similar items together and then applies a label to a group. In this case, clusters might reflect 'round musical things' and 'square musical things'.\r\n",
+ ">\r\n",
+ "> ๐ ['Non-flat' vs. 'flat' geometry](https://datascience.stackexchange.com/questions/52260/terminology-flat-geometry-in-the-context-of-clustering)\r\n",
+ ">\r\n",
+ "> Derived from mathematical terminology, non-flat vs. flat geometry refers to the measure of distances between points by either 'flat' ([Euclidean](https://wikipedia.org/wiki/Euclidean_geometry)) or 'non-flat' (non-Euclidean) geometrical methods.\r\n",
+ ">\r\n",
+ "> 'Flat' in this context refers to Euclidean geometry (parts of which are taught as 'plane' geometry), and non-flat refers to non-Euclidean geometry. What does geometry have to do with machine learning? Well, as two fields that are rooted in mathematics, there must be a common way to measure distances between points in clusters, and that can be done in a 'flat' or 'non-flat' way, depending on the nature of the data. [Euclidean distances](https://wikipedia.org/wiki/Euclidean_distance) are measured as the length of a line segment between two points. [Non-Euclidean distances](https://wikipedia.org/wiki/Non-Euclidean_geometry) are measured along a curve. If your data, visualized, seems to not exist on a plane, you might need to use a specialized algorithm to handle it.\r\n",
+ "\r\n",
+ "
\r\n",
+ " \r\n",
+ " Infographic by Dasani Madipalli\r\n",
+ "\r\n",
+ "\r\n",
+ "\r\n",
+ "> ๐ ['Distances'](https://web.stanford.edu/class/cs345a/slides/12-clustering.pdf)\r\n",
+ ">\r\n",
+ "> Clusters are defined by their distance matrix, e.g. the distances between points. This distance can be measured a few ways. Euclidean clusters are defined by the average of the point values, and contain a 'centroid' or center point. Distances are thus measured by the distance to that centroid. Non-Euclidean distances refer to 'clustroids', the point closest to other points. Clustroids in turn can be defined in various ways.\r\n",
+ ">\r\n",
+ "> ๐ ['Constrained'](https://wikipedia.org/wiki/Constrained_clustering)\r\n",
+ ">\r\n",
+ "> [Constrained Clustering](https://web.cs.ucdavis.edu/~davidson/Publications/ICDMTutorial.pdf) introduces 'semi-supervised' learning into this unsupervised method. The relationships between points are flagged as 'cannot link' or 'must-link' so some rules are forced on the dataset.\r\n",
+ ">\r\n",
+ "> An example: If an algorithm is set free on a batch of unlabelled or semi-labelled data, the clusters it produces may be of poor quality. In the example above, the clusters might group 'round music things' and 'square music things' and 'triangular things' and 'cookies'. If given some constraints, or rules to follow (\"the item must be made of plastic\", \"the item needs to be able to produce music\") this can help 'constrain' the algorithm to make better choices.\r\n",
+ ">\r\n",
+ "> ๐ 'Density'\r\n",
+ ">\r\n",
+ "> Data that is 'noisy' is considered to be 'dense'. The distances between points in each of its clusters may prove, on examination, to be more or less dense, or 'crowded' and thus this data needs to be analyzed with the appropriate clustering method. [This article](https://www.kdnuggets.com/2020/02/understanding-density-based-clustering.html) demonstrates the difference between using K-Means clustering vs. HDBSCAN algorithms to explore a noisy dataset with uneven cluster density.\r\n",
+ "\r\n",
+ "Deepen your understanding of clustering techniques in this [Learn module](https://docs.microsoft.com/learn/modules/train-evaluate-cluster-models?WT.mc_id=academic-77952-leestott)\r\n",
+ "\r\n",
+ "### **Clustering algorithms**\r\n",
+ "\r\n",
+ "There are over 100 clustering algorithms, and their use depends on the nature of the data at hand. Let's discuss some of the major ones:\r\n",
+ "\r\n",
+ "- **Hierarchical clustering**. If an object is classified by its proximity to a nearby object, rather than to one farther away, clusters are formed based on their members' distance to and from other objects. Hierarchical clustering is characterized by repeatedly combining two clusters.\r\n",
+ "\r\n",
+ "\r\n",
+ "
\r\n",
+ " \r\n",
+ " Infographic by Dasani Madipalli\r\n",
+ "\r\n",
+ "\r\n",
+ "\r\n",
+ "- **Centroid clustering**. This popular algorithm requires the choice of 'k', or the number of clusters to form, after which the algorithm determines the center point of a cluster and gathers data around that point. [K-means clustering](https://wikipedia.org/wiki/K-means_clustering) is a popular version of centroid clustering which separates a data set into pre-defined K groups. The center is determined by the nearest mean, thus the name. The squared distance from the cluster is minimized.\r\n",
+ "\r\n",
+ "
\r\n",
+ " \r\n",
+ " Infographic by Dasani Madipalli\r\n",
+ "\r\n",
+ "\r\n",
+ "\r\n",
+ "- **Distribution-based clustering**. Based in statistical modeling, distribution-based clustering centers on determining the probability that a data point belongs to a cluster, and assigning it accordingly. Gaussian mixture methods belong to this type.\r\n",
+ "\r\n",
+ "- **Density-based clustering**. Data points are assigned to clusters based on their density, or their grouping around each other. Data points far from the group are considered outliers or noise. DBSCAN, Mean-shift and OPTICS belong to this type of clustering.\r\n",
+ "\r\n",
+ "- **Grid-based clustering**. For multi-dimensional datasets, a grid is created and the data is divided amongst the grid's cells, thereby creating clusters.\r\n",
+ "\r\n",
+ "The best way to learn about clustering is to try it for yourself, so that's what you'll do in this exercise.\r\n",
+ "\r\n",
+ "We'll require some packages to knock-off this module. You can have them installed as: `install.packages(c('tidyverse', 'tidymodels', 'DataExplorer', 'summarytools', 'plotly', 'paletteer', 'corrplot', 'patchwork'))`\r\n",
+ "\r\n",
+ "Alternatively, the script below checks whether you have the packages required to complete this module and installs them for you in case some are missing.\r\n"
+ ],
+ "metadata": {}
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "source": [
+ "suppressWarnings(if(!require(\"pacman\")) install.packages(\"pacman\"))\r\n",
+ "\r\n",
+ "pacman::p_load('tidyverse', 'tidymodels', 'DataExplorer', 'summarytools', 'plotly', 'paletteer', 'corrplot', 'patchwork')\r\n"
+ ],
+ "outputs": [],
+ "metadata": {}
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "## Exercise - cluster your data\n",
+ "\n",
+ "Clustering as a technique is greatly aided by proper visualization, so let's get started by visualizing our music data. This exercise will help us decide which of the methods of clustering we should most effectively use for the nature of this data.\n",
+ "\n",
+ "Let's hit the ground running by importing the data.\n"
+ ],
+ "metadata": {}
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "source": [
+ "# Load the core tidyverse and make it available in your current R session\r\n",
+ "library(tidyverse)\r\n",
+ "\r\n",
+ "# Import the data into a tibble\r\n",
+ "df <- read_csv(file = \"https://raw.githubusercontent.com/microsoft/ML-For-Beginners/main/5-Clustering/data/nigerian-songs.csv\")\r\n",
+ "\r\n",
+ "# View the first 5 rows of the data set\r\n",
+ "df %>% \r\n",
+ " slice_head(n = 5)\r\n"
+ ],
+ "outputs": [],
+ "metadata": {}
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "Sometimes, we may want some little more information on our data. We can have a look at the `data` and `its structure` by using the [*glimpse()*](https://pillar.r-lib.org/reference/glimpse.html) function:\n",
+ "\n"
+ ],
+ "metadata": {}
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "source": [
+ "# Glimpse into the data set\r\n",
+ "df %>% \r\n",
+ " glimpse()\r\n"
+ ],
+ "outputs": [],
+ "metadata": {}
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "Good job!๐ช\n",
+ "\n",
+ "We can observe that `glimpse()` will give you the total number of rows (observations) and columns (variables), then, the first few entries of each variable in a row after the variable name. In addition, the *data type* of the variable is given immediately after each variable's name inside `< >`.\n",
+ "\n",
+ "`DataExplorer::introduce()` can summarize this information neatly:\n"
+ ],
+ "metadata": {}
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "source": [
+ "# Describe basic information for our data\r\n",
+ "df %>% \r\n",
+ " introduce()\r\n",
+ "\r\n",
+ "# A visual display of the same\r\n",
+ "df %>% \r\n",
+ " plot_intro()\r\n"
+ ],
+ "outputs": [],
+ "metadata": {}
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "Awesome! We have just learnt that our data has no missing values.\n",
+ "\n",
+ "While we are at it, we can explore common central tendency statistics (e.g [mean](https://en.wikipedia.org/wiki/Arithmetic_mean) and [median](https://en.wikipedia.org/wiki/Median)) and measures of dispersion (e.g [standard deviation](https://en.wikipedia.org/wiki/Standard_deviation)) using `summarytools::descr()`\n"
+ ],
+ "metadata": {}
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "source": [
+ "# Describe common statistics\r\n",
+ "df %>% \r\n",
+ " descr(stats = \"common\")\r\n"
+ ],
+ "outputs": [],
+ "metadata": {}
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "Let's look at the general values of the data. Note that popularity can be `0`, which show songs that have no ranking. We'll remove those shortly.\n",
+ "\n",
+ "> ๐ค If we are working with clustering, an unsupervised method that does not require labeled data, why are we showing this data with labels? In the data exploration phase, they come in handy, but they are not necessary for the clustering algorithms to work.\n",
+ "\n",
+ "### 1. Explore popular genres\n",
+ "\n",
+ "Let's go ahead and find out the most popular genres ๐ถ by making a count of the instances it appears.\n"
+ ],
+ "metadata": {}
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "source": [
+ "# Popular genres\r\n",
+ "top_genres <- df %>% \r\n",
+ " count(artist_top_genre, sort = TRUE) %>% \r\n",
+ "# Encode to categorical and reorder the according to count\r\n",
+ " mutate(artist_top_genre = factor(artist_top_genre) %>% fct_inorder())\r\n",
+ "\r\n",
+ "# Print the top genres\r\n",
+ "top_genres\r\n"
+ ],
+ "outputs": [],
+ "metadata": {}
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "That went well! They say a picture is worth a thousand rows of a data frame (actually nobody ever says that ๐ ). But you get the gist of it, right?\n",
+ "\n",
+ "One way to visualize categorical data (character or factor variables) is using barplots. Let's make a barplot of the top 10 genres:\n"
+ ],
+ "metadata": {}
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "source": [
+ "# Change the default gray theme\r\n",
+ "theme_set(theme_light())\r\n",
+ "\r\n",
+ "# Visualize popular genres\r\n",
+ "top_genres %>%\r\n",
+ " slice(1:10) %>% \r\n",
+ " ggplot(mapping = aes(x = artist_top_genre, y = n,\r\n",
+ " fill = artist_top_genre)) +\r\n",
+ " geom_col(alpha = 0.8) +\r\n",
+ " paletteer::scale_fill_paletteer_d(\"rcartocolor::Vivid\") +\r\n",
+ " ggtitle(\"Top genres\") +\r\n",
+ " theme(plot.title = element_text(hjust = 0.5),\r\n",
+ " # Rotates the X markers (so we can read them)\r\n",
+ " axis.text.x = element_text(angle = 90))\r\n"
+ ],
+ "outputs": [],
+ "metadata": {}
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "Now it's way easier to identify that we have `missing` genres ๐ง!\n",
+ "\n",
+ "> A good visualisation will show you things that you did not expect, or raise new questions about the data - Hadley Wickham and Garrett Grolemund, [R For Data Science](https://r4ds.had.co.nz/introduction.html)\n",
+ "\n",
+ "Note, when the top genre is described as `Missing`, that means that Spotify did not classify it, so let's get rid of it.\n"
+ ],
+ "metadata": {}
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "source": [
+ "# Visualize popular genres\r\n",
+ "top_genres %>%\r\n",
+ " filter(artist_top_genre != \"Missing\") %>% \r\n",
+ " slice(1:10) %>% \r\n",
+ " ggplot(mapping = aes(x = artist_top_genre, y = n,\r\n",
+ " fill = artist_top_genre)) +\r\n",
+ " geom_col(alpha = 0.8) +\r\n",
+ " paletteer::scale_fill_paletteer_d(\"rcartocolor::Vivid\") +\r\n",
+ " ggtitle(\"Top genres\") +\r\n",
+ " theme(plot.title = element_text(hjust = 0.5),\r\n",
+ " # Rotates the X markers (so we can read them)\r\n",
+ " axis.text.x = element_text(angle = 90))\r\n"
+ ],
+ "outputs": [],
+ "metadata": {}
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "From the little data exploration, we learn that the top three genres dominate this dataset. Let's concentrate on `afro dancehall`, `afropop`, and `nigerian pop`, additionally filter the dataset to remove anything with a 0 popularity value (meaning it was not classified with a popularity in the dataset and can be considered noise for our purposes):\n",
+ "\n"
+ ],
+ "metadata": {}
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "source": [
+ "nigerian_songs <- df %>% \r\n",
+ " # Concentrate on top 3 genres\r\n",
+ " filter(artist_top_genre %in% c(\"afro dancehall\", \"afropop\",\"nigerian pop\")) %>% \r\n",
+ " # Remove unclassified observations\r\n",
+ " filter(popularity != 0)\r\n",
+ "\r\n",
+ "\r\n",
+ "\r\n",
+ "# Visualize popular genres\r\n",
+ "nigerian_songs %>%\r\n",
+ " count(artist_top_genre) %>%\r\n",
+ " ggplot(mapping = aes(x = artist_top_genre, y = n,\r\n",
+ " fill = artist_top_genre)) +\r\n",
+ " geom_col(alpha = 0.8) +\r\n",
+ " paletteer::scale_fill_paletteer_d(\"ggsci::category10_d3\") +\r\n",
+ " ggtitle(\"Top genres\") +\r\n",
+ " theme(plot.title = element_text(hjust = 0.5))\r\n"
+ ],
+ "outputs": [],
+ "metadata": {}
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "Let's see whether there is any apparent linear relationship among the numerical variables in our data set. This relationship is quantified mathematically by the [correlation statistic](https://en.wikipedia.org/wiki/Correlation).\n",
+ "\n",
+ "The correlation statistic is a value between -1 and 1 that indicates the strength of a relationship. Values above 0 indicate a *positive* correlation (high values of one variable tend to coincide with high values of the other), while values below 0 indicate a *negative* correlation (high values of one variable tend to coincide with low values of the other).\n"
+ ],
+ "metadata": {}
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "source": [
+ "# Narrow down to numeric variables and fid correlation\r\n",
+ "corr_mat <- nigerian_songs %>% \r\n",
+ " select(where(is.numeric)) %>% \r\n",
+ " cor()\r\n",
+ "\r\n",
+ "# Visualize correlation matrix\r\n",
+ "corrplot(corr_mat, order = 'AOE', col = c('white', 'black'), bg = 'gold2') \r\n"
+ ],
+ "outputs": [],
+ "metadata": {}
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "The data is not strongly correlated except between `energy` and `loudness`, which makes sense, given that loud music is usually pretty energetic. `Popularity` has a correspondence to `release date`, which also makes sense, as more recent songs are probably more popular. Length and energy seem to have a correlation too.\n",
+ "\n",
+ "It will be interesting to see what a clustering algorithm can make of this data!\n",
+ "\n",
+ "> ๐ Note that correlation does not imply causation! We have proof of correlation but no proof of causation. An [amusing web site](https://tylervigen.com/spurious-correlations) has some visuals that emphasize this point.\n",
+ "\n",
+ "### 2. Explore data distribution\n",
+ "\n",
+ "Let's ask some more subtle questions. Are the genres significantly different in the perception of their danceability, based on their popularity? Let's examine our top three genres data distribution for popularity and danceability along a given x and y axis using [density plots](https://www.khanacademy.org/math/ap-statistics/density-curves-normal-distribution-ap/density-curves/v/density-curves).\n"
+ ],
+ "metadata": {}
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "source": [
+ "# Perform 2D kernel density estimation\r\n",
+ "density_estimate_2d <- nigerian_songs %>% \r\n",
+ " ggplot(mapping = aes(x = popularity, y = danceability, color = artist_top_genre)) +\r\n",
+ " geom_density_2d(bins = 5, size = 1) +\r\n",
+ " paletteer::scale_color_paletteer_d(\"RSkittleBrewer::wildberry\") +\r\n",
+ " xlim(-20, 80) +\r\n",
+ " ylim(0, 1.2)\r\n",
+ "\r\n",
+ "# Density plot based on the popularity\r\n",
+ "density_estimate_pop <- nigerian_songs %>% \r\n",
+ " ggplot(mapping = aes(x = popularity, fill = artist_top_genre, color = artist_top_genre)) +\r\n",
+ " geom_density(size = 1, alpha = 0.5) +\r\n",
+ " paletteer::scale_fill_paletteer_d(\"RSkittleBrewer::wildberry\") +\r\n",
+ " paletteer::scale_color_paletteer_d(\"RSkittleBrewer::wildberry\") +\r\n",
+ " theme(legend.position = \"none\")\r\n",
+ "\r\n",
+ "# Density plot based on the danceability\r\n",
+ "density_estimate_dance <- nigerian_songs %>% \r\n",
+ " ggplot(mapping = aes(x = danceability, fill = artist_top_genre, color = artist_top_genre)) +\r\n",
+ " geom_density(size = 1, alpha = 0.5) +\r\n",
+ " paletteer::scale_fill_paletteer_d(\"RSkittleBrewer::wildberry\") +\r\n",
+ " paletteer::scale_color_paletteer_d(\"RSkittleBrewer::wildberry\")\r\n",
+ "\r\n",
+ "\r\n",
+ "# Patch everything together\r\n",
+ "library(patchwork)\r\n",
+ "density_estimate_2d / (density_estimate_pop + density_estimate_dance)\r\n"
+ ],
+ "outputs": [],
+ "metadata": {}
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "We see that there are concentric circles that line up, regardless of genre. Could it be that Nigerian tastes converge at a certain level of danceability for this genre?\n",
+ "\n",
+ "In general, the three genres align in terms of their popularity and danceability. Determining clusters in this loosely-aligned data will be a challenge. Let's see whether a scatter plot can support this.\n"
+ ],
+ "metadata": {}
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "source": [
+ "# A scatter plot of popularity and danceability\r\n",
+ "scatter_plot <- nigerian_songs %>% \r\n",
+ " ggplot(mapping = aes(x = popularity, y = danceability, color = artist_top_genre, shape = artist_top_genre)) +\r\n",
+ " geom_point(size = 2, alpha = 0.8) +\r\n",
+ " paletteer::scale_color_paletteer_d(\"futurevisions::mars\")\r\n",
+ "\r\n",
+ "# Add a touch of interactivity\r\n",
+ "ggplotly(scatter_plot)\r\n"
+ ],
+ "outputs": [],
+ "metadata": {}
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "A scatterplot of the same axes shows a similar pattern of convergence.\n",
+ "\n",
+ "In general, for clustering, you can use scatterplots to show clusters of data, so mastering this type of visualization is very useful. In the next lesson, we will take this filtered data and use k-means clustering to discover groups in this data that see to overlap in interesting ways.\n",
+ "\n",
+ "## **๐ Challenge**\n",
+ "\n",
+ "In preparation for the next lesson, make a chart about the various clustering algorithms you might discover and use in a production environment. What kinds of problems is the clustering trying to address?\n",
+ "\n",
+ "## [**Post-lecture quiz**](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/28/)\n",
+ "\n",
+ "## **Review & Self Study**\n",
+ "\n",
+ "Before you apply clustering algorithms, as we have learned, it's a good idea to understand the nature of your dataset. Read more on this topic [here](https://www.kdnuggets.com/2019/10/right-clustering-algorithm.html)\n",
+ "\n",
+ "Deepen your understanding of clustering techniques:\n",
+ "\n",
+ "- [Train and Evaluate Clustering Models using Tidymodels and friends](https://rpubs.com/eR_ic/clustering)\n",
+ "\n",
+ "- Bradley Boehmke & Brandon Greenwell, [*Hands-On Machine Learning with R*](https://bradleyboehmke.github.io/HOML/)*.*\n",
+ "\n",
+ "## **Assignment**\n",
+ "\n",
+ "[Research other visualizations for clustering](https://github.com/microsoft/ML-For-Beginners/blob/main/5-Clustering/1-Visualize/assignment.md)\n",
+ "\n",
+ "## THANK YOU TO:\n",
+ "\n",
+ "[Jen Looper](https://www.twitter.com/jenlooper) for creating the original Python version of this module โฅ๏ธ\n",
+ "\n",
+ "[`Dasani Madipalli`](https://twitter.com/dasani_decoded) for creating the amazing illustrations that make machine learning concepts more interpretable and easier to understand.\n",
+ "\n",
+ "Happy Learning,\n",
+ "\n",
+ "[Eric](https://twitter.com/ericntay), Gold Microsoft Learn Student Ambassador.\n"
+ ],
+ "metadata": {}
+ }
+ ],
+ "metadata": {
+ "anaconda-cloud": "",
+ "kernelspec": {
+ "display_name": "R",
+ "language": "R",
+ "name": "ir"
+ },
+ "language_info": {
+ "codemirror_mode": "r",
+ "file_extension": ".r",
+ "mimetype": "text/x-r-source",
+ "name": "R",
+ "pygments_lexer": "r",
+ "version": "3.4.1"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 1
+}
\ No newline at end of file
diff --git a/open-machine-learning-jupyter-book/assets/code/clustering/R/lesson_14.Rmd b/open-machine-learning-jupyter-book/assets/code/clustering/R/lesson_14.Rmd
new file mode 100644
index 0000000000..f2b5551f37
--- /dev/null
+++ b/open-machine-learning-jupyter-book/assets/code/clustering/R/lesson_14.Rmd
@@ -0,0 +1,342 @@
+---
+title: 'Introduction to clustering: Clean, prep and visualize your data'
+output:
+ html_document:
+ df_print: paged
+ theme: flatly
+ highlight: breezedark
+ toc: yes
+ toc_float: yes
+ code_download: yes
+---
+
+## **Nigerian Music scraped from Spotify - an analysis**
+
+Clustering is a type of [Unsupervised Learning](https://wikipedia.org/wiki/Unsupervised_learning) that presumes that a dataset is unlabelled or that its inputs are not matched with predefined outputs. It uses various algorithms to sort through unlabeled data and provide groupings according to patterns it discerns in the data.
+
+[**Pre-lecture quiz**](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/27/)
+
+### **Introduction**
+
+[Clustering](https://link.springer.com/referenceworkentry/10.1007%2F978-0-387-30164-8_124) is very useful for data exploration. Let's see if it can help discover trends and patterns in the way Nigerian audiences consume music.
+
+> โ Take a minute to think about the uses of clustering. In real life, clustering happens whenever you have a pile of laundry and need to sort out your family members' clothes ๐งฆ๐๐๐ฉฒ. In data science, clustering happens when trying to analyze a user's preferences, or determine the characteristics of any unlabeled dataset. Clustering, in a way, helps make sense of chaos, like a sock drawer.
+
+In a professional setting, clustering can be used to determine things like market segmentation, determining what age groups buy what items, for example. Another use would be anomaly detection, perhaps to detect fraud from a dataset of credit card transactions. Or you might use clustering to determine tumors in a batch of medical scans.
+
+โ Think a minute about how you might have encountered clustering 'in the wild', in a banking, e-commerce, or business setting.
+
+> ๐ Interestingly, cluster analysis originated in the fields of Anthropology and Psychology in the 1930s. Can you imagine how it might have been used?
+
+Alternately, you could use it for grouping search results - by shopping links, images, or reviews, for example. Clustering is useful when you have a large dataset that you want to reduce and on which you want to perform more granular analysis, so the technique can be used to learn about data before other models are constructed.
+
+โ Once your data is organized in clusters, you assign it a cluster Id, and this technique can be useful when preserving a dataset's privacy; you can instead refer to a data point by its cluster id, rather than by more revealing identifiable data. Can you think of other reasons why you'd refer to a cluster Id rather than other elements of the cluster to identify it?
+
+### Getting started with clustering
+
+> ๐ How we create clusters has a lot to do with how we gather up the data points into groups. Let's unpack some vocabulary:
+>
+> ๐ ['Transductive' vs. 'inductive'](https://wikipedia.org/wiki/Transduction_(machine_learning))
+>
+> Transductive inference is derived from observed training cases that map to specific test cases. Inductive inference is derived from training cases that map to general rules which are only then applied to test cases.
+>
+> An example: Imagine you have a dataset that is only partially labelled. Some things are 'records', some 'cds', and some are blank. Your job is to provide labels for the blanks. If you choose an inductive approach, you'd train a model looking for 'records' and 'cds', and apply those labels to your unlabeled data. This approach will have trouble classifying things that are actually 'cassettes'. A transductive approach, on the other hand, handles this unknown data more effectively as it works to group similar items together and then applies a label to a group. In this case, clusters might reflect 'round musical things' and 'square musical things'.
+>
+> ๐ ['Non-flat' vs. 'flat' geometry](https://datascience.stackexchange.com/questions/52260/terminology-flat-geometry-in-the-context-of-clustering)
+>
+> Derived from mathematical terminology, non-flat vs. flat geometry refers to the measure of distances between points by either 'flat' ([Euclidean](https://wikipedia.org/wiki/Euclidean_geometry)) or 'non-flat' (non-Euclidean) geometrical methods.
+>
+> 'Flat' in this context refers to Euclidean geometry (parts of which are taught as 'plane' geometry), and non-flat refers to non-Euclidean geometry. What does geometry have to do with machine learning? Well, as two fields that are rooted in mathematics, there must be a common way to measure distances between points in clusters, and that can be done in a 'flat' or 'non-flat' way, depending on the nature of the data. [Euclidean distances](https://wikipedia.org/wiki/Euclidean_distance) are measured as the length of a line segment between two points. [Non-Euclidean distances](https://wikipedia.org/wiki/Non-Euclidean_geometry) are measured along a curve. If your data, visualized, seems to not exist on a plane, you might need to use a specialized algorithm to handle it.
+
+{width="500"}
+
+> ๐ ['Distances'](https://web.stanford.edu/class/cs345a/slides/12-clustering.pdf)
+>
+> Clusters are defined by their distance matrix, e.g. the distances between points. This distance can be measured a few ways. Euclidean clusters are defined by the average of the point values, and contain a 'centroid' or center point. Distances are thus measured by the distance to that centroid. Non-Euclidean distances refer to 'clustroids', the point closest to other points. Clustroids in turn can be defined in various ways.
+>
+> ๐ ['Constrained'](https://wikipedia.org/wiki/Constrained_clustering)
+>
+> [Constrained Clustering](https://web.cs.ucdavis.edu/~davidson/Publications/ICDMTutorial.pdf) introduces 'semi-supervised' learning into this unsupervised method. The relationships between points are flagged as 'cannot link' or 'must-link' so some rules are forced on the dataset.
+>
+> An example: If an algorithm is set free on a batch of unlabelled or semi-labelled data, the clusters it produces may be of poor quality. In the example above, the clusters might group 'round music things' and 'square music things' and 'triangular things' and 'cookies'. If given some constraints, or rules to follow ("the item must be made of plastic", "the item needs to be able to produce music") this can help 'constrain' the algorithm to make better choices.
+>
+> ๐ 'Density'
+>
+> Data that is 'noisy' is considered to be 'dense'. The distances between points in each of its clusters may prove, on examination, to be more or less dense, or 'crowded' and thus this data needs to be analyzed with the appropriate clustering method. [This article](https://www.kdnuggets.com/2020/02/understanding-density-based-clustering.html) demonstrates the difference between using K-Means clustering vs. HDBSCAN algorithms to explore a noisy dataset with uneven cluster density.
+
+Deepen your understanding of clustering techniques in this [Learn module](https://docs.microsoft.com/learn/modules/train-evaluate-cluster-models?WT.mc_id=academic-77952-leestott)
+
+### **Clustering algorithms**
+
+There are over 100 clustering algorithms, and their use depends on the nature of the data at hand. Let's discuss some of the major ones:
+
+- **Hierarchical clustering**. If an object is classified by its proximity to a nearby object, rather than to one farther away, clusters are formed based on their members' distance to and from other objects. Hierarchical clustering is characterized by repeatedly combining two clusters.
+
+{width="500"}
+
+- **Centroid clustering**. This popular algorithm requires the choice of 'k', or the number of clusters to form, after which the algorithm determines the center point of a cluster and gathers data around that point. [K-means clustering](https://wikipedia.org/wiki/K-means_clustering) is a popular version of centroid clustering which separates a data set into pre-defined K groups. The center is determined by the nearest mean, thus the name. The squared distance from the cluster is minimized.{width="500"}
+
+- **Distribution-based clustering**. Based in statistical modeling, distribution-based clustering centers on determining the probability that a data point belongs to a cluster, and assigning it accordingly. Gaussian mixture methods belong to this type.
+
+- **Density-based clustering**. Data points are assigned to clusters based on their density, or their grouping around each other. Data points far from the group are considered outliers or noise. DBSCAN, Mean-shift and OPTICS belong to this type of clustering.
+
+- **Grid-based clustering**. For multi-dimensional datasets, a grid is created and the data is divided amongst the grid's cells, thereby creating clusters.
+
+The best way to learn about clustering is to try it for yourself, so that's what you'll do in this exercise.
+
+We'll require some packages to knock-off this module. You can have them installed as: `install.packages(c('tidyverse', 'tidymodels', 'DataExplorer', 'summarytools', 'plotly', 'paletteer', 'corrplot', 'patchwork'))`
+
+Alternatively, the script below checks whether you have the packages required to complete this module and installs them for you in case some are missing.
+
+```{r}
+suppressWarnings(if(!require("pacman")) install.packages("pacman"))
+
+pacman::p_load('tidyverse', 'tidymodels', 'DataExplorer', 'summarytools', 'plotly', 'paletteer', 'corrplot', 'patchwork')
+```
+
+```{r setup}
+knitr::opts_chunk$set(warning = F, message = F)
+
+```
+
+## Exercise - cluster your data
+
+Clustering as a technique is greatly aided by proper visualization, so let's get started by visualizing our music data. This exercise will help us decide which of the methods of clustering we should most effectively use for the nature of this data.
+
+Let's hit the ground running by importing the data.
+
+```{r}
+# Load the core tidyverse and make it available in your current R session
+library(tidyverse)
+
+# Import the data into a tibble
+df <- read_csv(file = "https://raw.githubusercontent.com/microsoft/ML-For-Beginners/main/5-Clustering/data/nigerian-songs.csv")
+
+# View the first 5 rows of the data set
+df %>%
+ slice_head(n = 5)
+
+```
+
+Sometimes, we may want some little more information on our data. We can have a look at the `data` and `its structure` by using the [*glimpse()*](https://pillar.r-lib.org/reference/glimpse.html) function:
+
+```{r}
+# Glimpse into the data set
+df %>%
+ glimpse()
+```
+
+Good job!๐ช
+
+We can observe that `glimpse()` will give you the total number of rows (observations) and columns (variables), then, the first few entries of each variable in a row after the variable name. In addition, the *data type* of the variable is given immediately after each variable's name inside `< >`.
+
+`DataExplorer::introduce()` can summarize this information neatly:
+
+```{r DataExplorer}
+# Describe basic information for our data
+df %>%
+ introduce()
+
+# A visual display of the same
+df %>%
+ plot_intro()
+
+```
+
+Awesome! We have just learnt that our data has no missing values.
+
+While we are at it, we can explore common central tendency statistics (e.g [mean](https://en.wikipedia.org/wiki/Arithmetic_mean) and [median](https://en.wikipedia.org/wiki/Median)) and measures of dispersion (e.g [standard deviation](https://en.wikipedia.org/wiki/Standard_deviation)) using `summarytools::descr()`
+
+```{r summarytools}
+# Describe common statistics
+df %>%
+ descr(stats = "common")
+
+```
+
+Let's look at the general values of the data. Note that popularity can be `0`, which show songs that have no ranking. We'll remove those shortly.
+
+> ๐ค If we are working with clustering, an unsupervised method that does not require labeled data, why are we showing this data with labels? In the data exploration phase, they come in handy, but they are not necessary for the clustering algorithms to work.
+
+### 1. Explore popular genres
+
+Let's go ahead and find out the most popular genres ๐ถ by making a count of the instances it appears.
+
+```{r count_genres}
+# Popular genres
+top_genres <- df %>%
+ count(artist_top_genre, sort = TRUE) %>%
+# Encode to categorical and reorder the according to count
+ mutate(artist_top_genre = factor(artist_top_genre) %>% fct_inorder())
+
+# Print the top genres
+top_genres
+
+```
+
+That went well! They say a picture is worth a thousand rows of a data frame (actually nobody ever says that ๐ ). But you get the gist of it, right?
+
+One way to visualize categorical data (character or factor variables) is using barplots. Let's make a barplot of the top 10 genres:
+
+```{r bar_plot_genre}
+# Change the default gray theme
+theme_set(theme_light())
+
+# Visualize popular genres
+top_genres %>%
+ slice(1:10) %>%
+ ggplot(mapping = aes(x = artist_top_genre, y = n,
+ fill = artist_top_genre)) +
+ geom_col(alpha = 0.8) +
+ paletteer::scale_fill_paletteer_d("rcartocolor::Vivid") +
+ ggtitle("Top genres") +
+ theme(plot.title = element_text(hjust = 0.5),
+ # Rotates the X markers (so we can read them)
+ axis.text.x = element_text(angle = 90))
+```
+
+Now it's way easier to identify that we have `missing` genres ๐ง!
+
+> A good visualisation will show you things that you did not expect, or raise new questions about the data - Hadley Wickham and Garrett Grolemund, [R For Data Science](https://r4ds.had.co.nz/introduction.html)
+
+Note, when the top genre is described as `Missing`, that means that Spotify did not classify it, so let's get rid of it.
+
+```{r remove_missing}
+# Visualize popular genres
+top_genres %>%
+ filter(artist_top_genre != "Missing") %>%
+ slice(1:10) %>%
+ ggplot(mapping = aes(x = artist_top_genre, y = n,
+ fill = artist_top_genre)) +
+ geom_col(alpha = 0.8) +
+ paletteer::scale_fill_paletteer_d("rcartocolor::Vivid") +
+ ggtitle("Top genres") +
+ theme(plot.title = element_text(hjust = 0.5),
+ # Rotates the X markers (so we can read them)
+ axis.text.x = element_text(angle = 90))
+```
+
+From the little data exploration, we learn that the top three genres dominate this dataset. Let's concentrate on `afro dancehall`, `afropop`, and `nigerian pop`, additionally filter the dataset to remove anything with a 0 popularity value (meaning it was not classified with a popularity in the dataset and can be considered noise for our purposes):
+
+```{r new_dataset}
+nigerian_songs <- df %>%
+ # Concentrate on top 3 genres
+ filter(artist_top_genre %in% c("afro dancehall", "afropop","nigerian pop")) %>%
+ # Remove unclassified observations
+ filter(popularity != 0)
+
+
+
+# Visualize popular genres
+nigerian_songs %>%
+ count(artist_top_genre) %>%
+ ggplot(mapping = aes(x = artist_top_genre, y = n,
+ fill = artist_top_genre)) +
+ geom_col(alpha = 0.8) +
+ paletteer::scale_fill_paletteer_d("ggsci::category10_d3") +
+ ggtitle("Top genres") +
+ theme(plot.title = element_text(hjust = 0.5))
+```
+
+Let's see whether there is any apparent linear relationship among the numerical variables in our data set. This relationship is quantified mathematically by the [correlation statistic](https://en.wikipedia.org/wiki/Correlation).
+
+The correlation statistic is a value between -1 and 1 that indicates the strength of a relationship. Values above 0 indicate a *positive* correlation (high values of one variable tend to coincide with high values of the other), while values below 0 indicate a *negative* correlation (high values of one variable tend to coincide with low values of the other).
+
+```{r correlation}
+# Narrow down to numeric variables and fid correlation
+corr_mat <- nigerian_songs %>%
+ select(where(is.numeric)) %>%
+ cor()
+
+# Visualize correlation matrix
+corrplot(corr_mat, order = 'AOE', col = c('white', 'black'), bg = 'gold2')
+```
+
+The data is not strongly correlated except between `energy` and `loudness`, which makes sense, given that loud music is usually pretty energetic. `Popularity` has a correspondence to `release date`, which also makes sense, as more recent songs are probably more popular. Length and energy seem to have a correlation too.
+
+It will be interesting to see what a clustering algorithm can make of this data!
+
+> ๐ Note that correlation does not imply causation! We have proof of correlation but no proof of causation. An [amusing web site](https://tylervigen.com/spurious-correlations) has some visuals that emphasize this point.
+
+### 2. Explore data distribution
+
+Let's ask some more subtle questions. Are the genres significantly different in the perception of their danceability, based on their popularity? Let's examine our top three genres data distribution for popularity and danceability along a given x and y axis using [density plots](https://www.khanacademy.org/math/ap-statistics/density-curves-normal-distribution-ap/density-curves/v/density-curves).
+
+```{r}
+# Perform 2D kernel density estimation
+density_estimate_2d <- nigerian_songs %>%
+ ggplot(mapping = aes(x = popularity, y = danceability, color = artist_top_genre)) +
+ geom_density_2d(bins = 5, size = 1) +
+ paletteer::scale_color_paletteer_d("RSkittleBrewer::wildberry") +
+ xlim(-20, 80) +
+ ylim(0, 1.2)
+
+# Density plot based on the popularity
+density_estimate_pop <- nigerian_songs %>%
+ ggplot(mapping = aes(x = popularity, fill = artist_top_genre, color = artist_top_genre)) +
+ geom_density(size = 1, alpha = 0.5) +
+ paletteer::scale_fill_paletteer_d("RSkittleBrewer::wildberry") +
+ paletteer::scale_color_paletteer_d("RSkittleBrewer::wildberry") +
+ theme(legend.position = "none")
+
+# Density plot based on the danceability
+density_estimate_dance <- nigerian_songs %>%
+ ggplot(mapping = aes(x = danceability, fill = artist_top_genre, color = artist_top_genre)) +
+ geom_density(size = 1, alpha = 0.5) +
+ paletteer::scale_fill_paletteer_d("RSkittleBrewer::wildberry") +
+ paletteer::scale_color_paletteer_d("RSkittleBrewer::wildberry")
+
+
+# Patch everything together
+library(patchwork)
+density_estimate_2d / (density_estimate_pop + density_estimate_dance)
+```
+
+We see that there are concentric circles that line up, regardless of genre. Could it be that Nigerian tastes converge at a certain level of danceability for this genre?
+
+In general, the three genres align in terms of their popularity and danceability. Determining clusters in this loosely-aligned data will be a challenge. Let's see whether a scatter plot can support this.
+
+```{r scatter_plot}
+# A scatter plot of popularity and danceability
+scatter_plot <- nigerian_songs %>%
+ ggplot(mapping = aes(x = popularity, y = danceability, color = artist_top_genre, shape = artist_top_genre)) +
+ geom_point(size = 2, alpha = 0.8) +
+ paletteer::scale_color_paletteer_d("futurevisions::mars")
+
+# Add a touch of interactivity
+ggplotly(scatter_plot)
+```
+
+A scatterplot of the same axes shows a similar pattern of convergence.
+
+In general, for clustering, you can use scatterplots to show clusters of data, so mastering this type of visualization is very useful. In the next lesson, we will take this filtered data and use k-means clustering to discover groups in this data that see to overlap in interesting ways.
+
+## **๐ Challenge**
+
+In preparation for the next lesson, make a chart about the various clustering algorithms you might discover and use in a production environment. What kinds of problems is the clustering trying to address?
+
+## [**Post-lecture quiz**](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/28/)
+
+## **Review & Self Study**
+
+Before you apply clustering algorithms, as we have learned, it's a good idea to understand the nature of your dataset. Read more on this topic [here](https://www.kdnuggets.com/2019/10/right-clustering-algorithm.html)
+
+Deepen your understanding of clustering techniques:
+
+- [Train and Evaluate Clustering Models using Tidymodels and friends](https://rpubs.com/eR_ic/clustering)
+
+- Bradley Boehmke & Brandon Greenwell, [*Hands-On Machine Learning with R*](https://bradleyboehmke.github.io/HOML/)*.*
+
+## **Assignment**
+
+[Research other visualizations for clustering](https://github.com/microsoft/ML-For-Beginners/blob/main/5-Clustering/1-Visualize/assignment.md)
+
+## THANK YOU TO:
+
+[Jen Looper](https://www.twitter.com/jenlooper) for creating the original Python version of this module โฅ๏ธ
+
+[`Dasani Madipalli`](https://twitter.com/dasani_decoded) for creating the amazing illustrations that make machine learning concepts more interpretable and easier to understand.
+
+Happy Learning,
+
+[Eric](https://twitter.com/ericntay), Gold Microsoft Learn Student Ambassador.
diff --git a/open-machine-learning-jupyter-book/assets/code/clustering/k-means/Julia/README.md b/open-machine-learning-jupyter-book/assets/code/clustering/k-means/Julia/README.md
new file mode 100644
index 0000000000..43447e1b81
--- /dev/null
+++ b/open-machine-learning-jupyter-book/assets/code/clustering/k-means/Julia/README.md
@@ -0,0 +1 @@
+This is a temporary placeholder
\ No newline at end of file
diff --git a/open-machine-learning-jupyter-book/assets/code/clustering/k-means/R/lesson_15-R.ipynb b/open-machine-learning-jupyter-book/assets/code/clustering/k-means/R/lesson_15-R.ipynb
new file mode 100644
index 0000000000..9ccc82d3a7
--- /dev/null
+++ b/open-machine-learning-jupyter-book/assets/code/clustering/k-means/R/lesson_15-R.ipynb
@@ -0,0 +1,635 @@
+{
+ "nbformat": 4,
+ "nbformat_minor": 0,
+ "metadata": {
+ "anaconda-cloud": "",
+ "kernelspec": {
+ "display_name": "R",
+ "language": "R",
+ "name": "ir"
+ },
+ "language_info": {
+ "codemirror_mode": "r",
+ "file_extension": ".r",
+ "mimetype": "text/x-r-source",
+ "name": "R",
+ "pygments_lexer": "r",
+ "version": "3.4.1"
+ },
+ "colab": {
+ "name": "lesson_14.ipynb",
+ "provenance": [],
+ "collapsed_sections": [],
+ "toc_visible": true
+ }
+ },
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "GULATlQXLXyR"
+ },
+ "source": [
+ "## Explore K-Means clustering using R and Tidy data principles.\n",
+ "\n",
+ "### [**Pre-lecture quiz**](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/29/)\n",
+ "\n",
+ "In this lesson, you will learn how to create clusters using the Tidymodels package and other packages in the R ecosystem (we'll call them friends ๐งโ๐คโ๐ง), 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 lesson, 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",
+ "\n",
+ "- Elbow method\n",
+ "\n",
+ "- Inertia\n",
+ "\n",
+ "- Variance\n",
+ "\n",
+ "### **Introduction**\n",
+ "\n",
+ "[K-Means Clustering](https://wikipedia.org/wiki/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` based on similarities in their features.\n",
+ "\n",
+ "The clusters can be visualized as [Voronoi diagrams](https://wikipedia.org/wiki/Voronoi_diagram), which include a point (or 'seed') and its corresponding region.\n",
+ "\n",
+ "
\n",
+ " \n",
+ " Infographic by Jen Looper\n",
+ "\n",
+ "\n",
+ "K-Means clustering has the following steps:\n",
+ "\n",
+ "1. The data scientist starts by specifying the desired number of clusters to be created.\n",
+ "\n",
+ "2. Next, the algorithm randomly selects K observations from the data set to serve as the initial centers for the clusters (i.e., centroids).\n",
+ "\n",
+ "3. Next, each of the remaining observations is assigned to its closest centroid.\n",
+ "\n",
+ "4. Next, the new means of each cluster is computed and the centroid is moved to the mean.\n",
+ "\n",
+ "5. Now that the centers have been recalculated, every observation is checked again to see if it might be closer to a different cluster. All the objects are reassigned again using the updated cluster means. The cluster assignment and centroid update steps are iteratively repeated until the cluster assignments stop changing (i.e., when convergence is achieved). Typically, the algorithm terminates when each new iteration results in negligible movement of centroids and the clusters become static.\n",
+ "\n",
+ "
\n",
+ "\n",
+ "> Note that due to randomization of the initial k observations used as the starting centroids, we can get slightly different results each time we apply the procedure. For this reason, most algorithms use several *random starts* and choose the iteration with the lowest WCSS. As such, it is strongly recommended to always run K-Means with several values of *nstart* to avoid an *undesirable local optimum.*\n",
+ "\n",
+ "
\n",
+ "\n",
+ "This short animation using the [artwork](https://github.com/allisonhorst/stats-illustrations) of Allison Horst explains the clustering process:\n",
+ "\n",
+ "
\n",
+ " \n",
+ " Artwork by @allison_horst\n",
+ "\n",
+ "\n",
+ "\n",
+ "A fundamental question that arises in clustering is this: how do you know how many clusters to separate your data into? 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",
+ "### \n",
+ "\n",
+ "**Prerequisite**\n",
+ "\n",
+ "We'll pick off right from where we stopped in the [previous lesson](https://github.com/microsoft/ML-For-Beginners/blob/main/5-Clustering/1-Visualize/solution/R/lesson_14-R.ipynb), where we analysed the data set, made lots of visualizations and filtered the data set to observations of interest. Be sure to check it out!\n",
+ "\n",
+ "We'll require some packages to knock-off this module. You can have them installed as: `install.packages(c('tidyverse', 'tidymodels', 'cluster', 'summarytools', 'plotly', 'paletteer', 'factoextra', 'patchwork'))`\n",
+ "\n",
+ "Alternatively, the script below checks whether you have the packages required to complete this module and installs them for you in case some are missing.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "ah_tBi58LXyi"
+ },
+ "source": [
+ "suppressWarnings(if(!require(\"pacman\")) install.packages(\"pacman\"))\n",
+ "\n",
+ "pacman::p_load('tidyverse', 'tidymodels', 'cluster', 'summarytools', 'plotly', 'paletteer', 'factoextra', 'patchwork')\n"
+ ],
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "7e--UCUTLXym"
+ },
+ "source": [
+ "Let's hit the ground running!\n",
+ "\n",
+ "## 1. A dance with data: Narrow down to the 3 most popular music genres\n",
+ "\n",
+ "This is a recap of what we did in the previous lesson. Let's slice and dice some data!\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "Ycamx7GGLXyn"
+ },
+ "source": [
+ "# Load the core tidyverse and make it available in your current R session\n",
+ "library(tidyverse)\n",
+ "\n",
+ "# Import the data into a tibble\n",
+ "df <- read_csv(file = \"https://raw.githubusercontent.com/microsoft/ML-For-Beginners/main/5-Clustering/data/nigerian-songs.csv\", show_col_types = FALSE)\n",
+ "\n",
+ "# Narrow down to top 3 popular genres\n",
+ "nigerian_songs <- df %>% \n",
+ " # Concentrate on top 3 genres\n",
+ " filter(artist_top_genre %in% c(\"afro dancehall\", \"afropop\",\"nigerian pop\")) %>% \n",
+ " # Remove unclassified observations\n",
+ " filter(popularity != 0)\n",
+ "\n",
+ "\n",
+ "\n",
+ "# Visualize popular genres using bar plots\n",
+ "theme_set(theme_light())\n",
+ "nigerian_songs %>%\n",
+ " count(artist_top_genre) %>%\n",
+ " ggplot(mapping = aes(x = artist_top_genre, y = n,\n",
+ " fill = artist_top_genre)) +\n",
+ " geom_col(alpha = 0.8) +\n",
+ " paletteer::scale_fill_paletteer_d(\"ggsci::category10_d3\") +\n",
+ " ggtitle(\"Top genres\") +\n",
+ " theme(plot.title = element_text(hjust = 0.5))\n"
+ ],
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "b5h5zmkPLXyp"
+ },
+ "source": [
+ "๐คฉ That went well!\n",
+ "\n",
+ "## 2. More data exploration.\n",
+ "\n",
+ "How clean is this data? Let's check for outliers using box plots. We will concentrate on numeric columns with fewer outliers (although you could clean out the outliers). Boxplots can show the range of the data and will help choose which columns to use. Note, Boxplots do not show variance, an important element of good clusterable data. Please see [this discussion](https://stats.stackexchange.com/questions/91536/deduce-variance-from-boxplot) for further reading.\n",
+ "\n",
+ "[Boxplots](https://en.wikipedia.org/wiki/Box_plot) are used to graphically depict the distribution of `numeric` data, so let's start by *selecting* all numeric columns alongside the popular music genres.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "HhNreJKLLXyq"
+ },
+ "source": [
+ "# Select top genre column and all other numeric columns\n",
+ "df_numeric <- nigerian_songs %>% \n",
+ " select(artist_top_genre, where(is.numeric)) \n",
+ "\n",
+ "# Display the data\n",
+ "df_numeric %>% \n",
+ " slice_head(n = 5)\n"
+ ],
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "uYXrwJRaLXyq"
+ },
+ "source": [
+ "See how the selection helper `where` makes this easy ๐? Explore such other functions [here](https://tidyselect.r-lib.org/).\n",
+ "\n",
+ "Since we'll be making a boxplot for each numeric features and we want to avoid using loops, let's reformat our data into a *longer* format that will allow us to take advantage of `facets` - subplots that each display one subset of the data.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "gd5bR3f8LXys"
+ },
+ "source": [
+ "# Pivot data from wide to long\n",
+ "df_numeric_long <- df_numeric %>% \n",
+ " pivot_longer(!artist_top_genre, names_to = \"feature_names\", values_to = \"values\") \n",
+ "\n",
+ "# Print out data\n",
+ "df_numeric_long %>% \n",
+ " slice_head(n = 15)\n"
+ ],
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "-7tE1swnLXyv"
+ },
+ "source": [
+ "Much longer! Now time for some `ggplots`! So what `geom` will we use?\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "r88bIsyuLXyy"
+ },
+ "source": [
+ "# Make a box plot\n",
+ "df_numeric_long %>% \n",
+ " ggplot(mapping = aes(x = feature_names, y = values, fill = feature_names)) +\n",
+ " geom_boxplot() +\n",
+ " facet_wrap(~ feature_names, ncol = 4, scales = \"free\") +\n",
+ " theme(legend.position = \"none\")\n"
+ ],
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "EYVyKIUELXyz"
+ },
+ "source": [
+ "Easy-gg!\n",
+ "\n",
+ "Now we can see this data is a little noisy: by observing each column as a boxplot, you can see outliers. You could go through the dataset and remove these outliers, but that would make the data pretty minimal.\n",
+ "\n",
+ "For now, let's choose which columns we will use for our clustering exercise. Let's pick the numeric columns with similar ranges. We could encode the `artist_top_genre` as numeric but we'll drop it for now.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "-wkpINyZLXy0"
+ },
+ "source": [
+ "# Select variables with similar ranges\n",
+ "df_numeric_select <- df_numeric %>% \n",
+ " select(popularity, danceability, acousticness, loudness, energy) \n",
+ "\n",
+ "# Normalize data\n",
+ "# df_numeric_select <- scale(df_numeric_select)\n"
+ ],
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "D7dLzgpqLXy1"
+ },
+ "source": [
+ "## 3. Computing k-means clustering in R\n",
+ "\n",
+ "We can compute k-means in R with the built-in `kmeans` function, see `help(\"kmeans()\")`. `kmeans()` function accepts a data frame with all numeric columns as it's primary argument.\n",
+ "\n",
+ "The first step when using k-means clustering is to specify the number of clusters (k) that will be generated in the final solution. We know there are 3 song genres that we carved out of the dataset, so let's try 3:\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "uC4EQ5w7LXy5"
+ },
+ "source": [
+ "set.seed(2056)\n",
+ "# Kmeans clustering for 3 clusters\n",
+ "kclust <- kmeans(\n",
+ " df_numeric_select,\n",
+ " # Specify the number of clusters\n",
+ " centers = 3,\n",
+ " # How many random initial configurations\n",
+ " nstart = 25\n",
+ ")\n",
+ "\n",
+ "# Display clustering object\n",
+ "kclust\n"
+ ],
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "hzfhscWrLXy-"
+ },
+ "source": [
+ "The kmeans object contains several bits of information which is well explained in `help(\"kmeans()\")`. For now, let's focus on a few. We see that the data has been grouped into 3 clusters of sizes 65, 110, 111. The output also contains the cluster centers (means) for the 3 groups across the 5 variables.\n",
+ "\n",
+ "The clustering vector is the cluster assignment for each observation. Let's use the `augment` function to add the cluster assignment the original data set.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "0XwwpFGQLXy_"
+ },
+ "source": [
+ "# Add predicted cluster assignment to data set\n",
+ "augment(kclust, df_numeric_select) %>% \n",
+ " relocate(.cluster) %>% \n",
+ " slice_head(n = 10)\n"
+ ],
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "NXIVXXACLXzA"
+ },
+ "source": [
+ "Perfect, we have just partitioned our data set into a set of 3 groups. So, how good is our clustering ๐คท? Let's take a look at the `Silhouette score`\n",
+ "\n",
+ "### **Silhouette score**\n",
+ "\n",
+ "[Silhouette analysis](https://en.wikipedia.org/wiki/Silhouette_(clustering)) can be used to study the separation distance between the resulting clusters. This score varies from -1 to 1, and if the score is near 1, the cluster is dense and well-separated from other clusters. A value near 0 represents overlapping clusters with samples very close to the decision boundary of the neighboring clusters.[source](https://dzone.com/articles/kmeans-silhouette-score-explained-with-python-exam).\n",
+ "\n",
+ "The average silhouette method computes the average silhouette of observations for different values of *k*. A high average silhouette score indicates a good clustering.\n",
+ "\n",
+ "The `silhouette` function in the cluster package to compuate the average silhouette width.\n",
+ "\n",
+ "> The silhouette can be calculated with any [distance](https://en.wikipedia.org/wiki/Distance \"Distance\") metric, such as the [Euclidean distance](https://en.wikipedia.org/wiki/Euclidean_distance \"Euclidean distance\") or the [Manhattan distance](https://en.wikipedia.org/wiki/Manhattan_distance \"Manhattan distance\") which we discussed in the [previous lesson](https://github.com/microsoft/ML-For-Beginners/blob/main/5-Clustering/1-Visualize/solution/R/lesson_14-R.ipynb).\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "Jn0McL28LXzB"
+ },
+ "source": [
+ "# Load cluster package\n",
+ "library(cluster)\n",
+ "\n",
+ "# Compute average silhouette score\n",
+ "ss <- silhouette(kclust$cluster,\n",
+ " # Compute euclidean distance\n",
+ " dist = dist(df_numeric_select))\n",
+ "mean(ss[, 3])\n"
+ ],
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "QyQRn97nLXzC"
+ },
+ "source": [
+ "Our score is **.549**, so right in the middle. This indicates that our data is not particularly well-suited to this type of clustering. Let's see whether we can confirm this hunch visually. The [factoextra package](https://rpkgs.datanovia.com/factoextra/index.html) provides functions (`fviz_cluster()`) to visualize clustering.\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "7a6Km1_FLXzD"
+ },
+ "source": [
+ "library(factoextra)\n",
+ "\n",
+ "# Visualize clustering results\n",
+ "fviz_cluster(kclust, df_numeric_select)\n"
+ ],
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "IBwCWt-0LXzD"
+ },
+ "source": [
+ "The overlap in clusters indicates that our data is not particularly well-suited to this type of clustering but let's continue.\n",
+ "\n",
+ "## 4. Determining optimal clusters\n",
+ "\n",
+ "A fundamental question that often arises in K-Means clustering is this - without known class labels, how do you know how many clusters to separate your data into?\n",
+ "\n",
+ "One way we can try to find out is to use a data sample to `create a series of clustering models` with an incrementing number of clusters (e.g from 1-10), and evaluate clustering metrics such as the **Silhouette score.**\n",
+ "\n",
+ "Let's determine the optimal number of clusters by computing the clustering algorithm for different values of *k* and evaluating the **Within Cluster Sum of Squares** (WCSS). The total within-cluster sum of square (WCSS) measures the compactness of the clustering and we want it to be as small as possible, with lower values meaning that the data points are closer.\n",
+ "\n",
+ "Let's explore the effect of different choices of `k`, from 1 to 10, on this clustering.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "hSeIiylDLXzE"
+ },
+ "source": [
+ "# Create a series of clustering models\n",
+ "kclusts <- tibble(k = 1:10) %>% \n",
+ " # Perform kmeans clustering for 1,2,3 ... ,10 clusters\n",
+ " mutate(model = map(k, ~ kmeans(df_numeric_select, centers = .x, nstart = 25)),\n",
+ " # Farm out clustering metrics eg WCSS\n",
+ " glanced = map(model, ~ glance(.x))) %>% \n",
+ " unnest(cols = glanced)\n",
+ " \n",
+ "\n",
+ "# View clustering rsulsts\n",
+ "kclusts\n"
+ ],
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "m7rS2U1eLXzE"
+ },
+ "source": [
+ "Now that we have the total within-cluster sum-of-squares (tot.withinss) for each clustering algorithm with center *k*, we use the [elbow method](https://en.wikipedia.org/wiki/Elbow_method_(clustering)) to find the optimal number of clusters. The method consists of plotting the WCSS as a function of the number of clusters, and picking the [elbow of the curve](https://en.wikipedia.org/wiki/Elbow_of_the_curve \"Elbow of the curve\") as the number of clusters to use.\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "o_DjHGItLXzF"
+ },
+ "source": [
+ "set.seed(2056)\n",
+ "# Use elbow method to determine optimum number of clusters\n",
+ "kclusts %>% \n",
+ " ggplot(mapping = aes(x = k, y = tot.withinss)) +\n",
+ " geom_line(size = 1.2, alpha = 0.8, color = \"#FF7F0EFF\") +\n",
+ " geom_point(size = 2, color = \"#FF7F0EFF\")\n"
+ ],
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "pLYyt5XSLXzG"
+ },
+ "source": [
+ "The plot shows a large reduction in WCSS (so greater *tightness*) as the number of clusters increases from one to two, and a further noticeable reduction from two to three clusters. After that, the reduction is less pronounced, resulting in an `elbow` ๐ชin the chart at around three clusters. This is a good indication that there are two to three reasonably well separated clusters of data points.\n",
+ "\n",
+ "We can now go ahead and extract the clustering model where `k = 3`:\n",
+ "\n",
+ "> `pull()`: used to extract a single column\n",
+ ">\n",
+ "> `pluck()`: used to index data structures such as lists\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "JP_JPKBILXzG"
+ },
+ "source": [
+ "# Extract k = 3 clustering\n",
+ "final_kmeans <- kclusts %>% \n",
+ " filter(k == 3) %>% \n",
+ " pull(model) %>% \n",
+ " pluck(1)\n",
+ "\n",
+ "\n",
+ "final_kmeans\n"
+ ],
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "l_PDTu8tLXzI"
+ },
+ "source": [
+ "Great! Let's go ahead and visualize the clusters obtained. Care for some interactivity using `plotly`?\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "dNcleFe-LXzJ"
+ },
+ "source": [
+ "# Add predicted cluster assignment to data set\n",
+ "results <- augment(final_kmeans, df_numeric_select) %>% \n",
+ " bind_cols(df_numeric %>% select(artist_top_genre)) \n",
+ "\n",
+ "# Plot cluster assignments\n",
+ "clust_plt <- results %>% \n",
+ " ggplot(mapping = aes(x = popularity, y = danceability, color = .cluster, shape = artist_top_genre)) +\n",
+ " geom_point(size = 2, alpha = 0.8) +\n",
+ " paletteer::scale_color_paletteer_d(\"ggthemes::Tableau_10\")\n",
+ "\n",
+ "ggplotly(clust_plt)\n"
+ ],
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "6JUM_51VLXzK"
+ },
+ "source": [
+ "Perhaps we would have expected that each cluster (represented by different colors) would have distinct genres (represented by different shapes).\n",
+ "\n",
+ "Let's take a look at the model's accuracy.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "HdIMUGq7LXzL"
+ },
+ "source": [
+ "# Assign genres to predefined integers\n",
+ "label_count <- results %>% \n",
+ " group_by(artist_top_genre) %>% \n",
+ " mutate(id = cur_group_id()) %>% \n",
+ " ungroup() %>% \n",
+ " summarise(correct_labels = sum(.cluster == id))\n",
+ "\n",
+ "\n",
+ "# Print results \n",
+ "cat(\"Result:\", label_count$correct_labels, \"out of\", nrow(results), \"samples were correctly labeled.\")\n",
+ "\n",
+ "cat(\"\\nAccuracy score:\", label_count$correct_labels/nrow(results))\n"
+ ],
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "C50wvaAOLXzM"
+ },
+ "source": [
+ "This model's accuracy is not bad, but not great. It may be that the data may not lend itself well to K-Means Clustering. This data is too imbalanced, too little correlated and there is too much variance between the column values to cluster well. In fact, the clusters that form are probably heavily influenced or skewed by the three genre categories we defined above.\n",
+ "\n",
+ "Nevertheless, that was quite a learning process!\n",
+ "\n",
+ "In Scikit-learn's documentation, you can see that a model like this one, with clusters not very well demarcated, has a 'variance' problem:\n",
+ "\n",
+ "
\n",
+ " \n",
+ " Infographic from Scikit-learn\n",
+ "\n",
+ "\n",
+ "\n",
+ "## **Variance**\n",
+ "\n",
+ "Variance is defined as \"the average of the squared differences from the Mean\" [source](https://www.mathsisfun.com/data/standard-deviation.html). In the context of this clustering problem, it refers to data that the numbers of our dataset tend to diverge a bit too much from the mean.\n",
+ "\n",
+ "โ This is a great moment to think about all the ways you could correct this issue. Tweak the data a bit more? Use different columns? Use a different algorithm? Hint: Try [scaling your data](https://www.mygreatlearning.com/blog/learning-data-science-with-k-means-clustering/) to normalize it and test other columns.\n",
+ "\n",
+ "> Try this '[variance calculator](https://www.calculatorsoup.com/calculators/statistics/variance-calculator.php)' to understand the concept a bit more.\n",
+ "\n",
+ "------------------------------------------------------------------------\n",
+ "\n",
+ "## **๐Challenge**\n",
+ "\n",
+ "Spend some time with this notebook, tweaking parameters. Can you improve the accuracy of the model by cleaning the data more (removing outliers, for example)? You can use weights to give more weight to given data samples. What else can you do to create better clusters?\n",
+ "\n",
+ "Hint: Try to scale your data. There's commented code in the notebook that adds standard scaling to make the data columns resemble each other more closely in terms of range. You'll find that while the silhouette score goes down, the 'kink' in the elbow graph smooths out. This is because leaving the data unscaled allows data with less variance to carry more weight. Read a bit more on this problem [here](https://stats.stackexchange.com/questions/21222/are-mean-normalization-and-feature-scaling-needed-for-k-means-clustering/21226#21226).\n",
+ "\n",
+ "## [**Post-lecture quiz**](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/30/)\n",
+ "\n",
+ "## **Review & Self Study**\n",
+ "\n",
+ "- Take a look at a K-Means Simulator [such as this one](https://user.ceng.metu.edu.tr/~akifakkus/courses/ceng574/k-means/). You can use this tool to visualize sample data points and determine its centroids. You can edit the data's randomness, numbers of clusters and numbers of centroids. Does this help you get an idea of how the data can be grouped?\n",
+ "\n",
+ "- Also, take a look at [this handout on K-Means](https://stanford.edu/~cpiech/cs221/handouts/kmeans.html) from Stanford.\n",
+ "\n",
+ "Want to try out your newly acquired clustering skills to data sets that lend well to K-Means clustering? Please see:\n",
+ "\n",
+ "- [Train and Evaluate Clustering Models](https://rpubs.com/eR_ic/clustering) using Tidymodels and friends\n",
+ "\n",
+ "- [K-means Cluster Analysis](https://uc-r.github.io/kmeans_clustering), UC Business Analytics R Programming Guide\n",
+ "\n",
+ "- [K-means clustering with tidy data principles](https://www.tidymodels.org/learn/statistics/k-means/)\n",
+ "\n",
+ "## **Assignment**\n",
+ "\n",
+ "[Try different clustering methods](https://github.com/microsoft/ML-For-Beginners/blob/main/5-Clustering/2-K-Means/assignment.md)\n",
+ "\n",
+ "## THANK YOU TO:\n",
+ "\n",
+ "[Jen Looper](https://www.twitter.com/jenlooper) for creating the original Python version of this module โฅ๏ธ\n",
+ "\n",
+ "[`Allison Horst`](https://twitter.com/allison_horst/) for creating the amazing illustrations that make R more welcoming and engaging. Find more illustrations at her [gallery](https://www.google.com/url?q=https://github.com/allisonhorst/stats-illustrations&sa=D&source=editors&ust=1626380772530000&usg=AOvVaw3zcfyCizFQZpkSLzxiiQEM).\n",
+ "\n",
+ "Happy Learning,\n",
+ "\n",
+ "[Eric](https://twitter.com/ericntay), Gold Microsoft Learn Student Ambassador.\n",
+ "\n",
+ "
\n",
+ " \n",
+ " Artwork by @allison_horst\n",
+ "\n",
+ "\n"
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/open-machine-learning-jupyter-book/assets/code/clustering/k-means/R/lesson_15.Rmd b/open-machine-learning-jupyter-book/assets/code/clustering/k-means/R/lesson_15.Rmd
new file mode 100644
index 0000000000..61f7869a86
--- /dev/null
+++ b/open-machine-learning-jupyter-book/assets/code/clustering/k-means/R/lesson_15.Rmd
@@ -0,0 +1,392 @@
+---
+title: 'K-Means Clustering using Tidymodels and friends'
+output:
+ html_document:
+ #css: style_7.css
+ df_print: paged
+ theme: flatly
+ highlight: breezedark
+ toc: yes
+ toc_float: yes
+ code_download: yes
+---
+
+## Explore K-Means clustering using R and Tidy data principles.
+
+### [**Pre-lecture quiz**](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/29/)
+
+In this lesson, you will learn how to create clusters using the Tidymodels package and other packages in the R ecosystem (we'll call them friends ๐งโ๐คโ๐ง), 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 lesson, 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!
+
+Terms you will learn about:
+
+- Silhouette scoring
+
+- Elbow method
+
+- Inertia
+
+- Variance
+
+### **Introduction**
+
+[K-Means Clustering](https://wikipedia.org/wiki/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` based on similarities in their features.
+
+The clusters can be visualized as [Voronoi diagrams](https://wikipedia.org/wiki/Voronoi_diagram), which include a point (or 'seed') and its corresponding region.
+
+
+
+K-Means clustering has the following steps:
+
+1. The data scientist starts by specifying the desired number of clusters to be created.
+
+2. Next, the algorithm randomly selects K observations from the data set to serve as the initial centers for the clusters (i.e., centroids).
+
+3. Next, each of the remaining observations is assigned to its closest centroid.
+
+4. Next, the new means of each cluster is computed and the centroid is moved to the mean.
+
+5. Now that the centers have been recalculated, every observation is checked again to see if it might be closer to a different cluster. All the objects are reassigned again using the updated cluster means. The cluster assignment and centroid update steps are iteratively repeated until the cluster assignments stop changing (i.e., when convergence is achieved). Typically, the algorithm terminates when each new iteration results in negligible movement of centroids and the clusters become static.
+
+
+
+> Note that due to randomization of the initial k observations used as the starting centroids, we can get slightly different results each time we apply the procedure. For this reason, most algorithms use several *random starts* and choose the iteration with the lowest WCSS. As such, it is strongly recommended to always run K-Means with several values of *nstart* to avoid an *undesirable local optimum.*
+
+
+
+This short animation using the [artwork](https://github.com/allisonhorst/stats-illustrations) of Allison Horst explains the clustering process:
+
+
+
+A fundamental question that arises in clustering is this: how do you know how many clusters to separate your data into? 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.
+
+###
+
+**Prerequisite**
+
+We'll pick off right from where we stopped in the [previous lesson](https://github.com/microsoft/ML-For-Beginners/blob/main/5-Clustering/1-Visualize/solution/R/lesson_14-R.ipynb), where we analysed the data set, made lots of visualizations and filtered the data set to observations of interest. Be sure to check it out!
+
+We'll require some packages to knock-off this module. You can have them installed as: `install.packages(c('tidyverse', 'tidymodels', 'cluster', 'summarytools', 'plotly', 'paletteer', 'factoextra', 'patchwork'))`
+
+Alternatively, the script below checks whether you have the packages required to complete this module and installs them for you in case some are missing.
+
+```{r}
+suppressWarnings(if(!require("pacman")) install.packages("pacman"))
+
+pacman::p_load('tidyverse', 'tidymodels', 'cluster', 'summarytools', 'plotly', 'paletteer', 'factoextra', 'patchwork')
+```
+
+Let's hit the ground running!
+
+## 1. A dance with data: Narrow down to the 3 most popular music genres
+
+This is a recap of what we did in the previous lesson. Let's slice and dice some data!
+
+```{r message=F, warning=F}
+# Load the core tidyverse and make it available in your current R session
+library(tidyverse)
+
+# Import the data into a tibble
+df <- read_csv(file = "https://raw.githubusercontent.com/microsoft/ML-For-Beginners/main/5-Clustering/data/nigerian-songs.csv", show_col_types = FALSE)
+
+# Narrow down to top 3 popular genres
+nigerian_songs <- df %>%
+ # Concentrate on top 3 genres
+ filter(artist_top_genre %in% c("afro dancehall", "afropop","nigerian pop")) %>%
+ # Remove unclassified observations
+ filter(popularity != 0)
+
+
+
+# Visualize popular genres using bar plots
+theme_set(theme_light())
+nigerian_songs %>%
+ count(artist_top_genre) %>%
+ ggplot(mapping = aes(x = artist_top_genre, y = n,
+ fill = artist_top_genre)) +
+ geom_col(alpha = 0.8) +
+ paletteer::scale_fill_paletteer_d("ggsci::category10_d3") +
+ ggtitle("Top genres") +
+ theme(plot.title = element_text(hjust = 0.5))
+
+
+```
+
+๐คฉ That went well!
+
+## 2. More data exploration.
+
+How clean is this data? Let's check for outliers using box plots. We will concentrate on numeric columns with fewer outliers (although you could clean out the outliers). Boxplots can show the range of the data and will help choose which columns to use. Note, Boxplots do not show variance, an important element of good clusterable data. Please see [this discussion](https://stats.stackexchange.com/questions/91536/deduce-variance-from-boxplot) for further reading.
+
+[Boxplots](https://en.wikipedia.org/wiki/Box_plot) are used to graphically depict the distribution of `numeric` data, so let's start by *selecting* all numeric columns alongside the popular music genres.
+
+```{r select}
+# Select top genre column and all other numeric columns
+df_numeric <- nigerian_songs %>%
+ select(artist_top_genre, where(is.numeric))
+
+# Display the data
+df_numeric %>%
+ slice_head(n = 5)
+
+```
+
+See how the selection helper `where` makes this easy ๐? Explore such other functions [here](https://tidyselect.r-lib.org/).
+
+Since we'll be making a boxplot for each numeric features and we want to avoid using loops, let's reformat our data into a *longer* format that will allow us to take advantage of `facets` - subplots that each display one subset of the data.
+
+```{r pivot_longer}
+# Pivot data from wide to long
+df_numeric_long <- df_numeric %>%
+ pivot_longer(!artist_top_genre, names_to = "feature_names", values_to = "values")
+
+# Print out data
+df_numeric_long %>%
+ slice_head(n = 15)
+```
+
+Much longer! Now time for some `ggplots`! So what `geom` will we use?
+
+```{r}
+# Make a box plot
+df_numeric_long %>%
+ ggplot(mapping = aes(x = feature_names, y = values, fill = feature_names)) +
+ geom_boxplot() +
+ facet_wrap(~ feature_names, ncol = 4, scales = "free") +
+ theme(legend.position = "none")
+```
+
+Easy-gg!
+
+Now we can see this data is a little noisy: by observing each column as a boxplot, you can see outliers. You could go through the dataset and remove these outliers, but that would make the data pretty minimal.
+
+For now, let's choose which columns we will use for our clustering exercise. Let's pick the numeric columns with similar ranges. We could encode the `artist_top_genre` as numeric but we'll drop it for now.
+
+```{r select_columns}
+# Select variables with similar ranges
+df_numeric_select <- df_numeric %>%
+ select(popularity, danceability, acousticness, loudness, energy)
+
+# Normalize data
+# df_numeric_select <- scale(df_numeric_select)
+```
+
+## 3. Computing k-means clustering in R
+
+We can compute k-means in R with the built-in `kmeans` function, see `help("kmeans()")`. `kmeans()` function accepts a data frame with all numeric columns as it's primary argument.
+
+The first step when using k-means clustering is to specify the number of clusters (k) that will be generated in the final solution. We know there are 3 song genres that we carved out of the dataset, so let's try 3:
+
+```{r kmeans}
+set.seed(2056)
+# Kmeans clustering for 3 clusters
+kclust <- kmeans(
+ df_numeric_select,
+ # Specify the number of clusters
+ centers = 3,
+ # How many random initial configurations
+ nstart = 25
+)
+
+# Display clustering object
+kclust
+```
+
+The kmeans object contains several bits of information which is well explained in `help("kmeans()")`. For now, let's focus on a few. We see that the data has been grouped into 3 clusters of sizes 65, 110, 111. The output also contains the cluster centers (means) for the 3 groups across the 5 variables.
+
+The clustering vector is the cluster assignment for each observation. Let's use the `augment` function to add the cluster assignment the original data set.
+
+```{r augment}
+# Add predicted cluster assignment to data set
+augment(kclust, df_numeric_select) %>%
+ relocate(.cluster) %>%
+ slice_head(n = 10)
+```
+
+Perfect, we have just partitioned our data set into a set of 3 groups. So, how good is our clustering ๐คท? Let's take a look at the `Silhouette score`
+
+### **Silhouette score**
+
+[Silhouette analysis](https://en.wikipedia.org/wiki/Silhouette_(clustering)) can be used to study the separation distance between the resulting clusters. This score varies from -1 to 1, and if the score is near 1, the cluster is dense and well-separated from other clusters. A value near 0 represents overlapping clusters with samples very close to the decision boundary of the neighboring clusters.[source](https://dzone.com/articles/kmeans-silhouette-score-explained-with-python-exam).
+
+The average silhouette method computes the average silhouette of observations for different values of *k*. A high average silhouette score indicates a good clustering.
+
+The `silhouette` function in the cluster package to compuate the average silhouette width.
+
+> The silhouette can be calculated with any [distance](https://en.wikipedia.org/wiki/Distance "Distance") metric, such as the [Euclidean distance](https://en.wikipedia.org/wiki/Euclidean_distance "Euclidean distance") or the [Manhattan distance](https://en.wikipedia.org/wiki/Manhattan_distance "Manhattan distance") which we discussed in the [previous lesson](https://github.com/microsoft/ML-For-Beginners/blob/main/5-Clustering/1-Visualize/solution/R/lesson_14-R.ipynb).
+
+```{r}
+# Load cluster package
+library(cluster)
+
+# Compute average silhouette score
+ss <- silhouette(kclust$cluster,
+ # Compute euclidean distance
+ dist = dist(df_numeric_select))
+mean(ss[, 3])
+
+```
+
+Our score is **.549**, so right in the middle. This indicates that our data is not particularly well-suited to this type of clustering. Let's see whether we can confirm this hunch visually. The [factoextra package](https://rpkgs.datanovia.com/factoextra/index.html) provides functions (`fviz_cluster()`) to visualize clustering.
+
+```{r fviz_cluster}
+library(factoextra)
+
+# Visualize clustering results
+fviz_cluster(kclust, df_numeric_select)
+
+```
+
+The overlap in clusters indicates that our data is not particularly well-suited to this type of clustering but let's continue.
+
+## 4. Determining optimal clusters
+
+A fundamental question that often arises in K-Means clustering is this - without known class labels, how do you know how many clusters to separate your data into?
+
+One way we can try to find out is to use a data sample to `create a series of clustering models` with an incrementing number of clusters (e.g from 1-10), and evaluate clustering metrics such as the **Silhouette score.**
+
+Let's determine the optimal number of clusters by computing the clustering algorithm for different values of *k* and evaluating the **Within Cluster Sum of Squares** (WCSS). The total within-cluster sum of square (WCSS) measures the compactness of the clustering and we want it to be as small as possible, with lower values meaning that the data points are closer.
+
+Let's explore the effect of different choices of `k`, from 1 to 10, on this clustering.
+
+```{r}
+# Create a series of clustering models
+kclusts <- tibble(k = 1:10) %>%
+ # Perform kmeans clustering for 1,2,3 ... ,10 clusters
+ mutate(model = map(k, ~ kmeans(df_numeric_select, centers = .x, nstart = 25)),
+ # Farm out clustering metrics eg WCSS
+ glanced = map(model, ~ glance(.x))) %>%
+ unnest(cols = glanced)
+
+
+# View clustering rsulsts
+kclusts
+```
+
+Now that we have the total within-cluster sum-of-squares (tot.withinss) for each clustering algorithm with center *k*, we use the [elbow method](https://en.wikipedia.org/wiki/Elbow_method_(clustering)) to find the optimal number of clusters. The method consists of plotting the WCSS as a function of the number of clusters, and picking the [elbow of the curve](https://en.wikipedia.org/wiki/Elbow_of_the_curve "Elbow of the curve") as the number of clusters to use.
+
+```{r elbow_method}
+set.seed(2056)
+# Use elbow method to determine optimum number of clusters
+kclusts %>%
+ ggplot(mapping = aes(x = k, y = tot.withinss)) +
+ geom_line(size = 1.2, alpha = 0.8, color = "#FF7F0EFF") +
+ geom_point(size = 2, color = "#FF7F0EFF")
+```
+
+The plot shows a large reduction in WCSS (so greater *tightness*) as the number of clusters increases from one to two, and a further noticeable reduction from two to three clusters. After that, the reduction is less pronounced, resulting in an `elbow` ๐ชin the chart at around three clusters. This is a good indication that there are two to three reasonably well separated clusters of data points.
+
+We can now go ahead and extract the clustering model where `k = 3`:
+
+> `pull()`: used to extract a single column
+>
+> `pluck()`: used to index data structures such as lists
+
+```{r extract_model}
+# Extract k = 3 clustering
+final_kmeans <- kclusts %>%
+ filter(k == 3) %>%
+ pull(model) %>%
+ pluck(1)
+
+
+final_kmeans
+```
+
+Great! Let's go ahead and visualize the clusters obtained. Care for some interactivity using `plotly`?
+
+```{r viz_clust}
+# Add predicted cluster assignment to data set
+results <- augment(final_kmeans, df_numeric_select) %>%
+ bind_cols(df_numeric %>% select(artist_top_genre))
+
+# Plot cluster assignments
+clust_plt <- results %>%
+ ggplot(mapping = aes(x = popularity, y = danceability, color = .cluster, shape = artist_top_genre)) +
+ geom_point(size = 2, alpha = 0.8) +
+ paletteer::scale_color_paletteer_d("ggthemes::Tableau_10")
+
+ggplotly(clust_plt)
+
+```
+
+Perhaps we would have expected that each cluster (represented by different colors) would have distinct genres (represented by different shapes).
+
+Let's take a look at the model's accuracy.
+
+```{r ordinal_encode}
+# Assign genres to predefined integers
+label_count <- results %>%
+ group_by(artist_top_genre) %>%
+ mutate(id = cur_group_id()) %>%
+ ungroup() %>%
+ summarise(correct_labels = sum(.cluster == id))
+
+
+# Print results
+cat("Result:", label_count$correct_labels, "out of", nrow(results), "samples were correctly labeled.")
+
+cat("\nAccuracy score:", label_count$correct_labels/nrow(results))
+
+```
+
+This model's accuracy is not bad, but not great. It may be that the data may not lend itself well to K-Means Clustering. This data is too imbalanced, too little correlated and there is too much variance between the column values to cluster well. In fact, the clusters that form are probably heavily influenced or skewed by the three genre categories we defined above.
+
+Nevertheless, that was quite a learning process!
+
+In Scikit-learn's documentation, you can see that a model like this one, with clusters not very well demarcated, has a 'variance' problem:
+
+
+
+## **Variance**
+
+Variance is defined as "the average of the squared differences from the Mean" [source](https://www.mathsisfun.com/data/standard-deviation.html). In the context of this clustering problem, it refers to data that the numbers of our dataset tend to diverge a bit too much from the mean.
+
+โ This is a great moment to think about all the ways you could correct this issue. Tweak the data a bit more? Use different columns? Use a different algorithm? Hint: Try [scaling your data](https://www.mygreatlearning.com/blog/learning-data-science-with-k-means-clustering/) to normalize it and test other columns.
+
+> Try this '[variance calculator](https://www.calculatorsoup.com/calculators/statistics/variance-calculator.php)' to understand the concept a bit more.
+
+------------------------------------------------------------------------
+
+## **๐Challenge**
+
+Spend some time with this notebook, tweaking parameters. Can you improve the accuracy of the model by cleaning the data more (removing outliers, for example)? You can use weights to give more weight to given data samples. What else can you do to create better clusters?
+
+Hint: Try to scale your data. There's commented code in the notebook that adds standard scaling to make the data columns resemble each other more closely in terms of range. You'll find that while the silhouette score goes down, the 'kink' in the elbow graph smooths out. This is because leaving the data unscaled allows data with less variance to carry more weight. Read a bit more on this problem [here](https://stats.stackexchange.com/questions/21222/are-mean-normalization-and-feature-scaling-needed-for-k-means-clustering/21226#21226).
+
+## [**Post-lecture quiz**](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/30/)
+
+## **Review & Self Study**
+
+- Take a look at a K-Means Simulator [such as this one](https://user.ceng.metu.edu.tr/~akifakkus/courses/ceng574/k-means/). You can use this tool to visualize sample data points and determine its centroids. You can edit the data's randomness, numbers of clusters and numbers of centroids. Does this help you get an idea of how the data can be grouped?
+
+- Also, take a look at [this handout on K-Means](https://stanford.edu/~cpiech/cs221/handouts/kmeans.html) from Stanford.
+
+Want to try out your newly acquired clustering skills to data sets that lend well to K-Means clustering? Please see:
+
+- [Train and Evaluate Clustering Models](https://rpubs.com/eR_ic/clustering) using Tidymodels and friends
+
+- [K-means Cluster Analysis](https://uc-r.github.io/kmeans_clustering), UC Business Analytics R Programming Guide
+
+- [K-meansย clusteringย withย tidyย dataย principles](https://www.tidymodels.org/learn/statistics/k-means/)
+
+## **Assignment**
+
+[Try different clustering methods](https://github.com/microsoft/ML-For-Beginners/blob/main/5-Clustering/2-K-Means/assignment.md)
+
+## THANK YOU TO:
+
+[Jen Looper](https://www.twitter.com/jenlooper) for creating the original Python version of this module โฅ๏ธ
+
+[`Allison Horst`](https://twitter.com/allison_horst/) for creating the amazing illustrations that make R more welcoming and engaging. Find more illustrations at her [gallery](https://www.google.com/url?q=https://github.com/allisonhorst/stats-illustrations&sa=D&source=editors&ust=1626380772530000&usg=AOvVaw3zcfyCizFQZpkSLzxiiQEM).
+
+Happy Learning,
+
+[Eric](https://twitter.com/ericntay), Gold Microsoft Learn Student Ambassador.
+
+
+
+```{r include=FALSE}
+library(here)
+library(rmd2jupyter)
+rmd2jupyter("lesson_14.Rmd")
+```
diff --git a/open-machine-learning-jupyter-book/assets/code/clustering/k-means/notebook.ipynb b/open-machine-learning-jupyter-book/assets/code/clustering/k-means/notebook.ipynb
new file mode 100644
index 0000000000..7a2778b3a8
--- /dev/null
+++ b/open-machine-learning-jupyter-book/assets/code/clustering/k-means/notebook.ipynb
@@ -0,0 +1,675 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Nigerian Music scraped from Spotify - an analysis"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple/\n",
+ "Requirement already satisfied: seaborn in c:\\users\\16111\\appdata\\local\\programs\\python\\python38\\lib\\site-packages (0.12.1)\n",
+ "Requirement already satisfied: pandas>=0.25 in c:\\users\\16111\\appdata\\local\\programs\\python\\python38\\lib\\site-packages (from seaborn) (1.5.1)\n",
+ "Requirement already satisfied: numpy>=1.17 in c:\\users\\16111\\appdata\\local\\programs\\python\\python38\\lib\\site-packages (from seaborn) (1.23.5)\n",
+ "Requirement already satisfied: matplotlib!=3.6.1,>=3.1 in c:\\users\\16111\\appdata\\local\\programs\\python\\python38\\lib\\site-packages (from seaborn) (3.6.2)\n",
+ "Requirement already satisfied: contourpy>=1.0.1 in c:\\users\\16111\\appdata\\local\\programs\\python\\python38\\lib\\site-packages (from matplotlib!=3.6.1,>=3.1->seaborn) (1.0.6)\n",
+ "Requirement already satisfied: packaging>=20.0 in c:\\users\\16111\\appdata\\local\\programs\\python\\python38\\lib\\site-packages (from matplotlib!=3.6.1,>=3.1->seaborn) (21.3)\n",
+ "Requirement already satisfied: pyparsing>=2.2.1 in c:\\users\\16111\\appdata\\local\\programs\\python\\python38\\lib\\site-packages (from matplotlib!=3.6.1,>=3.1->seaborn) (3.0.9)\n",
+ "Requirement already satisfied: cycler>=0.10 in c:\\users\\16111\\appdata\\local\\programs\\python\\python38\\lib\\site-packages (from matplotlib!=3.6.1,>=3.1->seaborn) (0.11.0)\n",
+ "Requirement already satisfied: python-dateutil>=2.7 in c:\\users\\16111\\appdata\\local\\programs\\python\\python38\\lib\\site-packages (from matplotlib!=3.6.1,>=3.1->seaborn) (2.8.2)\n",
+ "Requirement already satisfied: pillow>=6.2.0 in c:\\users\\16111\\appdata\\local\\programs\\python\\python38\\lib\\site-packages (from matplotlib!=3.6.1,>=3.1->seaborn) (9.3.0)\n",
+ "Requirement already satisfied: fonttools>=4.22.0 in c:\\users\\16111\\appdata\\local\\programs\\python\\python38\\lib\\site-packages (from matplotlib!=3.6.1,>=3.1->seaborn) (4.38.0)\n",
+ "Requirement already satisfied: kiwisolver>=1.0.1 in c:\\users\\16111\\appdata\\local\\programs\\python\\python38\\lib\\site-packages (from matplotlib!=3.6.1,>=3.1->seaborn) (1.4.4)\n",
+ "Requirement already satisfied: pytz>=2020.1 in c:\\users\\16111\\appdata\\local\\programs\\python\\python38\\lib\\site-packages (from pandas>=0.25->seaborn) (2022.6)\n",
+ "Requirement already satisfied: six>=1.5 in c:\\users\\16111\\appdata\\local\\programs\\python\\python38\\lib\\site-packages (from python-dateutil>=2.7->matplotlib!=3.6.1,>=3.1->seaborn) (1.16.0)\n",
+ "Note: you may need to restart the kernel to use updated packages.\n"
+ ]
+ }
+ ],
+ "source": [
+ "pip install seaborn"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Start where we finished in the last lesson, with data imported and filtered."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [
+ {
+ "ename": "FileNotFoundError",
+ "evalue": "[Errno 2] No such file or directory: '../../data/nigerian-songs.csv'",
+ "output_type": "error",
+ "traceback": [
+ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
+ "\u001b[1;31mFileNotFoundError\u001b[0m Traceback (most recent call last)",
+ "Cell \u001b[1;32mIn[2], line 6\u001b[0m\n\u001b[0;32m 2\u001b[0m \u001b[39mimport\u001b[39;00m \u001b[39mpandas\u001b[39;00m \u001b[39mas\u001b[39;00m \u001b[39mpd\u001b[39;00m\n\u001b[0;32m 3\u001b[0m \u001b[39mimport\u001b[39;00m \u001b[39mseaborn\u001b[39;00m \u001b[39mas\u001b[39;00m \u001b[39msns\u001b[39;00m\n\u001b[1;32m----> 6\u001b[0m df \u001b[39m=\u001b[39m pd\u001b[39m.\u001b[39;49mread_csv(\u001b[39m\"\u001b[39;49m\u001b[39m../../data/nigerian-songs.csv\u001b[39;49m\u001b[39m\"\u001b[39;49m)\n\u001b[0;32m 7\u001b[0m df\u001b[39m.\u001b[39mhead()\n",
+ "File \u001b[1;32mc:\\Users\\16111\\AppData\\Local\\Programs\\Python\\Python38\\lib\\site-packages\\pandas\\util\\_decorators.py:211\u001b[0m, in \u001b[0;36mdeprecate_kwarg.._deprecate_kwarg..wrapper\u001b[1;34m(*args, **kwargs)\u001b[0m\n\u001b[0;32m 209\u001b[0m \u001b[39melse\u001b[39;00m:\n\u001b[0;32m 210\u001b[0m kwargs[new_arg_name] \u001b[39m=\u001b[39m new_arg_value\n\u001b[1;32m--> 211\u001b[0m \u001b[39mreturn\u001b[39;00m func(\u001b[39m*\u001b[39;49margs, \u001b[39m*\u001b[39;49m\u001b[39m*\u001b[39;49mkwargs)\n",
+ "File \u001b[1;32mc:\\Users\\16111\\AppData\\Local\\Programs\\Python\\Python38\\lib\\site-packages\\pandas\\util\\_decorators.py:331\u001b[0m, in \u001b[0;36mdeprecate_nonkeyword_arguments..decorate..wrapper\u001b[1;34m(*args, **kwargs)\u001b[0m\n\u001b[0;32m 325\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mlen\u001b[39m(args) \u001b[39m>\u001b[39m num_allow_args:\n\u001b[0;32m 326\u001b[0m warnings\u001b[39m.\u001b[39mwarn(\n\u001b[0;32m 327\u001b[0m msg\u001b[39m.\u001b[39mformat(arguments\u001b[39m=\u001b[39m_format_argument_list(allow_args)),\n\u001b[0;32m 328\u001b[0m \u001b[39mFutureWarning\u001b[39;00m,\n\u001b[0;32m 329\u001b[0m stacklevel\u001b[39m=\u001b[39mfind_stack_level(),\n\u001b[0;32m 330\u001b[0m )\n\u001b[1;32m--> 331\u001b[0m \u001b[39mreturn\u001b[39;00m func(\u001b[39m*\u001b[39;49margs, \u001b[39m*\u001b[39;49m\u001b[39m*\u001b[39;49mkwargs)\n",
+ "File \u001b[1;32mc:\\Users\\16111\\AppData\\Local\\Programs\\Python\\Python38\\lib\\site-packages\\pandas\\io\\parsers\\readers.py:950\u001b[0m, in \u001b[0;36mread_csv\u001b[1;34m(filepath_or_buffer, sep, delimiter, header, names, index_col, usecols, squeeze, prefix, mangle_dupe_cols, dtype, engine, converters, true_values, false_values, skipinitialspace, skiprows, skipfooter, nrows, na_values, keep_default_na, na_filter, verbose, skip_blank_lines, parse_dates, infer_datetime_format, keep_date_col, date_parser, dayfirst, cache_dates, iterator, chunksize, compression, thousands, decimal, lineterminator, quotechar, quoting, doublequote, escapechar, comment, encoding, encoding_errors, dialect, error_bad_lines, warn_bad_lines, on_bad_lines, delim_whitespace, low_memory, memory_map, float_precision, storage_options)\u001b[0m\n\u001b[0;32m 935\u001b[0m kwds_defaults \u001b[39m=\u001b[39m _refine_defaults_read(\n\u001b[0;32m 936\u001b[0m dialect,\n\u001b[0;32m 937\u001b[0m delimiter,\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 946\u001b[0m defaults\u001b[39m=\u001b[39m{\u001b[39m\"\u001b[39m\u001b[39mdelimiter\u001b[39m\u001b[39m\"\u001b[39m: \u001b[39m\"\u001b[39m\u001b[39m,\u001b[39m\u001b[39m\"\u001b[39m},\n\u001b[0;32m 947\u001b[0m )\n\u001b[0;32m 948\u001b[0m kwds\u001b[39m.\u001b[39mupdate(kwds_defaults)\n\u001b[1;32m--> 950\u001b[0m \u001b[39mreturn\u001b[39;00m _read(filepath_or_buffer, kwds)\n",
+ "File \u001b[1;32mc:\\Users\\16111\\AppData\\Local\\Programs\\Python\\Python38\\lib\\site-packages\\pandas\\io\\parsers\\readers.py:605\u001b[0m, in \u001b[0;36m_read\u001b[1;34m(filepath_or_buffer, kwds)\u001b[0m\n\u001b[0;32m 602\u001b[0m _validate_names(kwds\u001b[39m.\u001b[39mget(\u001b[39m\"\u001b[39m\u001b[39mnames\u001b[39m\u001b[39m\"\u001b[39m, \u001b[39mNone\u001b[39;00m))\n\u001b[0;32m 604\u001b[0m \u001b[39m# Create the parser.\u001b[39;00m\n\u001b[1;32m--> 605\u001b[0m parser \u001b[39m=\u001b[39m TextFileReader(filepath_or_buffer, \u001b[39m*\u001b[39;49m\u001b[39m*\u001b[39;49mkwds)\n\u001b[0;32m 607\u001b[0m \u001b[39mif\u001b[39;00m chunksize \u001b[39mor\u001b[39;00m iterator:\n\u001b[0;32m 608\u001b[0m \u001b[39mreturn\u001b[39;00m parser\n",
+ "File \u001b[1;32mc:\\Users\\16111\\AppData\\Local\\Programs\\Python\\Python38\\lib\\site-packages\\pandas\\io\\parsers\\readers.py:1442\u001b[0m, in \u001b[0;36mTextFileReader.__init__\u001b[1;34m(self, f, engine, **kwds)\u001b[0m\n\u001b[0;32m 1439\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39moptions[\u001b[39m\"\u001b[39m\u001b[39mhas_index_names\u001b[39m\u001b[39m\"\u001b[39m] \u001b[39m=\u001b[39m kwds[\u001b[39m\"\u001b[39m\u001b[39mhas_index_names\u001b[39m\u001b[39m\"\u001b[39m]\n\u001b[0;32m 1441\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mhandles: IOHandles \u001b[39m|\u001b[39m \u001b[39mNone\u001b[39;00m \u001b[39m=\u001b[39m \u001b[39mNone\u001b[39;00m\n\u001b[1;32m-> 1442\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_engine \u001b[39m=\u001b[39m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49m_make_engine(f, \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49mengine)\n",
+ "File \u001b[1;32mc:\\Users\\16111\\AppData\\Local\\Programs\\Python\\Python38\\lib\\site-packages\\pandas\\io\\parsers\\readers.py:1735\u001b[0m, in \u001b[0;36mTextFileReader._make_engine\u001b[1;34m(self, f, engine)\u001b[0m\n\u001b[0;32m 1733\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39m\"\u001b[39m\u001b[39mb\u001b[39m\u001b[39m\"\u001b[39m \u001b[39mnot\u001b[39;00m \u001b[39min\u001b[39;00m mode:\n\u001b[0;32m 1734\u001b[0m mode \u001b[39m+\u001b[39m\u001b[39m=\u001b[39m \u001b[39m\"\u001b[39m\u001b[39mb\u001b[39m\u001b[39m\"\u001b[39m\n\u001b[1;32m-> 1735\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mhandles \u001b[39m=\u001b[39m get_handle(\n\u001b[0;32m 1736\u001b[0m f,\n\u001b[0;32m 1737\u001b[0m mode,\n\u001b[0;32m 1738\u001b[0m encoding\u001b[39m=\u001b[39;49m\u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49moptions\u001b[39m.\u001b[39;49mget(\u001b[39m\"\u001b[39;49m\u001b[39mencoding\u001b[39;49m\u001b[39m\"\u001b[39;49m, \u001b[39mNone\u001b[39;49;00m),\n\u001b[0;32m 1739\u001b[0m compression\u001b[39m=\u001b[39;49m\u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49moptions\u001b[39m.\u001b[39;49mget(\u001b[39m\"\u001b[39;49m\u001b[39mcompression\u001b[39;49m\u001b[39m\"\u001b[39;49m, \u001b[39mNone\u001b[39;49;00m),\n\u001b[0;32m 1740\u001b[0m memory_map\u001b[39m=\u001b[39;49m\u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49moptions\u001b[39m.\u001b[39;49mget(\u001b[39m\"\u001b[39;49m\u001b[39mmemory_map\u001b[39;49m\u001b[39m\"\u001b[39;49m, \u001b[39mFalse\u001b[39;49;00m),\n\u001b[0;32m 1741\u001b[0m is_text\u001b[39m=\u001b[39;49mis_text,\n\u001b[0;32m 1742\u001b[0m errors\u001b[39m=\u001b[39;49m\u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49moptions\u001b[39m.\u001b[39;49mget(\u001b[39m\"\u001b[39;49m\u001b[39mencoding_errors\u001b[39;49m\u001b[39m\"\u001b[39;49m, \u001b[39m\"\u001b[39;49m\u001b[39mstrict\u001b[39;49m\u001b[39m\"\u001b[39;49m),\n\u001b[0;32m 1743\u001b[0m storage_options\u001b[39m=\u001b[39;49m\u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49moptions\u001b[39m.\u001b[39;49mget(\u001b[39m\"\u001b[39;49m\u001b[39mstorage_options\u001b[39;49m\u001b[39m\"\u001b[39;49m, \u001b[39mNone\u001b[39;49;00m),\n\u001b[0;32m 1744\u001b[0m )\n\u001b[0;32m 1745\u001b[0m \u001b[39massert\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mhandles \u001b[39mis\u001b[39;00m \u001b[39mnot\u001b[39;00m \u001b[39mNone\u001b[39;00m\n\u001b[0;32m 1746\u001b[0m f \u001b[39m=\u001b[39m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mhandles\u001b[39m.\u001b[39mhandle\n",
+ "File \u001b[1;32mc:\\Users\\16111\\AppData\\Local\\Programs\\Python\\Python38\\lib\\site-packages\\pandas\\io\\common.py:856\u001b[0m, in \u001b[0;36mget_handle\u001b[1;34m(path_or_buf, mode, encoding, compression, memory_map, is_text, errors, storage_options)\u001b[0m\n\u001b[0;32m 851\u001b[0m \u001b[39melif\u001b[39;00m \u001b[39misinstance\u001b[39m(handle, \u001b[39mstr\u001b[39m):\n\u001b[0;32m 852\u001b[0m \u001b[39m# Check whether the filename is to be opened in binary mode.\u001b[39;00m\n\u001b[0;32m 853\u001b[0m \u001b[39m# Binary mode does not support 'encoding' and 'newline'.\u001b[39;00m\n\u001b[0;32m 854\u001b[0m \u001b[39mif\u001b[39;00m ioargs\u001b[39m.\u001b[39mencoding \u001b[39mand\u001b[39;00m \u001b[39m\"\u001b[39m\u001b[39mb\u001b[39m\u001b[39m\"\u001b[39m \u001b[39mnot\u001b[39;00m \u001b[39min\u001b[39;00m ioargs\u001b[39m.\u001b[39mmode:\n\u001b[0;32m 855\u001b[0m \u001b[39m# Encoding\u001b[39;00m\n\u001b[1;32m--> 856\u001b[0m handle \u001b[39m=\u001b[39m \u001b[39mopen\u001b[39;49m(\n\u001b[0;32m 857\u001b[0m handle,\n\u001b[0;32m 858\u001b[0m ioargs\u001b[39m.\u001b[39;49mmode,\n\u001b[0;32m 859\u001b[0m encoding\u001b[39m=\u001b[39;49mioargs\u001b[39m.\u001b[39;49mencoding,\n\u001b[0;32m 860\u001b[0m errors\u001b[39m=\u001b[39;49merrors,\n\u001b[0;32m 861\u001b[0m newline\u001b[39m=\u001b[39;49m\u001b[39m\"\u001b[39;49m\u001b[39m\"\u001b[39;49m,\n\u001b[0;32m 862\u001b[0m )\n\u001b[0;32m 863\u001b[0m \u001b[39melse\u001b[39;00m:\n\u001b[0;32m 864\u001b[0m \u001b[39m# Binary mode\u001b[39;00m\n\u001b[0;32m 865\u001b[0m handle \u001b[39m=\u001b[39m \u001b[39mopen\u001b[39m(handle, ioargs\u001b[39m.\u001b[39mmode)\n",
+ "\u001b[1;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: '../../data/nigerian-songs.csv'"
+ ]
+ }
+ ],
+ "source": [
+ "\n",
+ "import matplotlib.pyplot as plt\n",
+ "import pandas as pd\n",
+ "import seaborn as sns\n",
+ "\n",
+ "\n",
+ "df = pd.read_csv(\"../../../data/nigerian-songs.csv\")\n",
+ "df.head()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "We will focus only on 3 genres. Maybe we can get 3 clusters built!"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Text(0.5, 1.0, 'Top genres')"
+ ]
+ },
+ "execution_count": 12,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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",
+ "image/svg+xml": "\n\n\n\n",
+ "text/plain": [
+ "
"
+ ],
+ "text/plain": [
+ " release_date length popularity danceability acousticness \\\n",
+ "count 530.000000 530.000000 530.000000 530.000000 530.000000 \n",
+ "mean 2015.390566 222298.169811 17.507547 0.741619 0.265412 \n",
+ "std 3.131688 39696.822259 18.992212 0.117522 0.208342 \n",
+ "min 1998.000000 89488.000000 0.000000 0.255000 0.000665 \n",
+ "25% 2014.000000 199305.000000 0.000000 0.681000 0.089525 \n",
+ "50% 2016.000000 218509.000000 13.000000 0.761000 0.220500 \n",
+ "75% 2017.000000 242098.500000 31.000000 0.829500 0.403000 \n",
+ "max 2020.000000 511738.000000 73.000000 0.966000 0.954000 \n",
+ "\n",
+ " energy instrumentalness liveness loudness speechiness \\\n",
+ "count 530.000000 530.000000 530.000000 530.000000 530.000000 \n",
+ "mean 0.760623 0.016305 0.147308 -4.953011 0.130748 \n",
+ "std 0.148533 0.090321 0.123588 2.464186 0.092939 \n",
+ "min 0.111000 0.000000 0.028300 -19.362000 0.027800 \n",
+ "25% 0.669000 0.000000 0.075650 -6.298750 0.059100 \n",
+ "50% 0.784500 0.000004 0.103500 -4.558500 0.097950 \n",
+ "75% 0.875750 0.000234 0.164000 -3.331000 0.177000 \n",
+ "max 0.995000 0.910000 0.811000 0.582000 0.514000 \n",
+ "\n",
+ " tempo time_signature \n",
+ "count 530.000000 530.000000 \n",
+ "mean 116.487864 3.986792 \n",
+ "std 23.518601 0.333701 \n",
+ "min 61.695000 3.000000 \n",
+ "25% 102.961250 4.000000 \n",
+ "50% 112.714500 4.000000 \n",
+ "75% 125.039250 4.000000 \n",
+ "max 206.007000 5.000000 "
+ ]
+ },
+ "execution_count": 6,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df.describe()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Let's examine the genres. Quite a few are listed as 'Missing' which means they aren't categorized in the dataset with a genre "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Text(0.5, 1.0, 'Top genres')"
+ ]
+ },
+ "execution_count": 7,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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QoUKmaFDh7r2Jf1dXb16tWnTpo3Jly+f+emnn9xU6b3F16m4LV5eXnr11VdVt25dhYeHq2LFiqpSpYomTpyoWrVqadSoUbpy5YpatGihHDlyuLtcuNGKFSs0ffp0LVq0SOXKldPly5c1d+5cvfnmm0qbNq169OihkSNHKi4uTr/++quio6Nd35R6enq6u3zc5679JnPz5s3auXOnFi1apAIFCmjEiBFavny5Ll26pP79+2vcuHF67bXXtHPnTvn5+alRo0by9PTUmjVrFBwcTEsj7prLly9r48aN6tWrl6u7UalSpZQvXz71799fQ4cOVa9evRQaGqqoqCh17dpV8fHxatWqlfz9/d1cPR40Pj4++uSTTxQREaFx48ZpypQpMsaoV69erve5jBkzql69eurbt681n9N4h8dtCQwMVM2aNRUYGKjevXsrf/78+vDDDyVJBQoU0MaNG/X111+rdevWbq4U7hYeHq6sWbOqTJkykqR06dKpZcuWioqK0qBBg1SjRg0VLVpUH330kTp06KD58+frypUr6t69u9KkSePm6nG/+vnnn1W8eHFX8Jk7d66WLFmixx9/XGXLlpXkXGcsderUWrRokQYOHKgePXqoXLlyKleunCRnl49Ro0Zp5syZ2rBhgzJmzOiu08FDLk2aNDp79myymQVTp06t2rVra968edqxY4dre+fOneXl5aVOnTrJ29tbnTp1oism/lXSF4aHDx/WmTNnlDZtWhUpUkRZs2ZVaGioJGn69Okyxqh3797q16+f/vjjD40fP17p06d3c/X3DuEHNy0+Pl5eXl46ePCgYmJi5HA4VLx4cdc3BWfPnlWGDBnk4+MjyflLOHv2bJUoUUKZMmVyZ+m4D/j7++vXX3/VL7/8osKFC7vepCtUqCAvLy9dvnxZknMShI8//ljNmzfXhg0b1L59e8IPrqtr1666cuWKJkyYoMTERNfkK4sXL1aBAgVc71mS9O6778rhcGjJkiXq3bu3Ro8erYwZM+rKlSv68ccfFRER4VpUErgTrjc+JyEhQSEhIfr555+1b98+19gKT09PFS1aVKtWrVJ0dLR8fHzkcDjUoUMHpUqVShUrViT44F8l/U1dsGCBevfuratXryo4OFiBgYGaPXu2Hn30UbVq1Ure3t4aOXKk5syZo99//12rVq2yKvhIYswP/t3w4cNd43mMMWbu3LkmICDA5MiRw+TNm9cMHjzYta99+/Ymd+7c5t133zXNmzc36dOnN0ePHnVH2XCjhISE624/efKkqVixomnevLk5cOCAa/vx48dNgQIFzNq1a40xf/dDjo2NNWfOnLnr9eLBtXHjRhMbG2uMMeb33383xjjHRXTr1s3kzZvXDBo0yERFRSV7TM+ePU3r1q2TXaeXL182Fy9evHeF46F37fW1Z88es2/fPnP69GljjDGHDh0y2bNnNw0aNDBbt241iYmJ5uLFi6ZSpUqmZcuW130O4GasWLHC+Pr6mk8++cRcunTJTJkyxTgcDlOuXDlz4cIFY4wxZ86cMevWrTPDhw83hw8fdnPF7sFsb7ihy5cva8CAAfr44481atQotW3bVoULF1aPHj30yCOPaNu2berTp4+6dOmiIUOGSJJeffVVnT59WgkJCfr4449VvHhxN58F7iVzzWxGkydP1u+//67Y2Fg1btxYJUqU0Pz58zVq1Cj5+/srNDRU/v7+GjJkiP766y9t3rzZ9S0pMxohJWbPnq2PPvpIgwcP1nPPPaeEhAR16NBBO3bsUL169dS+fftk32wmXadcZ7jbevbsqenTp8vDw0NXrlxRr1691LNnTx08eFC1a9dWunTpFB0dLT8/P12+fFm7du1SqlSpkr2XAjfjr7/+Utu2bVWiRAn17NlT4eHhKlOmjEqWLKmjR48qbdq0Wr16tX2tPNdBtzfcULp06dS1a1dlyJBBvXr10u+//65nnnlGDRs2VOrUqVW6dGllyJBBHTp0UEJCgoYNG6ZZs2bp4sWL8vT0VNq0ad19CriHzP9M4zpu3DhVqVJFu3bt0pIlS9SgQQP1799fqVOn1vTp0/Xyyy+rePHiypgxozZu3CgPDw8lJCTI09OTD6T4V/8bWlKnTi1fX1+NHDlSDodDzz77rMaNG6cOHTrom2++kaenp958801lyJBBknPBXGMM1xnuuGvfB9euXavp06dr+vTpypgxo3744QcNGDBAYWFhGj16tFatWqVt27Zp7969ypo1q1q1aiUvL69k3TWBm5UpUybVrVtXefPm1blz51S1alXVrFlTn3zyiUaPHq1u3bqpTJky2rZtm+u90Fb8duFfBQcHq02bNjLGaOzYscqRI4dSp04tyRmOmjRpIknq0qWLrl69qnHjxln/S2WrpD/4p06d0rZt27Ry5UrXgPK+fftq5cqVSpcunXr27KkXX3xRx44dk7e3t7JmzSoPDw/+4OOmXBt8fvjhB1WoUEF169ZVmjRpNHbsWA0dOlSSXAGoU6dOGj9+vLJmzarXX3/d9Tx8q467Iem6mjhxov7880+99dZbqlKliiSpTJkyCggIUGhoqEqWLKkmTZooV65cevnll12PT0hI4H0Qt6xhw4aSnOvpZcmSRf369ZPD4VCePHn0zDPPKH369IqIiLD+cxpfe+E/BQcHKzQ0VB07dtTevXs1duxY17506dKpadOmGjx4sObMmaOIiAjRk9Jeo0ePVpUqVRQdHa2cOXO6tvft21dlypTRjBkzdPXqVUlSnjx5lD17dnl4eCgxMZE/+PhP1wafvn37qlmzZpo5c6YkqXr16urQoYM8PDw0dOhQrV27Vp6enhozZozat2+vxo0bu7N0WOTMmTOaMWOG+vXrp9OnT0uSYmNjZYxRkyZN1LJlS40dO1axsbFKSEhI9lim9cfNSPqctX37dk2YMEFjx47V8uXLXft/++037du3TwEBAZKkbdu2qWjRopo7d67y5s3rlprvJ4z5wT8kNdufPXtWly9fVkBAgNKnT6/o6GgNGjRIY8aM0dChQ9W+fXvXY65cuaLY2FimiLXcjh071LBhQ506dUobNmzQk08+6frAevbsWWXLlk2LFi1SzZo13V0qHmB9+vTR5MmTNXfuXBUsWFBBQUGufStXrtSoUaPkcDjUsWNHVa9e3bUvqVslcLdt3rxZQ4YM0Y8//qgdO3YoT548rutv4MCBWr9+vdasWePuMvEAmz9/vtq0aaPy5cvrypUrOnbsmOrUqaMRI0Zox44dat26teLj45UvXz6tWLFC27ZtU6FChdxd9n2Blh8kkxR8Fi5cqCpVqqhy5coqX768unfvrvPnz6t79+7q1q2b3nnnHU2YMMH1uLRp0xJ8LJOYmPiPbaVLl9aCBQvk7++vvn376syZM65v6i9evKjcuXNb39yO2/P7779r6dKlmjJliipVqqRUqVJp//79GjRokLZs2aIqVaqoW7du+vPPP7VixQpJf39LSvDB3ZZ0rYWEhKhfv34qUqSInn76aR08eFCXL19WdHS01q9fz4KluC0HDhxQp06dNGjQIC1atEjDhg1TeHi4qyWxaNGiGjp0qJ588kllypRJW7duJfhc615P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qM8//1zBwcGu406fPq1vvvlGe/bsUebMmdWsWTMVKFDAjZU/nAg/DzhzzXoEy5YtU8OGDTV06FC9+OKLWrp0qd566y29/fbbGjJkiHx8fBQREaEWLVro559/1uHDh139SGG3uLg4pUqVSkOHDtXGjRs1c+ZM+fn56eOPP9a2bdsUERGh7777jg+kuKMOHz6sjh07SpLeffdd13pSwL3y448/asaMGSpTpoxatmzpCjRJAahFixYaOnSoMmfOnOxxBB/cisjISIWFhengwYMaNWqUUqdOrenTpys4OPi6i9Hj7uCTzANq48aNOnfunOsXJSIiQlOnTlWfPn301ltvyeFwaPjw4apSpYomTJigrl276sqVKwoICNDUqVO1ZcsWgg9cktZL+fXXXxUZGSmHw6Ho6Gh9//33qlmzppYtW+YacA7cKfny5dPYsWPl6empzp07a8+ePe4uCRb54Ycf1LRpU3311VeuIONwOJSQkKAqVapo2bJl+vLLL9W2bVtFREQkeyzBBzcjqX3hwIED2rFjh37//Xflz59fL730ktq1a+dawyc8PFwOh0NjxozR1KlTlZCQwLpRdxHh5wG0Zs0aNW3aVB999JH++usvSZKPj48qVaqkhg0b6uzZs6pZs6aee+45ff/99+rTp48++eQTvf3224qJiVGWLFmUPXt2N58F7idJIbpNmzbaunWrnn76aRUrVkx//PGH6tev7zqOlh/cafny5dPw4cNVsWJFFlbGXfW/HyYrVKig1q1by9vbW/PmzdPx48fl4eGRLAB9/fXXCgsL+0fLD3AzHA6H5s+fr6efflqvvPKKypcvr+HDh8vDw0OvvPKK2rdvr+joaNe12KVLF5UuXVqenp60At1FdHt7QHXt2lUbNmxQzZo11b59e2XJkkUXL15UhgwZ9PHHH+vrr7/W3LlzFRQUpPHjx+vzzz9XeHi4duzYoaxZs7q7fNzHdu3apW+++Ua+vr7q0qWLvLy8FB8f72odAu4mxvvgbrj2uoqPj1d0dLTSp08vSRoxYoSmTZumGjVqqFOnTsqePbsSExNljEnWwsO1iZuV1IXt/PnzKl++vHr06KFChQppy5Yt6tKli3r06KHBgwfLGKN169Zp/vz5On36tN577z2+BLoH+DTzgEkamzFy5Eh1795dq1evlsPhUMeOHZUpUyYZY3Tw4EElJCQo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l2wa7JdeekmjR48m+OCmREVFaf78+ercubPatGmjU6dOqX379qpfv76WL1+uTp06affu3cqaNavi4uK0bds2gs8DhNne7pHFixerb9+++u6777R7925t2LBBAwYM0BdffKEOHTpo+PDhrn7LSd9yJc0UEhsbK29vb3efAgAAbjF37lwNGzZM0dHRWrBggR5//HFJUkREhHr37q1ffvlFdevWdY37uXZ8rcT4C6RMbGysFi1apJIlSypTpkyqXLmySpYsqc8++0xz5szRq6++qldffVWNGjVSkSJF9Mgjj7i7ZKQALT/3SEBAgDw9PdWqVSvVqlVLTz75pNKkSaN27dpp8ODB6tGjhz799FNJSjaTjSSCDwDAaqVKlVLWrFl14sQJLV++3LU9ICBAQ4cOVeHChTVp0iTNmjXLte/aiYWAlPD29latWrX06KOPaunSpUqdOrVr7ShJqlixojZs2KCSJUsSfB5AhJ97pFy5cipbtqxWr16tihUr6oknnnDt69Wrl95//3299dZbmjx5smv7jRY0BQDAJo899pgmTJigSpUqaf78+Zo9e7ZrX5YsWfTee++pZcuWrrXwCD24XUmzCR47dkwXL150jR/7+eef9fLLL+vIkSPKli2bO0vELaLb2z2QtPBV9erVlS1bNm3btk1ly5ZV+/btVaJECddxH374oXr37q0vvvhCzZs3d1/BAADch44dO6YOHTroypUrat26tRo3bvyPY/53sUngdvz0008KCQlR6dKllTp1am3fvl0//PCDihUr5u7ScIsIP24wb9489e/fXyEhIerQoUOyVqDRo0erevXqKliwoPsKBADgPnXs2DF17NhR0dHRatSokUJDQ91dEh5ymzdv1ieffCI/Pz+1bdtWhQsXdndJuA2En7vk2sWxLl68qCtXrqhixYqu/dcGoI4dO6p48eJurBYAgAfHsWPH9Oqrr6pMmTIaO3asu8uBBRITE+lO+ZAg/NwFN1ocq1GjRnr33Xddi5zOmzdP77//vgoWLKg+ffowlTUAADfpzJkzCgoKYnwsgBRhxcy74N8Wx7p69aoGDBig/Pnzq0GDBoqJidHHH3+sLFmyuLtsAAAeGFmzZpXk/EaeAATgZtHycxdERUWpe/fuyp49u/r166djx46pSpUqKlGihFatWqVnnnlGQ4YMcY3ruXjxojJkyODmqgEAAICHGy0/d0Hq1KldC2KdP39e9evXV6VKlZItjhUXF6cxY8YoX758Sp8+vbtLBgAAAB56hJ+7IGlxrNSpU2vGjBn/WBzrmWee0f79++Xj4yOJlacBAACAe4FOsnfJvy2OVb9+fR0+fFi5cuVyZ4kAAACAVRjzc5exOBYAAABwf6Dl5y4rUaKE1q5dqzx58qhAgQLatGkTwQcAAABwA1p+7hEWxwIAAADci/ADAAAAwAp0ewMAAABgBcIPAAAAACsQfgAAAABYgfADAAAAwAqEHwAAAABWIPwAAAAAsALhBwAAAIAVCD8AAAAArED4AQAAAGAFwg8AAAAAKxB+AAAAAFjh/wATM+39RenCLwAAAABJRU5ErkJggg==",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "import seaborn as sns\n",
+ "\n",
+ "top = df['artist_top_genre'].value_counts()\n",
+ "plt.figure(figsize=(10,7))\n",
+ "sns.barplot(x=top[:5].index,y=top[:5].values)\n",
+ "plt.xticks(rotation=45)\n",
+ "plt.title('Top genres',color = 'blue')"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Remove 'Missing' genres, as it's not classified in Spotify\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Text(0.5, 1.0, 'Top genres')"
+ ]
+ },
+ "execution_count": 8,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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mTNnNHbsWAUFBSlFihRq2rSpZsyYIUkaOHCgqlev7vFaLdd7fOXKFSsYxD0JXr58WaNHj1aqVKnUv39/t79t3LixWrdu7bb9gzynS2xsrNtjzJ07Vw6HQ127dlV4eLi1/OzZswoKCtKaNWse6PkehquMFy9etE70d5Z748aN8vPzU7169XTp0iVrffv27VW1alXrAP64utv3LyYmxmraWbBgQbfa8ZMnTyp37tz65ptv7vmY/fr1k5eXl0qVKqWUKVMqJCTEre+qJH388cfKmTOnxowZY9trSUgxMTGKiYlRnTp11Lx5c2u56/v0wQcfyOFwqGXLlol+R/t+Jk6cqMqVK7stGzt2rBo1aqRr165JkubMmaPWrVtryJAhD/xdT4pc5+O9e/dq+/btkpwXpiEhIXI4HFaIcundu7eeeuop61h08eJFbd68WdevX1doaKgVrnfu3KmMGTMqbdq0Htl3t2zZonz58unUqVOSnAFRctYYtW3bVitWrFD69OmtkCU5g02/fv3czqMJZfny5SpUqJAiIiIk/X0zslu3burZs6e+/vprt/LFxsbqs88+0zvvvJOkblq59p9vvvlGJUqUsEKhJL333nvKmjWrunbtqj179ujUqVM6ffq0dS2Y0E6cOGE9zzfffKOpU6dKct6g9vb2tm5euVoDTZ06VSVLlnzsz1X3E7fJr7e3t+rVq6eAgAA9+eSTGjdunK5evSpJWr9+vUJCQlS8eHHlzZtXO3bseKjnI2glsLhfwlKlSqlgwYIKDg7W4sWLrSZPrrBVu3bteM1vHsS9gogrbBUrVkzDhg2zynTz5k2VLl06Sdak3Cnuazt48KB++eUXt5OB6y5r165dtWbNGv3666+qW7euSpcunej9z6KjozV06FDlzJlT7dq1k8PhsAY5uXjxovbv368VK1a4/U2HDh3UoUMHt+aPic31Pv32229q06aNvvzyS7fgt3XrVl28eFGRkZEaM2aMUqVKpRYtWqhfv37q06ePUqdOrT179jzUcx4+fPiuTVdc78dnn30mh8OhV155RT/++KOOHTumAQMGKFOmTFZH6YTiKuOePXtUo0YNjRgxwq2py8qVK63ato0bNypHjhwqVqyYWrZsqddff10ZMmTQL7/8kqBlTGhxv0MbN27U4sWLtWnTJl28eFGS8zsZEhKigIAAjRs3TrNnz1aD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q3z58ql+/frxRhQ8deqUxo0bp06dOql///6PxfQTdjl06JD27duna9euqWrVqlaT37/++ktZs2ZVgQIFrIFBHhVBK4FFRERo0qRJioiIUHh4uAoVKmS1+W7YsKHy5cunESNG2NImevXq1fL19bWGWb569aqmTp2qlClTasSIEZKcd1leeeUVVa9eXR988IHbSFNJ2dWrV/X000+7DSt+48YNLVy4UEWLFrVGwZP+rtkaMWKERzvORkdH6/Tp0xowYIAKFy7sVkbJ2YZ/1apVSWauoKioKLc+Bnf67bff1KhRI7e7uNHR0Y/0Hv/www8qWLDgXZvW3bhxQ1WqVFHfvn3dls+YMSPR+921bNlSpUqVskLDtWvXrJP+0aNH1ahRI2tUT1cAvH79eqKWMaG99tpratq0qduynTt36sknn1SnTp0kOQPovn37VLp0aRUvXvwfR4RctWqVKlSooHLlysW7wTRhwgSFhYUl2Wkn4l7obdmyRTVq1NC2bdt09epVvfPOOypXrpy6du1qzZO3a9cuTZo0SXPnzrWCSs+ePVWxYsVEr/GI691331WbNm2sJkWS88KxRo0absfaOyWlC91H9fTTT6tNmzY6evSoXn31VT311FMqVKiQUqdO7TbSoOTsDxwaGmo1K5LcWykcPXpU8+bN04cffhjvBkJCi42N1dSpU93CyA8//KCffvpJn332mfLly6ewsDC3vwkPD7dGwXNdAyTUTddTp07p3XffdWuOPnHiRP34449q2bKlfHx83AY8iomJ0a5du7R48WLt3LnTep+Tyk3huH3vS5Ys6fZ9iTtwimsQGU+4dOmS9u/fr8WLF6ty5cqqVauWFbaS+jWfneK+1jv3n59++knBwcFWc+m9e/eqXr166tSpk9vgJo+CoJUIXBfS/fv3V6NGjawLsd69e8vb21tly5a15WQ7c+bMu/aJGDNmjLJkyaLdu3dLcl5Qd+7cWRUqVNCQIUMeiwvCmJgYVahQId6J7/bt22rVqpVbp3PJWcvgcDg0ZsyYRDmguJ7jjz/+0KZNm7R9+3ar2dShQ4c0YMAABQUF6b333pPkHMb/hRdesK1q+lG5yj9q1CilSpVK1apV0/PPP686deqoYsWKKlOmjIoWLSqHw6HixYurZMmSevXVVx956Pz169crWbJkGjZsmBYuXKgFCxZo7dq1mjlzpj7//HP17dtXZcqU0axZszRz5sxEryFyvS/fffedsmbNqqJFi6p+/foqVaqUgoODrVoKh8Oh9OnTK0eOHHrqqaeSzOdqB9dFQ48ePVS7dm1J7jWdM2bMUJo0aaxO95KzqWVAQIDKly9vbbdp0yatWbPGbfTT1atXq2bNmnryySfj3e11vfdJKWzF7bskSbNnz9Zzzz0X7+bEyJEjVbZsWXXt2jVerdwff/yhLl26KGPGjG43LTxhyZIlql+/vgoXLqxq1app1apVunnzpj799FNlypTJOi8lpc/ADnv37rXC/QcffKDy5csrWbJkat68uWbNmqXp06dbzezjHuOGDh2qkJAQ6/e455bNmzdbtdqJLe4cdpKzH+ALL7xgfX5nz57VJ598ooCAALewdee5MaE/Z9e1yYgRI9wmST537pyaNGkSL2zdydP74d2uJWJiYtSqVSsFBQXphx9+cFvXr18/Va5cOd4k1wldvt9++03bt2+3bmDGxMRo7ty5qly5surUqWPVoo8ZM0bTpk3T7du3/7PBy/W6Vq9erU6dOqlixYp6//33rekNfvzxRwUEBGj27Nm6evWq3n77bT377LO2nsMJWjZyJeV9+/bp559/jneX/sUXX9Rzzz1nXYD36tVLK1eutK3pyLJly5QmTRprQA3XDrZjxw5ly5bN7WB869YtPffcc6pRo0aSGy71bgfTW7duqUePHqpevXq8vkzvvvuunnrqKd24ccPtYDFx4sRE6f/ges5FixapcOHCyp07t8qVK6eGDRtaX9bDhw9r8ODBypIli4oXLy4vLy9rnhBPc5XfdUGxZ88elSpVSj169NDXX3+t2bNna/LkyZo9e7bSpEmjNm3aqGfPnlZwf5jni/s5jRkzRi1atFCxYsXUpEkTNWnSRJUrV1bp0qVVtWpVORwOq1lWYt4ldpXRdbFy5coV1a5dW927d9eePXu0detWbdy4UZs3b1aRIkX04osvaurUqR7rc2OHuAHqTq7RH5csWeK2fOnSpSpTpky848gff/xhDQLQu3dv5cyZUwEBAXriiSdUr149q1nVqlWrVLt2bVWuXDnee5eUTv69e/dW586d3d6jF198Ud7e3goJCYl3w+qDDz7Qk08+qTZt2lg1ezdu3NCXX36p1q1bJ3rIutvonpLzjvzu3btVr149lS5dWuXLl9eSJUtUsGBBDRw4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mM39zJgxQxUrVnR7vefOnVOnTp1UpEgR65otPDw8yfShJWj9gz/++EP+/v5WTdY/dZ58ULVq1XK7oJsxY4bSpEmjokWLxqvmbNasmXLlymXVoJUsWdLjw5w/qBMnTmjQoEHKnDlzvBqDy5cva/LkyfLy8tLw4cM9Ur475xAqXbq0MmXKZAUqVzvoAwcOKGfOnIky/PmDio2N1R9//KFs2bJZfTBGjhwph8OhunXrum07YMAABQUF6ejRow/1XLdv37YuDOK2fd67d6+qVq0qb29va6hp13vbq1cvPf3004nSbMx1keR67jNnzqhw4cLW/GerV69WsmTJNHToULe72W3bttXzzz//WJ+0zp8/r/feey/e9ALz589XcHCwihUrZh3TXLp166bq1av/4/HEtW7o0KEqU6aMVfPjep7169crbdq0qlatmubMmWPnS0owe/fuVXBwsDX34IULF7R7926NHDnSalLmsmDBAo+HxbvVQv1TzdSxY8f04osvqn379o/NueJ+3n77baVMmVKjR492G2lXkiZPniyHw6HBgwe77f9//fWXsmfPLofDEW8Qo1OnTqlWrVrKly+f8uTJo2LFiiV6M/A7R++TnINweHt7WzVBrs/Zdbc+V65cWrt2rdu6hNo/Xa0TOnXqpIMHD+rrr79Wzpw5tXjxYg0ZMkTlypXT008/rWPHjmnLli1KkSKFXn75ZWsAq+joaLVq1UoOh+Mf+wcnpLlz51oDcaxatUrVqlXT8OHD1aBBA+XNm9c6ZySVaVkiIiLcWpwcO3ZMWbNm1b59+9zmi3PNS/Zf+X7fyfW6vv/+e/3xxx+aPXu2MmTIYA1qE3dE6Bw5cljvR1JC0PoHR44cUZ48efTll19ay1wHtFWrVlnVlNKD7eRbtmxRzpw5rWZ+O3futA72DofDulMV9wS6fv16ffXVV24jgCXVi8F7nfhPnz6tt99+WwULFnTrHyM5+w99/fXXHr+QcZVl/PjxypIlS7wJko8cOaJcuXJpzZo1Hird/YWGhqpZs2bW59CzZ08lT55cb731lt5880116tRJGTJkeKhJFj/55BO3vzt58qSSJ0+usLAwa1n//v3l6+urYcOG6eTJkzp06JD69eunzJkzJ0on/B49eqh06dLWgAurV6/WkCFD1KFDB7dmBDNmzFCyZMnUokULderUSS+99JLSp0+faLPFJ4Q7j0Off/6527C28+fPV0hIiFq1amXdXb506ZIqVaqk9u3b/6vn2L17t5InTx5v4JBVq1apefPmql69umrWrOlWW59UHTt2TPnz59esWbOsmqugoCAFBwfL4XBow4YN8f7GU8fduMfVPXv2aPPmzYqIiLhvk+rw8PB4TQsfd4MGDZLD4VDhwoWtGz6u1zZlyhSlSpVK/fr1c2tmtWHDBpUvX14lSpSwbqDdORLnwYMHPTKg1N1G75OkatWqqUGDBta62NhY3bp1S82aNVPBggXl5eWVaNOJ/PzzzypdurS6d++unj176rPPPrPWLV26VFWrVlWjRo10/Phxbd26VQ6Hw62Z8q1bt9SuXTuPdW9Ys2aNihcvrsaNG8vhcFgj023btk116tRR3rx53aY1WbdunRUUE0PcIfq3bdvmFkhjY2N15MgReXt7W+engQMHKnny5A99szSpi3stuGbNGmXMmFGLFy/Wzp07FRISouHDh7u1jjl69KgKFCjg1mIqqSBo/b+7HaQuXryoihUrqlatWvEmfXv99dfVoEGDh2qz+/PPP6t48eKaNGmSOnXqpOrVq+vKlSs6d+6cQkNDVbhwYasZ4r1CS1IIJHcTt7xr1qzRF198oa+//tqqxTh+/LjefvttBQYGxgtbLon52lyfe3h4uM6fP28Nd339+nVNmDBBgYGBatKkic6ePav9+/frrbfekq+vb6KNfvhP7tw3XBe2s2fP1pNPPml17r1x44bGjBmjatWqqWLFinrxxRcfqnNoVFSUSpYsqVy5clmB6fbt2/rss8+ULl06tyGlX3nlFZUqVUopU6ZU2bJlFRgY+FDB7kF9/fXX8vLysmrZrl27po8++sjqSH7y5ElJ7nfBOnbsqBo1auj555//T4zG5nL16lW1a9dOpUuXdrvgmTVrlooVK6YsWbKoVq1aatasmcqUKeN2MXc/06ZNU8qUKdWnTx/t2LFDhw8fVoMGDfTuu+9q3759cjgcSe5mxN2OpadPn9Zzzz2noKAgpUqVSmFhYVq8eLGuX79+11oGT4n7mfTv31958uRRtmzZlClTJoWFhf2r79bj2Cfrn7hq6z/99NN46z7++GNlypRJK1eu1MSJE/Xee+9pzZo12rRpkwIDA1W7dm1rW0/XYNw5el+bNm2s49SsWbNUvnx5twmyb926pRYtWuj7779X5cqV1bx580QL/zt37lSZMmWUKVOmeJPML126VNWqVVPjxo31559/au/evUnuZnDbtm2VKlUq1apVy3qPJemnn35SnTp1lDt3bm3cuFEDBw5Uzpw5E61PcdzpgfLmzaugoCClSZNGL774ov7880/FxMTo1q1bypcvn7Zu3aohQ4YoXbp08UbM/C8YO3asWxPu8PBwvf76624D+/Tq1UslSpTQ0KFDra4S/fr1U758+ayarqSEoKW/d/I1a9aoR48e6t69u3WRunfvXvn6+qpOnTqaMGGCli9frrCwMGXMmPGRLsr69u2rXLlyKVWqVG4J/Ny5cypTpoyKFCmSoCPsJYS4J4x+/fopf/78KlSokCpXrqyqVataA0YcP35cQ4YMUZEiRdS9e3dPFdft4Fa8eHEVKlTImpz14sWLioqK0oQJE5QlSxZ5e3urfv36aty4sUcmrYwr7txHktxOGJKz6ViBAgXUrVs3t+WuGp5HqWm4fPmyatSooTx58lh31m7fvq0vvvhCqVKlcmsW+scff2jp0qX65ZdfEm2eLNfQzidPntSyZcvUt29fXb9+XZ988okcDodGjRoVr/+W62LgcaiB+Sd3u5A+ceKEunXrpvLly7tN5Lhw4UIVLlxYTz75pNWcUnqw92DBggXy9fWVv7+/cubMqZCQEN24cUNHjx5VwYIFk9ToV3Hfm+3bt2vlypU6fPiwbt++rUuXLmnTpk1u/Ueio6NVvnx5a/TMpGLs2LHKmjWrvv32W504cUITJkxQlSpV9Mwzz/xPdIS/0+DBg5UiRYq7zg04Y8YMZcyYUa1atVJoaKjKly+vl156Sd99951y5MihevXqWdt6qqbvXqP3vfzyy7p06ZKioqI0atQolSxZUkWKFFHXrl1VunRplShRQtHR0XrxxRfVsGHDRC3z7t27FRAQoFq1asWr/V++fLmKFCmivn37WsuSQthyzelXpkwZPfPMMwoKClK3bt3cbqD//PPPatKkiXx8fFS4cOFEDzGrV6+Wt7e3Pv30U0VFRWnlypVyOBxq1aqV1a+sbNmyypMnj1KnTu3x65CE8Pbbb8vhcFi1nrt371ZwcLACAwM1b948t2379OmjMmXKKGXKlCpTpox8fX2T3MjPLgSt/7d06VKlTZtWtWrVUkhIiFKkSGF9sL///rsaNWqkggULKn/+/KpYseJDtwN11db07NlTDodDgYGBmjx5slu/lXPnzllzAXhy7P+HNWrUKGXPnt2q+n7vvffkcDhUtGhR627D8ePH1atXLz333HMebc6ydu1apU6dWmPGjNHixYv14YcfKn369OrSpYsuX76s69eva+LEiSpQoIDatm3r8UEwBg8erNdff926IP71119VtmxZNWzYUIcOHbKa0SxYsEB58uRx62fyTxMx30/cYcLPnj2r0NBQa9ALyT1s2T18/IPYsmWLSpUqpbp168rhcLgNzDB8+HAlS5Ys3sXzf+FO/51zwhw6dMgK5MePH1dYWFi8sDVnzhxVqFBBL7zwwkPfNDp58qS2bNmi7777znof+/fvr8DAwCR5Z7Fv377y9/eXn5+ffHx81KRJE7f+ateuXdOBAwdUv359hYSEJImLRJeYmBg1b9483mTE8+bNU7FixazRBf8L+/ODGDx4sJInT+42aua+ffuUO3du67u+b98+pUmTxmpG+/333yt//vwKDQ31SJml+4/e17FjR125ckXR0dH64Ycf9NJLL6lZs2Z6+eWXre9769at1alTJ0VHRyfqefSXX35RSEiIOnXqFK91xI8//pjkW9xMmDBBhQsX1muvveZ2jRUdHa3du3cn2o1Bl8uXL6tz584aMmSIJGefuPz586tFixby9vZWw4YN9fPPP+vpp59Wjhw5ktRNLLucPn1awcHB1oigrtfo6tvXs2dPtznDJOf3ZsGCBVq2bJnHJxT/JwQtOUfdGjVqlDW6y8WLF9WrVy+lTJnS6tR9/fp1Xbp0SSdOnHio4SLvPPn99NNP2rNnj7p06aJixYpp7Nixbp3yz507pzx58uj5559/hFeW8N5//323Nu0nTpxQkyZNrOFSV6xYofTp06tPnz4KCQlRiRIlrJqtiIiIR7r4fxSu53v55ZfVqlUrt3WuIf1dTSP++usvffrpp27ttz1lyZIl1oktKipKf/31l2bOnKlKlSopICBArVu31saNG3Xs2DHVqlXLGu74UU98cTvfNm3aVDVq1JDD4VChQoXiha306dPH63CemLp06aKUKVOqatWq8UYOe/fdd5UsWTLru/6469Kli3W3U3KGHD8/P+XLl09ly5a1bggdO3ZMYWFhqlChglszwrlz56p8+fJq2rTpI5+89+7dq7Zt2ypLliyJ0kz0QU2aNElZs2bV+vXrdeHCBc2d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",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "df = df[df['artist_top_genre'] != 'Missing']\n",
+ "top = df['artist_top_genre'].value_counts()\n",
+ "plt.figure(figsize=(10,7))\n",
+ "sns.barplot(x=top.index,y=top.values)\n",
+ "plt.xticks(rotation=45)\n",
+ "plt.title('Top genres',color = 'blue')"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "The top three genres comprise the greatest part of the dataset, so let's focus on those"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Text(0.5, 1.0, 'Top genres')"
+ ]
+ },
+ "execution_count": 9,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAz8AAAKfCAYAAABAPnYZAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAABOxElEQVR4nO3deZiN9eP/8deZGTNjmMUwi2FElJ1sjflSUbYJSZOtEmIkWxnrSLbUCCHZWsmWpUIUZYtkJx+RRFHEjC0zZpj9/P44vznNyZLRTAfv5+O6zsW57/uc8z51dTrPc9/3+7ZYrVarAAAAAOAO5+LsAQAAAADAf4H4AQAAAGAE4gcAAACAEYgfAAAAAEYgfgAAAAAYgfgBAAAAYATiBwAAAIARiB8AAAAARiB+AAAAABiB+AEAAABgBOIHAGBnsdzY7ZtvnD1SAAByz83ZAwAA3DrmznW8P2eOtGbNlcsrVvzvxgQAQF6xWK1Wq7MHAQC4NfXuLU2bJpn+f4qsLCktTfL0dPZIAAD/Boe9AQByJTlZ6t9fCg2VPDyk8uWlCROuDCSLxRZP8+fbtvH0lGrVkjZturHX+e036bHHpEKFpMBAqV8/6auvrn7Y3fbtUrNmkq+v5OUlPfSQ9N13jtuMHGl77JEjUufOkp+fbfsuXaRLl6499sqVbe9z9Wrbuj/+kJ57TgoKsi2vXFn68MMrx//227Z1Xl5SkSJS7drSggU39t4BAPmDw94AADfMarUFyYYNUteu0n332YJk4EBbFEya5Lj9xo3SokVS3762UJg+3RYpO3ZIVapc+3WSk6WHH5ZOnZJefFEKDraFw4YNV267fr0UEWELqxEjJBcXadYs2+O//Va6/37H7du2lcqUkWJjpT17pPfft8XVG29c+byLF9siqFgxqXRpKT5eqlv3rzgKCJBWrbL9s0hMlF56yfbY996zvecnn7SNPyVF2rfPFmlPPZXLf+gAgDzDYW8AgGv6+2Fvy5dLjz8ujRkjvfzyX9u1aSN9+ql0+LBUtqxtmcVi+3PXLluYSNLvv9v2AkVESJ99du3XnTjRtndp2TKpVSvbspQUqUYN6aefbBHUoIFtXOXLS3ffbYuQ7Ne8fNm216VcOenrr23LRo6URo2y7bX54IO/XuuJJ2x7o86e/WuZxWKLqB9+kCpV+mt5t27Sl1/alhct+tfyDh1sr3/qlFSwoO2f0ZEj0v79//iPGADwH+KwNwDADfvyS8nV1bZXI6f+/W0hsmqV4/Lw8L/CR5JKlbLFzFdfSZmZ136d1aulEiVse5myeXpKUVGO2+3dawuup56Szp2zBczZs7Y9R488YouarCzHx/To4Xj/gQdsj01MdFz+0EOO4WO12gKvZUvb37Nf6+xZqWlTKSHBtidJsh1Sd+KEtHPntd8jAOC/x2FvAIAb9ttvUkiI5O3tuDx79rfffnNcfs89Vz7HvffazrE5c8Z2ONu1Xqds2b/25GQrV87x/uHDtj87dbr2mBMSbOfcZCtVynF99ro//5R8fP5aXqaM43ZnzkgXLkjvvmu7Xc3p07Y/Bw+W1q61HXJXrpzUpIkt0OrVu/Y4AQD5j/gBANy2svfqjB9vO//oagoXdrzv6nr17f5+EHjBgld/rWeeuXZsVatm+7NiRenQIWnlStterE8/tZ3vNHy47dA7AIBzED8AgBt21122PRoXLzru/fnpp7/W55S9Zyann3+2zYAWEHD91/nxR1uQ5Nz7c+SI43bZ5xf5+EiNGt34+7gZAQG295yZeWOvVaiQ1K6d7ZaWZju36LXXpJgYpswGAGfhnB8AwA179FHbl/+pUx2XT5pki5SICMflW7f+dR6MJB0/bps0oUmTa++BkWzn0Pzxh/T5538tS0mxzaKWU61atgCaMEFKSrryec6cubH3dSNcXaXISNtenKtNZJDztc6dc1zn7m47f8hqldLT825MAIDcYc8PAOCGtWwpNWxom+nt2DGpenXbbGrLl9umec7eE5OtShVbyOSc6lr650O/nn/eFlgdOtimii5e3HbNnew9Jtl7g1xcbFNVR0TYZnfr0sU2UcIff9hmhPPxkVasyLv3P3as7XnDwmyTL1SqJJ0/bwu8tWttf5dscRccbDvHJyhIOnjQ9n6aN7/yfCkAwH+H+AEA3DAXF9vemOHDbdfvmTXLdv2b8eNtM7793UMP2WZ8GzXKNs11pUrS7Nl/nRtzLYUL266z06eP9NZbtvvPPiv93//Z9r7kPGysQQPbHqZXX7UFRlKSLTzCwmwRlZeCgmzXKBo92jZV9/TptimvK1d2vE7Q88/bYm3iRNt4Spa0BeCwYXk7HgBA7nCdHwBAvrBYpF69rjxE7t+YPFnq1882jXSJEnn3vAAAM3DODwDglnT5suP9lBTpnXds02cTPgCAm8FhbwCAW9ITT9iuyXPffbZr9cybZ5tVbv58Z48MAHC7In4AALekpk1tkxnMn2+bYa5SJWnhQtvU0QAA3AzO+QEAAABgBM75AQAAAGAE4gcAAACAEW7Lc36ysrJ08uRJeXt7y5J9pTsAAAAAxrFarbp48aJCQkLk4nL9fTu3ZfycPHlSoaGhzh4GAAAAgFvE8ePHVbJkyetuc1vGj7e3tyTbG/Tx8XHyaAAAAAA4S2JiokJDQ+2NcD23ZfxkH+rm4+ND/AAAAAC4odNhmPAAAAAAgBGIHwAAAABGIH4AAAAAGIH4AQAAAGAE4gcAAACAEYgfAAAAAEYgfgAAAAAYgfgBAAAAYATiBwAAAIARiB8AAAAARiB+AAAAABiB+AEAAABgBOIHAAAAgBGIHwAAAABGIH4AAAAAGIH4AQAAAGAE4gcAAACAEYgfAAAAAEYgfgAAAAAYgfgBAAAAYATiBwAAAIARiB8AAAAARiB+AAAAABjBzdkDuNXVGjjH2UMAbku7xz/r7CEAAAA4YM8PAAAAACMQPwAAAACMQPwAAAAAMALxAwAAAMAIxA8AAAAAIxA/AAAAAIxA/AAAAAAwAvEDAAAAwAjEDwAAAAAj5Cp+YmNjVadOHXl7eyswMFCPP/64Dh065LBNSkqKevXqpaJFi6pw4cKKjIxUfHy8wza///67mjdvLi8vLwUGBmrgwIHKyMj49+8GAAAAAK4hV/GzceNG9erVS9u2bdOaNWuUnp6uJk2aKDk52b5Nv379tGLFCi1ZskQbN27UyZMn9cQTT9jXZ2Zmqnnz5kpLS9OWLVv00Ucfafbs2Ro+fHjevSsAAAAA+BuL1Wq13uyDz5w5o8DAQG3cuFEPPvigEhISFBAQoAULFujJJ5+UJP3000+qWLGitm7dqrp162rVqlVq0aKFTp48qaCgIEnSzJkzNXjwYJ05c0bu7u7/+LqJiYny9fVVQkKCfHx8bnb4N6TWwDn5+vzAnWr3+GedPQQAAGCA3LTBvzrnJyEhQZLk7+8vSdq9e7fS09PVqFEj+zYVKlRQqVKltHXrVknS1q1bVbVqVXv4SFLTpk2VmJioAwcO/JvhAAAAAMA1ud3sA7OysvTSSy+pXr16qlKliiQpLi5O7u7u8vPzc9g2KChIcXFx9m1yhk/2+ux1V5OamqrU1FT7/cTExJsdNgAAAABD3fSen169emn//v1auHBhXo7nqmJjY+Xr62u/hYaG5vtrAgAAALiz3FT89O7dWytXrtSGDRtUsmRJ+/Lg4GClpaXpwoULDtvHx8crODjYvs3fZ3/Lvp+9zd/FxMQoISHBfjt+/PjNDBsAAACAwXIVP1arVb1799bSpUu1fv16lSlTxmF9rVq1VKBAAa1bt86+7NChQ/r9998VHh4uSQoPD9cPP/yg06dP27dZs2aNfHx8VKlSpau+roeHh3x8fBxuAAAAAJAbuTrnp1evXlqwYIGWL18ub29v+zk6vr6+KliwoHx9fdW1a1dFR0fL399fPj4+6tOnj8LDw1W3bl1JUpMmTVSpUiV17NhR48aNU1xcnIYNG6ZevXrJw8Mj798hAAAAACiX8TNjxgxJUoMGDRyWz5o1S507d5YkTZo0SS4uLoqMjFRqaqqaNm2q6dOn27d1dXXVypUr9cILLyg8PFyFChVSp06dNHr06H/3TgAAAADgOv7VdX6chev8ALc+rvMDAAD+C//ZdX4AAAAA4HZB/AAAAAAwAvEDAAAAwAjEDwAAAAAjED8AAAAAjED8AAAAADAC8QMAAADACMQPAAAAACMQPwAAAACMQPwAAAAAMALxAwAAAMAIxA8AAAAAIxA/AAAAAIxA/AAAAAAwAvEDAAAAwAjEDwAAAAAjED8AAAAAjED8AAAAADAC8QMAAADACMQPAAAAACMQPwAAAACMQPwAAAAAMALxAwAAAMAIxA8AAAAAIxA/AAAAAIxA/AAAAAAwAvEDAAAAwAjEDwAAAAAjED8AAAAAjED8AAAAADAC8QMAAADACMQPAAAAACMQPwAAAACMQPwAAAAAMALxAwAAAMAIxA8AAAAAIxA/AAAAAIxA/AAAAAAwAvEDAAAAwAjEDwAAAAAjED8AAAAAjED8AAAAADAC8QMAAADACMQPAAAAACMQPwAAAACMQPwAAAAAMALxAwAAAMAIxA8AAAAAIxA/AAAAAIxA/AAAAAAwAvEDAAAAwAjEDwAAAAAj5Dp+Nm3apJYtWyokJEQWi0XLli1zWG+xWK56Gz9+vH2b0qVLX7F+7Nix//rNAAAAAMC15Dp+kpOTVb16dU2bNu2q60+dOuVw+/DDD2WxWBQZGemw3ejRox2269Onz829AwAAAAC4AW65fUBERIQiIiKuuT44ONjh/vLly9WwYUPdfffdDsu9vb2v2BYAAAAA8ku+nvMTHx+vL774Ql27dr1i3dixY1W0aFHVqFFD48ePV0ZGxjWfJzU1VYmJiQ43AAAAAMiNXO/5yY2PPvpI3t7eeuKJJxyW9+3bVzVr1pS/v7+2bNmimJgYnTp1ShMnTrzq88TGxmrUqFH5OVQAAAAAd7h8jZ8PP/xQTz/9tDw9PR2WR0dH2/9erVo1ubu76/nnn1dsbKw8PDyueJ6YmBiHxyQmJio0NDT/Bg4AAADgjpNv8fPtt9/q0KFDWrRo0T9uGxYWpoyMDB07dkzly5e/Yr2Hh8dVowgAAAAAblS+nfPzwQcfqFatWqpevfo/brt37165uLgoMDAwv4YDAAAAwHC53vOTlJSkI0eO2O8fPXpUe/fulb+/v0qVKiXJdljakiVL9Oabb17x+K1bt2r79u1q2LChvL29tXXrVvXr10/PPPOMihQp8i/eCgAAAABcW67jZ9euXWrYsKH9fva5OJ06ddLs2bMlSQsXLpTValWHDh2ueLyHh4cWLlyokSNHKjU1VWXKlFG/fv0czukBAAAAgLxmsVqtVmcPIrcSExPl6+urhIQE+fj45Otr1Ro4J1+fH7hT7R7/rLOHAAAADJCbNsjX6/wAAAAAwK2C+AEAAABgBOIHAAAAgBGIHwAAAABGIH4AAAAAGIH4AQAAAGAE4gcAAACAEYgfAAAAAEYgfgAAAAAYgfgBAAAAYATiBwAAAIARiB8AAAAARiB+AAAAABiB+AEAAABgBOIHAAAAgBGIHwAAAABGIH4AAAAAGIH4AQAAAGAE4gcAAACAEYgfAAAAAEYgfgAAAAAYgfgBAAAAYATiBwAAAIARiB8AAAAARiB+AAAAABiB+AEAAABgBOIHAAAAgBGIHwAAAABGIH4AAAAAGIH4AQAAAGAE4gcAAACAEYgfAAAAAEYgfgAAAAAYgfgBAAAAYATiBwAAAIARiB8AAAAARiB+AAAAABiB+AEAAABgBOIHAAAAgBGIHwAAAABGIH4AAAAAGIH4AQAAAGAE4gcAAACAEYgfAAAAAEYgfgAAAAAYgfgBAAAAYATiBwAAAIARiB8AAAAARiB+AAAAABiB+AEAAABgBOIHAAAAgBFyHT+bNm1Sy5YtFRISIovFomXLljms79y5sywWi8OtWbNmDtucP39eTz/9tHx8fOTn56euXbsqKSnpX70RAAAAALieXMdPcnKyqlevrmnTpl1zm2bNmunUqVP228cff+yw/umnn9aBAwe0Zs0arVy5Ups2bVL37t1zP3oAAAAAuEFuuX1ARESEIiIirruNh4eHgoODr7ru4MGDWr16tXbu3KnatWtLkt5++209+uijmjBhgkJCQnI7JAAAAAD4R/lyzs8333yjwMBAlS9fXi+88ILOnTtnX7d161b5+fnZw0eSGjVqJBcXF23fvv2qz5eamqrExESHGwAAAADkRp7HT7NmzTRnzhytW7dOb7zxhjZu3KiIiAhlZmZKkuLi4hQYGOjwGDc3N/n7+ysuLu6qzxkbGytfX1/7LTQ0NK+HDQAAAOAOl+vD3v5J+/bt7X+vWrWqqlWrprJly+qbb77RI488clPPGRMTo+joaPv9xMREAggAAABAruT7VNd33323ihUrpiNHjkiSgoODdfr0aYdtMjIydP78+WueJ+Th4SEfHx+HGwAAAADkRr7Hz4kTJ3Tu3DkVL15ckhQeHq4LFy5o9+7d9m3Wr1+vrKwshYWF5fdwAAAAABgq14e9JSUl2ffiSNLRo0e1d+9e+fv7y9/fX6NGjVJkZKSCg4P1yy+/aNCgQSpXrpyaNm0qSapYsaKaNWumqKgozZw5U+np6erdu7fat2/PTG8AAAAA8k2u9/zs2rVLNWrUUI0aNSRJ0dHRqlGjhoYPHy5XV1ft27dPjz32mO6991517dpVtWrV0rfffisPDw/7c8yfP18VKlTQI488okcffVT169fXu+++m3fvCgAAAAD+Jtd7fho0aCCr1XrN9V999dU/Poe/v78WLFiQ25cGAAAAgJuW7+f8AAAAAMCtgPgBAAAAYATiBwAAAIARiB8AAAAARiB+AAAAABiB+AEAAABgBOIHAAAAgBGIHwAAAABGIH4AAAAAGIH4AQAAAGAE4gcAAACAEYgfAAAAAEYgfgAAAAAYgfgBAAAAYATiBwAAAIARiB8AAAAARiB+AAAAABiB+AEAAABgBOIHAAAAgBGIHwAAAABGIH4AAAAAGIH4AQAAAGAE4gcAAACAEYgfAAAAAEYgfgAAAAAYgfgBAAAAYATiBwAAAIARiB8AAAAARiB+AAAAABiB+AEAAABgBOIHAAAAgBGIHwAAAABGIH4AAAAAGIH4AQAAAGAE4gcAAACAEYgfAAAAAEYgfgAAAAAYgfgBAAAAYATiBwAAAIARiB8AAAAARiB+AAAAABiB+AEAAABgBOIHAAAAgBGIHwAAAABGIH4AAAAAGIH4AQAAAGAE4gcAAACAEYgfAAAAAEYgfgAAAAAYgfgBAAAAYATiBwAAAIARch0/mzZtUsuWLRUSEiKLxaJly5bZ16Wnp2vw4MGqWrWqChUqpJCQED377LM6efKkw3OULl1aFovF4TZ27Nh//WYAAAAA4FpyHT/JycmqXr26pk2bdsW6S5cuac+ePXrllVe0Z88effbZZzp06JAee+yxK7YdPXq0Tp06Zb/16dPn5t4BAAAAANwAt9w+ICIiQhEREVdd5+vrqzVr1jgsmzp1qu6//379/vvvKlWqlH25t7e3goODc/vyAAAAAHBT8v2cn4SEBFksFvn5+TksHzt2rIoWLaoaNWpo/PjxysjIyO+hAAAAADBYrvf85EZKSooGDx6sDh06yMfHx768b9++qlmzpvz9/bVlyxbFxMTo1KlTmjhx4lWfJzU1Vampqfb7iYmJ+TlsAAAAAHegfIuf9PR0tW3bVlarVTNmzHBYFx0dbf97tWrV5O7urueff16xsbHy8PC44rliY2M1atSo/BoqAAAAAAPky2Fv2eHz22+/ac2aNQ57fa4mLCxMGRkZOnbs2FXXx8TEKCEhwX47fvx4PowaAAAAwJ0sz/f8ZIfP4cOHtWHDBhUtWvQfH7N37165uLgoMDDwqus9PDyuukcIAAAAAG5UruMnKSlJR44csd8/evSo9u7dK39/fxUvXlxPPvmk9uzZo5UrVyozM1NxcXGSJH9/f7m7u2vr1q3avn27GjZsKG9vb23dulX9+vXTM888oyJFiuTdOwMAAACAHHIdP7t27VLDhg3t97PP3+nUqZNGjhypzz//XJJ03333OTxuw4YNatCggTw8PLRw4UKNHDlSqampKlOmjPr16+dwHhAAAAAA5LVcx0+DBg1ktVqvuf566ySpZs2a2rZtW25fFgAAAAD+lXy/zg8AAAAA3AqIHwAAAABGIH4AAAAAGIH4AQAAAGAE4gcAAACAEYgfAAAAAEYgfgAAAAAYgfgBAAAAYATiBwAAAIARiB8AAAAARiB+AAAAABiB+AEAAABgBOIHAAAAgBGIHwAAAABGIH4AAAAAGIH4AQAAAGAE4gcAAACAEYgfAAAAAEYgfgAAAAAYgfgBAAAAYATiBwAAAIARiB8AAAAARiB+AAAAABiB+AEAAABgBOIHAAAAgBGIHwAAAABGIH4AAAAAGIH4AQAAAGAE4gcAAACAEYgfAAAAAEYgfgAAAAAYgfgBAAAAYATiBwAAAIARiB8AAAAARiB+AAAAABiB+AEAAABgBOIHAAAAgBGIHwAAAABGIH4AAAAAGIH4AQAAAGAE4gcAAACAEYgfAAAAAEYgfgAAAAAYgfgBAAAAYATiBwAAAIARiB8AAAAARiB+AAAAABiB+AEAAABgBOIHAAAAgBGIHwAAAABGIH4AAAAAGIH4AQAAAGCEXMfPpk2b1LJlS4WEhMhisWjZsmUO661Wq4YPH67ixYurYMGCatSokQ4fPuywzfnz5/X000/Lx8dHfn5+6tq1q5KSkv7VGwEAAACA68l1/CQnJ6t69eqaNm3aVdePGzdOU6ZM0cyZM7V9+3YVKlRITZs2VUpKin2bp59+WgcOHNCaNWu0cuVKbdq0Sd27d7/5dwEAAAAA/8Attw+IiIhQRETEVddZrVZNnjxZw4YNU6tWrSRJc+bMUVBQkJYtW6b27dvr4MGDWr16tXbu3KnatWtLkt5++209+uijmjBhgkJCQv7F2wEAAACAq8vTc36OHj2quLg4NWrUyL7M19dXYWFh2rp1qyRp69at8vPzs4ePJDVq1EguLi7avn37VZ83NTVViYmJDjcAAAAAyI08jZ+4uDhJUlBQkMPyoKAg+7q4uDgFBgY6rHdzc5O/v799m7+LjY2Vr6+v/RYaGpqXwwYAAABggNtitreYmBglJCTYb8ePH3f2kAAAAADcZvI0foKDgyVJ8fHxDsvj4+Pt64KDg3X69GmH9RkZGTp//rx9m7/z8PCQj4+Pww0AAAAAciNP46dMmTIKDg7WunXr7MsSExO1fft2hYeHS5LCw8N14cIF7d69277N+vXrlZWVpbCwsLwcDgAAAADY5Xq2t6SkJB05csR+/+jRo9q7d6/8/f1VqlQpvfTSSxozZozuuecelSlTRq+88opCQkL0+OOPS5IqVqyoZs2aKSoqSjNnzlR6erp69+6t9u3bM9MbAAAAgHyT6/jZtWuXGjZsaL8fHR0tSerUqZNmz56tQYMGKTk5Wd27d9eFCxdUv359rV69Wp6envbHzJ8/X71799YjjzwiFxcXRUZGasqUKXnwdgAAAADg6ixWq9Xq7EHkVmJionx9fZWQkJDv5//UGjgnX58fuFPtHv+ss4cAAAAMkJs2uC1mewMAAACAf4v4AQAAAGAE4gcAAACAEYgfAAAAAEYgfgAAAAAYgfgBAAAAYATiBwAAAIARiB8AAAAARiB+AAAAABiB+AEAAABgBOIHAAAAgBGIHwAAAABGIH4AAAAAGIH4AQAAAGAE4gcAAACAEYgfAAAAAEYgfgAAAAAYgfgBAAAAYATiBwAAAIARiB8AAAAARiB+AAAAABiB+AEAAABgBOIHAAAAgBGIHwAAAABGIH4AAAAAGIH4AQAAAGAE4gcAAACAEYgfAAAAAEYgfgAAAAAYgfgBAAAAYATiBwAAAIARiB8AAAAARiB+AAAAABiB+AEAAABgBOIHAAAAgBGIHwAAAABGIH4AAAAAGIH4AQAAAGAE4gcAAACAEYgfAAAAAEYgfgAAAAAYgfgBAAAAYATiBwAAAIARiB8AAAAARiB+AAAAABiB+AEAAABgBOIHAAAAgBGIHwAAAABGIH4AAAAAGIH4AQAAAGAE4gcAAACAEfI8fkqXLi2LxXLFrVevXpKkBg0aXLGuR48eeT0MAAAAAHDgltdPuHPnTmVmZtrv79+/X40bN1abNm3sy6KiojR69Gj7fS8vr7weBgAAAAA4yPP4CQgIcLg/duxYlS1bVg899JB9mZeXl4KDg/P6pQEAAADgmvL1nJ+0tDTNmzdPzz33nCwWi335/PnzVaxYMVWpUkUxMTG6dOnSdZ8nNTVViYmJDjcAAAAAyI083/OT07Jly3ThwgV17tzZvuypp57SXXfdpZCQEO3bt0+DBw/WoUOH9Nlnn13zeWJjYzVq1Kj8HCoAAACAO5zFarVa8+vJmzZtKnd3d61YseKa26xfv16PPPKIjhw5orJly151m9TUVKWmptrvJyYmKjQ0VAkJCfLx8cnzcedUa+CcfH1+4E61e/yzzh4CAAAwQGJionx9fW+oDfJtz89vv/2mtWvXXnePjiSFhYVJ0nXjx8PDQx4eHnk+RgAAAADmyLdzfmbNmqXAwEA1b978utvt3btXklS8ePH8GgoAAAAA5M+en6ysLM2aNUudOnWSm9tfL/HLL79owYIFevTRR1W0aFHt27dP/fr104MPPqhq1arlx1AAAAAAQFI+xc/atWv1+++/67nnnnNY7u7urrVr12ry5MlKTk5WaGioIiMjNWzYsPwYBgAAAADY5Uv8NGnSRFebRyE0NFQbN27Mj5cEAAAAgOvK1+v8AAAAAMCtgvgBAAAAYATiBwAAAIARiB8AAAAARiB+AAAAABiB+AEAAABgBOIHAAAAgBGIHwAAAABGIH4AAAAAGIH4AQAAAGAE4gcAAACAEYgfAAAAAEYgfgAAAAAYgfgBAAAAYATiBwAAAIARiB8AAAAARiB+AAAAABiB+AEAAABgBOIHAAAAgBGIHwAAAABGIH4AAAAAGIH4AQAAAGAE4gcAAACAEYgfAAAAAEYgfgAAAAAYgfgBAAAAYATiBwAAAIARiB8AAAAARnBz9gAA4Fb3++iqzh4CcFsqNfwHZw8BAByw5wcAAACAEYgfAAAAAEYgfgAAAAAYgfgBAAAAYATiBwAAAIARiB8AAAAARiB+AAAAABiB+AEAAABgBOIHAAAAgBGIHwAAAABGIH4AAAAAGIH4AQAAAGAE4gcAAACAEYgfAAAAAEYgfgAAAAAYgfgBAAAAYATiBwAAAIARiB8AAAAARiB+AAAAABiB+AEAAABgBOIHAAAAgBGIHwAAAABGyPP4GTlypCwWi8OtQoUK9vUpKSnq1auXihYtqsKFCysyMlLx8fF5PQwAAAAAcJAve34qV66sU6dO2W+bN2+2r+vXr59WrFihJUuWaOPGjTp58qSeeOKJ/BgGAAAAANi55cuTurkpODj4iuUJCQn64IMPtGDBAj388MOSpFmzZqlixYratm2b6tatmx/DAQAAAID82fNz+PBhhYSE6O6779bTTz+t33//XZK0e/dupaenq1GjRvZtK1SooFKlSmnr1q3XfL7U1FQlJiY63AAAAAAgN/I8fsLCwjR79mytXr1aM2bM0NGjR/XAAw/o4sWLiouLk7u7u/z8/BweExQUpLi4uGs+Z2xsrHx9fe230NDQvB42AAAAgDtcnh/2FhERYf97tWrVFBYWprvuukuLFy9WwYIFb+o5Y2JiFB0dbb+fmJhIAAEAAADIlXyf6trPz0/33nuvjhw5ouDgYKWlpenChQsO28THx1/1HKFsHh4e8vHxcbgBAAAAQG7ke/wkJSXpl19+UfHixVWrVi0VKFBA69ats68/dOiQfv/9d4WHh+f3UAAAAAAYLM8PexswYIBatmypu+66SydPntSIESPk6uqqDh06yNfXV127dlV0dLT8/f3l4+OjPn36KDw8nJneAAAAAOSrPI+fEydOqEOHDjp37pwCAgJUv359bdu2TQEBAZKkSZMmycXFRZGRkUpNTVXTpk01ffr0vB4GAAAAADjI8/hZuHDhddd7enpq2rRpmjZtWl6/NAAAAABcU76f8wMAAAAAtwLiBwAAAIARiB8AAAAARiB+AAAAABiB+AEAAABgBOIHAAAAgBGIHwAAAABGIH4AAAAAGIH4AQAAAGAE4gcAAACAEYgfAAAAAEYgfgAAAAAYgfgBAAAAYATiBwAAAIARiB8AAAAARiB+AAAAABiB+AEAAABgBOIHAAAAgBGIHwAAAABGIH4AAAAAGIH4AQAAAGAE4gcAAACAEYgfAAAAAEYgfgAAAAAYgfgBAAAAYATiBwAAAIARiB8AAAAARiB+AAAAABiB+AEAAABgBOIHAAAAgBGIHwAAAABGIH4AAAAAGIH4AQAAAGAE4gcAAACAEYgfAAAAAEYgfgAAAAAYgfgBAAAAYATiBwAAAIARiB8AAAAARiB+AAAAABiB+AEAAABgBOIHAAAAgBGIHwAAAABGIH4AAAAAGIH4AQAAAGAE4gcAAACAEYgfAAAAAEYgfgAAAAAYgfgBAAAAYATiBwAAAIARiB8AAAAARiB+AAAAABghz+MnNjZWderUkbe3twIDA/X444/r0KFDDts0aNBAFovF4dajR4+8HgoAAAAA2OV5/GzcuFG9evXStm3btGbNGqWnp6tJkyZKTk522C4qKkqnTp2y38aNG5fXQwEAAAAAO7e8fsLVq1c73J89e7YCAwO1e/duPfjgg/blXl5eCg4OzuuXBwAAAICryvdzfhISEiRJ/v7+Dsvnz5+vYsWKqUqVKoqJidGlS5eu+RypqalKTEx0uAEAAABAbuT5np+csrKy9NJLL6levXqqUqWKfflTTz2lu+66SyEhIdq3b58GDx6sQ4cO6bPPPrvq88TGxmrUqFH5OVQAAAAAd7h8jZ9evXpp//792rx5s8Py7t272/9etWpVFS9eXI888oh++eUXlS1b9orniYmJUXR0tP1+YmKiQkND82/gAAAAAO44+RY/vXv31sqVK7Vp0yaVLFnyutuGhYVJko4cOXLV+PHw8JCHh0e+jBMAAACAGfI8fqxWq/r06aOlS5fqm2++UZkyZf7xMXv37pUkFS9ePK+HAwAAAACS8iF+evXqpQULFmj58uXy9vZWXFycJMnX11cFCxbUL7/8ogULFujRRx9V0aJFtW/fPvXr108PPvigqlWrltfDAQAAAABJ+RA/M2bMkGS7kGlOs2bNUufOneXu7q61a9dq8uTJSk5OVmhoqCIjIzVs2LC8HgoAAAAA2OXLYW/XExoaqo0bN+b1ywIAAADAdeX7dX4AAAAA4FZA/AAAAAAwAvEDAAAAwAjEDwAAAAAjED8AAAAAjED8AAAAADAC8QMAAADACMQPAAAAACPk+UVOAQAA7kT13q7n7CEAt53v+nzn7CE4YM8PAAAAACMQPwAAAACMQPwAAAAAMALxAwAAAMAIxA8AAAAAIxA/AAAAAIxA/AAAAAAwAvEDAAAAwAjEDwAAAAAjED8AAAAAjED8AAAAADAC8QMAAADACMQPAAAAACMQPwAAAACMQPwAAAAAMALxAwAAAMAIxA8AAAAAIxA/AAAAAIxA/AAAAAAwAvEDAAAAwAjEDwAAAAAjED8AAAAAjED8AAAAADAC8QMAAADACMQPAAAAACMQPwAAAACMQPwAAAAAMALxAwAAAMAIxA8AAAAAIxA/AAAAAIxA/AAAAAAwAvEDAAAAwAjEDwAAAAAjED8AAAAAjED8AAAAADAC8QMAAADACMQPAAAAACMQPwAAAACMQPwAAAAAMALxAwAAAMAIxA8AAAAAIxA/AAAAAIzg1PiZNm2aSpcuLU9PT4WFhWnHjh3OHA4AAACAO5jT4mfRokWKjo7WiBEjtGfPHlWvXl1NmzbV6dOnnTUkAAAAAHcwp8XPxIkTFRUVpS5duqhSpUqaOXOmvLy89OGHHzprSAAAAADuYG7OeNG0tDTt3r1bMTEx9mUuLi5q1KiRtm7desX2qampSk1Ntd9PSEiQJCUmJub7WDNTL+f7awB3ov/iv8//ysWUTGcPAbgt3UmfA5KUcTnD2UMAbjv/xedA9mtYrdZ/3NYp8XP27FllZmYqKCjIYXlQUJB++umnK7aPjY3VqFGjrlgeGhqab2ME8O/4vt3D2UMA4Gyxvs4eAQAn8x38330OXLx4Ub6+1389p8RPbsXExCg6Otp+PysrS+fPn1fRokVlsVicODI4S2JiokJDQ3X8+HH5+Pg4ezgAnITPAgB8DsBqterixYsKCQn5x22dEj/FihWTq6ur4uPjHZbHx8crODj4iu09PDzk4eHhsMzPzy8/h4jbhI+PDx90APgsAMDngOH+aY9PNqdMeODu7q5atWpp3bp19mVZWVlat26dwsPDnTEkAAAAAHc4px32Fh0drU6dOql27dq6//77NXnyZCUnJ6tLly7OGhIAAACAO5jT4qddu3Y6c+aMhg8frri4ON13331avXr1FZMgAFfj4eGhESNGXHE4JACz8FkAgM8B5IbFeiNzwgEAAADAbc5pFzkFAAAAgP8S8QMAAADACMQPAAAAACMQPwAAAACMQPwAN2js2LGaOXOms4cBAACAm0T8ADfo9OnT6tmzp+bMmePsoQAAAOAmOO06P8Dt4vz58/L399fEiRPl7e2trl27KisrS507d3b20ADkktVqlcVisf8JAP8kKytLLi7sL7hTED/AdUyePFnz5s3TvHnzVKFCBY0aNUpZWVmKioqSJAIIuI3k/AJz4cIF+fr6KisrS25ubny5AXBVOT8bli1bphMnTig0NFQVK1bUvffe6+TR4WZwkVPgOo4dO6aaNWuqTp06mjJlisqXLy9JeuWVVzR27Fi99957BBBwG8i5p2fMmDFavXq10tPTVa1aNQ0ZMkRly5YlgAA4yPm5MWTIEE2dOlXly5fXr7/+qsqVK+vZZ59V9+7dnTxK5Baf8sA1ZGRkqHTp0tq3b5/27t2rnj176qeffpIkvfrqq4qJiVG3bt00a9YsJ48UwPXk/AIzdepUTZgwQW3btlV4eLiOHj2q+++/Xz/++KNcXFyUlZXl5NECuFVkf27s2bNHa9eu1ddff63du3dr06ZNqlatmt555x3NnTvXyaNEbrHnB7iOzMxMubq66vjx46pdu7aqVKmiadOmqUKFCpKk4cOH6/XXX9cHH3ygTp06OXm0AK5n+/btmjlzpiIiItS2bVtJ0q+//qqBAwdqx44d2rZtm0qUKOHkUQK4lYwdO1YHDhxQenq65s2bJzc32xkjhw4d0ogRI5SRkaGPP/5YBQoUcPJIcaPY8wNch6urq7KyshQaGqpdu3Zp//796tWrl30P0OjRo/XKK6+oS5cuWrBggZNHC+BavvjiC3Xu3FlfffWVfHx87MvLlCmjUaNGKSgoSF9++aUk254iAJBse3/mz5+vLVu26Pjx4/bl5cuXV7t27fTZZ5/p6NGjThwhcov4Af4m+4vPuXPnFB8fb9/tHRoaqp07d+qHH35wCKARI0ZozJgxqlGjhtPGDOD6GjdurIcfflgJCQlauHChkpKSJNm+2FSsWFFWq1WHDx+2LwNgnqsd9jp48GC98847OnHihD744AOdOXPGvu6uu+7Svffeq8zMzP9ymPiXmO0NyCH73IAVK1Zo5MiRunjxogoUKKDXXntN9evXV6lSpbRr1y7Vrl1bL774oiZOnKjKlStr6NChzh46gP/vahMXuLu7a9KkSZKkb7/9Vm+99ZaGDh0qi8WijIwMWSwWhz1CAMyS83PjyJEjSk5OVkhIiAICAhQVFaXExEQNHDhQCQkJatWqlQIDA/Xyyy+rcOHC9smQcHvgnB/gb7744gs99dRTGjx4sNq2bauYmBh9//33eumll9SuXTsFBATo+PHjKl26tFq2bKklS5ZwrC9wi8j5BWbBggXav3+/vLy8VKtWLUVERCgtLU19+/bV119/rVKlSql27dr69ddf9eOPP2r//v324/kBmCPnpChDhw7V559/rl9//VXVqlVTlSpV9P7770uSJk2apP79+0uSOnXqpOTkZC1YsIDp8m8zxA+Qw8mTJ9WhQwe1aNFCAwcO1NmzZxUWFiYXFxclJCRo+PDh9gA6ceKELl26xDz/wC1o4MCBmjt3rqpXr67k5GRt2bJFw4cP18iRI5WWlqYBAwbogw8+UP369dWyZUv17t1bkm2WRwIIMNP48eM1duxYzZs3Tz4+Ptq8ebM+/vhjlSxZUitXrpQkffDBB4qKitKECRP03HPPyc/Pzz45Em4PfMIDObi5uempp55S69atFR8frwcffFCNGzfWzJkz1bJlS02cOFGXLl1Sly5dVLJkSWcPF8BVfP3115ozZ46WL1+uunXrKjk5WYsWLVKPHj3k5eWlQYMG6c0331R6erp+/vlnpaSk2H/55QsMYKbk5GRt3rxZQ4YMUUREhCSpVq1auueeezRixAiNHTtWQ4YMUdeuXZWYmKj+/fsrIyND3bp1k7+/v5NHj9xg/xyQQ2BgoJo3b67AwEBNnjxZ5cuX1xtvvCFJqlChgv7880998skn/DIM3MLi4+NVvHhx1alTR5JUqFAhPffccxo3bpzGjRunH374QQUKFNBbb72lcuXK6dNPP9Wrr76qy5cvM9kBYKiCBQvq9OnT+vnnn+3LPD091apVK1WpUkW7du2yL+/Xr5/eeustDRkyRHPmzGGGyNsM8QNjZWRkSJIOHjyovXv36n//+58k2ffonD59Wt7e3vLw8JBkOyb4448/1ooVK1SkSBHnDBrAP/L399fPP/9sn5Ex+4vJAw88IDc3NyUnJ0uyTYIwdepU3X333dq0aZMuX77stDED+O9cbVa3zMxMhYeH69dff9X+/fvty11dXVW1alWdP3/evpdYkvr06aPp06erSZMm/GhymyF+YJQJEyZo/PjxkmyHuC1evFgPPfSQWrZsqSeeeEKxsbH2bb28vPTdd99pzJgx6tKli9555x3de++9CgoKctbwAeRwtS8wknTfffepTp06mjBhgg4ePGj/YhIYGKgiRYooJSVFku0HkAIFCmj27NmaN28eh64ABsg5McEPP/ygAwcO6NSpUypQoIB69OihQ4cOafTo0dqxY4esVquSkpK0Zs0alSlTRp6enrJYLPbPnh49eqhSpUrOfDu4CUx4AGMkJydr5MiRmjp1qiZOnKgXXnhBlStX1qBBg1S6dGnt2LFDw4YNU3R0tD2CnnrqKZ08eVKZmZmaOnWqqlev7uR3AUBynJ3pvffe07Fjx5SWlqYOHTqoRo0a+vTTTzVx4kT5+/ura9eu8vf3V2xsrP78809t3brV/uWHGZoAMw0ePFhz5syRi4uLLl26pCFDhmjw4ME6ePCgWrVqpUKFCiklJUW+vr5KTk7Wnj17VKBAAYfPHtyeOHEBxihUqJD69+8vb29vDRkyRMeOHdNDDz2kdu3aydPTU7Vr15a3t7f69OmjzMxMjRs3TgsWLNDFixfl6uoqLy8vZ78FALpyWtq3335bjRs31p49e7Ry5Uq1adNGI0aMkKenp+bMmaMnn3xS1atXl5+fnzZv3iwXFxf77EyED2CGnJ8bGzZs0Jw5czRnzhz5+fnp22+/1ciRIxUXF6dJkyZp7dq12rFjh3744QcVL15c3bp1k5ubG7NB3iH4NwijBAcHq3v37rJarZoyZYpKliwpT09PSbY46tixoyQpOjpaly9f1ttvvy1vb29nDhnA32R/gfnjjz+0Y8cOrVmzRnXr1pUkvfLKK1qzZo0KFSqkwYMHq0WLFjp69Kjc3d1VvHhxubi48AUGMFD258bMmTN19uxZ9ezZU40bN5Yk1alTRwEBAeratatq1qypjh07qlSpUnryySftj8/MzORz4w7BT14wTnBwsLp27aq+ffvqhx9+0JQpU+zrChUqpGeffVavv/66Fi5cqDNnzjCLC3ALmjRpkho3bqyUlBSFhobal7/yyiuqU6eO5s2bZ5/AoEyZMipRooRcXFyUlZXFFxjAUKdOndK8efM0fPhwnTx5UpKUlpYmq9Wqjh076rnnntOUKVOUlpamzMxMh8cyDf6dg/jBHS87Xk6fPq2jR48qKSlJJUuW1ODBgzV06FANHTpUU6dOtW/v5eWl7t276/DhwwoICODYXuAW9MADDyg1NVW7du3SH3/8Icl2/o67u7uGDRumgwcPav369Vc8jsPcAHMVL15c48ePV4sWLbR48WL7XuHsCQyKFy8ub29vubu7Ezt3MP4vgDta9jG+y5YtU+PGjdWoUSPVr19fAwcO1Pnz5zVw4EANGDBAQ4cO1YwZM+yP8/Lykp+fn/MGDsDuarO61a5dW0uXLpW/v79eeeUVnTp1yh42Fy9e1F133cUhqwDssn8IDQ8P1/Dhw1WlShXVq1dPBw8eVHJyslJSUrRx40ZmfTQAs73hjrd27Vo9/vjjevXVV9W1a1fFxsZq8uTJmj17ttq1a6e4uDi98847GjVqlN59911169bN2UMG8P/lnI1t165dOnPmjMqXLy8fHx8VK1ZMe/bsUbNmzVShQgU9++yzCg0N1dtvv63jx49rz549/HoL4Kp27dql/v37a9euXSpdurTq1aun7du3a9euXczqdocjfnDHslqtysrK0gsvvCAvLy9NnjxZp0+fVlhYmB599FFNmzZNku3L1fnz5/Xee+/piSeeUPny5Z08cgB/N3jwYC1YsEAZGRnKysrS//3f/2nAgAGqV6+evv/+ez3++OM6fvy4evToIUmaMmWK3Nzc7LO6ATBDdrTkjJdr/X3Xrl2KjY3V2rVrtWzZMjVs2FCSmBTlDsdhb7hjWSwWubq6Kjk5WWFhYTp79qxq1KihJk2a2M/xWbZsmdauXatixYpp0KBBhA9wC3rnnXf04Ycfas6cOTpw4IB9kpIhQ4Zox44dqlGjhlasWKFSpUrp9OnTGjNmDOEDGCgrK8seNhcvXrQfMmuxWOwTGGSHkWQ7fHbQoEEKDw9Xt27ddOLECfs2uHMRP7ijZH+gnT9/3r6sQIECmjx5surUqaPWrVtr2rRpslgsunTpkhYtWqSdO3fyJQm4hfz9HJ/t27erdevWatiwofz9/dWuXTv17dtXbm5uWrx4sSSpWrVqWr58uTZv3qyuXbvq7Nmz/DcNGCb7ENnY2Fg1adJErVq10oQJEyTZZmu7WgCFhYVpzJgxuvfee1W1alUdP36cz447HPGDO0b2ruwvvvhCjz/+uFavXi1JGj16tFJTU5WRkaGpU6fKzc1NVqtVr732mrZu3ap27drxQQfcIqxWq/0LzPr163X+/Hl5eHgoLi5OGRkZ9u0aNmyoBx54QIsWLdKlS5ckSdWrV9fXX3+tlStXqm/fvledKAHAnSfnf+vTp0/XhAkT1KpVK3l5eemjjz5S9+7dJV07gGrXrq3hw4erYcOGSk1N/e/fAP5THNCIO4bFYtHy5cvVoUMHDR8+XL6+vpKkkJAQDRs2TL169dJ9992nsmXLymq1atOmTVqzZo3KlSvn5JEDkKT09HQVKFBAkhQTE6MlS5Zo3bp1KleunD799FNt375d9erVs29fvXp1lSxZUmlpafLy8pJk2wP0/fffy93dnWmtAUNk/7e+YcMGJSUl6aOPPlKLFi2UmJiojz/+WBMmTFC3bt30/vvv2wPI1dXV4fC28PBwLViwwH7hc9y5mPAAd4zTp0+rWbNmat++vQYNGuSwLj09XSdOnNCbb76ptLQ0hYaGqn379rrnnnucNFoA2caMGaNBgwbJ3d1dkhQXF6dBgwapY8eO9iuwt2jRQnv37tV7772nSpUqydfXV08++aQKFiyozz//nGP0AcNt3rxZHTp0UEpKipYuXar69etLkhITE7Vw4UK9+eabeuihh/Tuu+86eaRwNuIHd4zDhw/r4Ycf1uLFixUeHm7fnc2XIuDW1aRJEyUlJWnDhg3y8PDQnDlz1KNHD5UtW1YLFy5U5cqV7dtGRkZq586dSk1NVfHixWWxWLRjxw6mpQWgEydO6L333tPUqVP1zDPP6K233rKvS0xM1KJFizRgwADFxMRoyJAhThwpnI3D3nDHKFCggFxdXfXrr78qPDxcFovFPvPLV199pYyMDDVv3lyS+KIE3AK2bdumH3/8UevXr5eHh4f27NljvxDx2rVr9ccff6hy5cr2a/18+umn2rBhg86cOSMXFxe1bt1arq6uTEsLGCbn9b+ylSxZUj169JCLi4vmz58vPz8/jRo1SpLk4+Ojtm3bKigoyP49AOZizw9uS1eLlz///FMtW7aUl5eX3nrrLVWsWNG+7qWXXtKRI0e0ePFi+7kBAJxr79696tSpk3r27Kndu3frl19+0fLly5WSkqLHHntM58+f14oVK3TPPfdc9cuOJGZqBAyT87Ng7dq1iouLk4+Pjx588EH5+fnp+PHj+vDDD7Vw4UK1bdvWHkA58blhNuIHt53s8Fm7dq2+/PJLWa1WdezYUTVr1tSBAwf08MMPq0aNGmrVqpXuuusuffnll5o3b542b96sKlWqOHv4AHIYPHiwPv74Y8XHx2vdunX24/TPnj2riIgIXb58WcuWLWNiEgAOP3wOGTJEn3zyiVxdXRUUFCQXFxctWbJEAQEBOn78uGbNmqXFixercePGmjRpkpNHjlsJU+HgtmOxWLRy5Uq1atVK+/fv18aNGxUWFqYlS5aocuXK2rhxo9zd3TVp0iT17dtXe/fu1caNGwkf4BaSPd1sRkaGTpw4obvvvlsHDx7UhQsXJEnFihXTqlWr5OXlpcjISP30009OHC2AW0F2+Lz55puaM2eO5s2bp0OHDikiIkKbNm3Sww8/rLi4OIWGhqpLly5q1qyZTp8+LX7nR07s+cFt5+LFi3r33Xfl4+OjqKgo/fnnn3rttdc0ZcoUzZkzR+3bt9fly5eVlpamixcvytfXV97e3s4eNgBdeaz+zp07VbBgQU2fPl2bN29WVFSUOnXqJB8fH0m2PUC1a9fWAw88oLlz5zpr2ACc5I033lDXrl1VrFgxSbaJDfr06aOnn35aTz75pFatWqW2bdvqhRde0Nq1a5WVlaU1a9YoICBAp0+fVkBAgP2aPpzrC4n4wW3mf//7n+rWrauKFSvq1VdftZ+4mJaWppdfflmTJ0/WggUL1KZNGyePFMDf5QyfNWvWKDExUR4eHmrRooUkqUePHtqyZYuioqLUuXNn+48WCQkJKly4MMfoA4bZuXOnnn/+ee3cudPhv/8vvvhCVatW1ZkzZ/TEE08oJiZGPXr00OjRozVy5EgVK1ZMP/74oz2YCB/kxPQ4uK0EBwerXbt2mjNnji5evCjJ9oXK3d1dr7/+ulxdXdWuXTu5u7urVatWTh4tgGxWq9UePjExMZo7d64CAgJ06NAhRUZGasKECZo5c6Z69Oih999/XxaLRR07dpSvr6/9gsWcpAyYw2q1qk6dOtq9e7f9cPfq1asrNDTU/sPn4sWLVadOHXXq1EmSVKpUKbVt21alS5dWkSJF7M9F+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": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "df = df[(df['artist_top_genre'] == 'afro dancehall') | (df['artist_top_genre'] == 'afropop') | (df['artist_top_genre'] == 'nigerian pop')]\n",
+ "df = df[(df['popularity'] > 0)]\n",
+ "top = df['artist_top_genre'].value_counts()\n",
+ "plt.figure(figsize=(10,7))\n",
+ "sns.barplot(x=top.index,y=top.values)\n",
+ "plt.xticks(rotation=45)\n",
+ "plt.title('Top genres',color = 'blue')"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "The data is not strongly correlated except between energy and loudness, which makes sense. Popularity has a correspondence to release data, which also makes sense, as more recent songs are probably more popular. Length and energy seem to have a correlation - perhaps shorter songs are more energetic?"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "D:\\Temp\\ipykernel_22964\\245326579.py:1: FutureWarning: The default value of numeric_only in DataFrame.corr is deprecated. In a future version, it will default to False. Select only valid columns or specify the value of numeric_only to silence this warning.\n",
+ " corrmat = df.corr()\n"
+ ]
+ },
+ {
+ "data": {
+ "image/png": "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6YMPPpAkJSYmql+/furSpYtycnKUk5OjVq1aKT8/XzExMfL19dW3336rjIwM+fj4qEuXLlTgAQAAAEBO9p7jsLAwPffcc5KkZ555RpGRkZoxY4Z1+6JFixQSEqJ9+/apbt26NvtmZ2crNTVV2dnZqlatmqTLyeSaNWuUmpqqGTNmqHr16jYJ6eOPP64vvvhCH3zwgZo3b66cnBxdunRJvXv3Vs2aNSVJERER1vGTJk3SrFmz1Lt3b0lSrVq1tGfPHr322msaMmTINa/t3Xffldls1r///W95eHioYcOG+t///qdHH33UOqZ8+fKaMmWK9XOtWrW0ceNGffDBB+rXr598fHzk6emp3NxcBQUFWce98847MpvNeuONN2QymSRJqamp8vf3V3p6ujp37nwDdx8AAACAI1nK6ERYpYVTJcfNmjWz/rxz50599dVX8vHxuWLcwYMHr0iOd+3apYKCgivW5+bmqnLlypIuty3PmDFDH3zwgX755Rfl5eUpNzdXXl5ekqTGjRurY8eOioiIUExMjDp37qz77rtPFStW1Pnz53Xw4EENGzZMI0aMsB7/0qVLqlChwnWvbe/evWrUqJE8PDys61q2bHnFuJdfflmLFi1Sdna2/vjjD+Xl5alJkybXPPbOnTt14MAB+fr62qy/ePGiDh48eNX9cnNzlZuba7POJTdX7u7u170eAAAAAHAmTpUce3t7W38+d+6cevTooWefffaKccHBwVesO3funFxdXbVt2za5urrabPszwX7++ec1d+5czZkzRxEREfL29taYMWOsrceurq5at26dvvvuO61du1bz58/XhAkTtGnTJmsCvXDhQrVo0cLm+H8/381aunSpEhMTNWvWLLVs2VK+vr56/vnntWnTpmvud+7cOTVr1kxLliy5YltAQMBV90tJSbGpVEvS00+MUvKTo2/uAgAAAACglHKq5PivmjZtqo8//lihoaEqV+76lxEZGamCggIdO3ZMbdu2LXRMRkaG7r33Xj3wwAOSLj/ju2/fPjVo0MA6xmQyqXXr1mrdurWSk5NVs2ZNffLJJ0pISFC1atV06NAhDRo0qMjXEx4errffflsXL160Vo//85//XBFfq1at9Nhjj1nX/b3y6+bmpoKCApt1TZs21fvvv6+qVavKz8/vhmNKSkpSQkKCzTqX33+54f0BAAAAFKMyOhFW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ly7q06ePfvjhB73//vvasGGD4uPjJUlbt27VqFGjNHXqVGVmZmrNmjW66667JEk5OTkaMGCAHnzwQe3du1fp6enq3bs3bd8AAACAE7CYS89SFjlVW3WfPn1sPi9atEgBAQHas2ePvvvuOx0/flxbtmxRpUqVJEl16tSxjn3hhRcUFxenxx57TJKUkJCg//znP3rhhRd0991339D5s7OzFRkZqaioKElSaGiodVtAQIAkqXLlygoKCip0/99//11z587VSy+9pCFDhkiSbrvtNrVp08ZmXGJiou655x5J0pQpU9SwYUMdOHBA9evXV0pKigYNGqQxY8ZIksLCwjRv3jy1a9dOr776qrKzs+Xt7a3u3bvL19dXNWvWVGRkpKTLyfGlS5fUu3dv1axZU5IUERFxQ9cOAAAAAGWZU1WO9+/frwEDBqh27dry8/OzJqfZ2dnasWOHIiMjrYnx3+3du1etW7e2Wde6dWvt3bv3hs//6KOPaunSpWrSpImefPJJfffdd0WKf+/evcrNzVXHjh2vOa5Ro0bWn4ODgyVJx44dkyTt3LlTixcvlo+Pj3WJiYmR2WzW4cOH1alTJ9WsWVO1a9fW4MGDtWTJEl24cEGS1LhxY3Xs2FERERHq27evFi5cqN9+++2qceTm5urs2bM2S56loEjXDAAAAADOwKmS4x49eujUqVNauHChNm3aZH2eOC8vT56enrd0bBeXy7firy3G+fn5NmO6du2qn3/+WWPHjtWvv/6qjh07KjEx8YbPcaMxli9f3vqzyWSSJGt7+Llz5/Twww9rx44d1mXnzp3av3+/brvtNvn6+mr79u167733FBwcrOTkZDVu3FinT5+Wq6ur1q1bp88//1wNGjTQ/PnzVa9ePR0+fLjQOFJSUlShQgWbZcn5n274egEAAAAUI3MpWsogp0mOT548qczMTD399NPq2LGjwsPDbaqejRo10o4dO3Tq1KlC9w8PD1dGRobNuoyMDDVo0EDS/7VF5+TkWLf/dXKuPwUEBGjIkCF65513NGfOHL3++uuSJDc3N0lSQcHVK6thYWHy9PRUWlraDVxx4Zo2bao9e/aoTp06Vyx/xlCuXDlFR0frueee0w8//KCsrCx9+eWXki4n261bt9aUKVP0/fffy83NTZ988kmh50pKStKZM2dslkHe9W86dgAAAAAorZzmmeOK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YjmWI6Wnp8tkMun06dOODgUAAAAAcJOK1FZdqVIle8VRqLy8PLm5uZXoOQEAAACgNOI9x/Z1023VoaGhmjFjhh588EH5+vqqRo0aev31161j8/LyFB8fr+DgYHl4eKhmzZpKSUmx7itJvXr1kslksn6ePHmymjRpojfeeEO1atWSh4eHdfycOXNsYmnSpIkmT55s/WwymfTaa6+pe/fu8vLyUnh4uDZu3KgDBw6offv28vb2VqtWrXTw4EGb43z66adq2rSpPDw8VLt2bU2ZMkWXLl2yOe4bb7yhXr16ycvLS2FhYVqxYoWky63Rd999tySpYsWKMplMiouLkyStWbNGbdq0kb+/vypXrqzu3btfce6/+rMCnZaWpqioKHl5ealVq1bKzMy84XgtFosmT56sGjVqyN3dXdWqVdOoUaOs+77yyisKCwuTh4eHAgMDdd999101HgAAAAAwkluarXrWrFmKiorS999/r8cee0yPPvqoNZmbN2+eVqxYoQ8++ECZmZlasmSJNQnesmWLJCk1NVU5OTnWz5J04MABffzxx1q2bFmRn8edNm2aYmNjtWPHDtWvX18DBw7Uww8/rKSkJG3dulUWi0Xx8fHW8d9++61iY2M1evRo7dmzR6+99poWL16s6dOn2xx3ypQp6tevn3744Qd169ZNgwYN0qlTpxQSEqKPP/5YkpSZmamcnBzNnTtXknT+/HklJCRo69atSktLk4uLi3r16iWz2XzNa5gwYYJmzZqlrVu3qly5cnrwwQdvON6PP/5YL774ol577TXt379fy5cvV0REhCRp69atGjVqlKZOnarMzEytWbNGd911V5HuLwAAAACUVbc0W3W3bt302GOPSZKeeuopvfjii/rqq69Ur149ZWdnKywsTG3atJHJZFLNmjWt+wUEBEiS/P39FRQUZHPMvLw8vfXWW9YxRTF06FD169fPGk/Lli01ceJExcTESJJGjx6toUOHWsdPmTJF48eP15AhQyRJtWvX1rRp0/Tkk09q0qRJ1nFxcXEaMGCAJGnGjBmaN2+eNm/erC5dulhbzatWrSp/f3/rPn369LGJbdGiRQoICNCePXt0++23X/Uapk+frnbt2kmSxo8fr3vuuUcXL16Uh4fHdePNzs5WUFCQoqOjVb58edWoUUPNmzeXJGVnZ8vb21vdu3eXr6+vatasqcjI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5OXlpVatWikzM9PmuJ9++qmaNm0qDw8P1a5dW1OmTNGlS5ckSRaLRZMnT1aNGjXk7u6uatWqadSoUdZ9X3nlFYWFhcnDw0OBgYG677777HFrAAAAAMDpUDkuBoMGDVLfvn117tw5+fj4SJK++OILXbhwQb169ZIkpaSk6J133tGCBQsUFhamb775Rg888IACAgLUrl0767EmTJigWbNmKSAgQI888ogefPBBZWRkSJK+/fZbxcbGat68eWrbtq0OHjyohx56SJI0adIkffzxx3rxxRe1dOlSNWzYUEeOHNHOnTslSVu3btWoUaP09ttvq1WrVjp16pS+/fbbkrxNAAAAAG6Bhfcc2xXJcTGIiYmRt7e3PvnkEw0ePFiS9O677+qf//ynfH19lZubqxkzZmj9+vVq2bKlJKl27drasGGDXnvtNZvkePr06dbP48eP1z333KOLFy/Kw8NDU6ZM0fjx4zVkyBDrMaZNm6Ynn3xSkyZNUnZ2toKCghQdHa3y5curRo0aat68uSQpOztb3t7e6t69u3x9fVWzZk1FRkZe87pyc3OVm5trs+6SpUDlTK7Fc+MAAAAAoJSgrboYlCtXTv369dOSJUskSefPn9enn36qQYMGSZIOHDigCxcuqFOnTvLx8bEub731lg4ePGhzrEaNGll/Dg4OliQdO3ZMkrRz505NnTrV5hgjRoxQTk6OLly4oL59++qPP/5Q7dq1NWLECH3yySfWlutOnTqpZs2aql27tgYPHqwlS5bowoUL17yulJQUVahQwWbJOPNj8dw0AAAAAEViLkVLWUTluJgMGjRI7dq107Fjx7Ru3Tp5enqqS5cukqRz585JklatWqXq1avb7Ofu7m7zuXz58tafTabLfRNms9l6nClTpqh3795XnN/Dw0MhISHKzMzU+vXrtW7dOj322GN6/vnn9fXXX8vX11fbt29Xenq61q5dq+TkZE2ePFlbtmyRv79/odeUlJSkhIQEm3UzIx4qwl0BAAAAAOdAclxMWrVqpZCQEL3//vv6/PPP1bdvX2ui26BBA7m7uys7O9umhbqomjZtqszMTNWpU+eqYzw9PdWjRw/16NFDI0eOVP369bVr1y41bdpU5cqVU3R0tKKjozVp0iT5+/vryy+/LDTZli4n7n9P3mmpBgAAAFAWkRwXo4EDB2rBggXat2+fvvrqK+t6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Q1WhQgXdf//9+v3332847t9++02DBg1SQECAPD09FRYWptTUVElSXl6e4uPjFRwcLA8PD9WsWVMpKSm39ocAAAAAAGWA0ybHOTk5GjBggB588EHt3btX6enp6t27tyyWy/3vaWlp1vXvvfeeli1bpilTplj3T0lJ0VtvvaUFCxboxx9/1NixY/XAAw/o66+/liSdPn1aHTp0UGRkpLZu3ao1a9bo6NGj6tevn/UYSUlJmjlzpiZOnKg9e/bo3XffVWBgoE2cEyZMUGJionbs2KG6detqwIABunTp0lWv6+DBg1q+fLlWrlyplStX6uuvv9bMmTNvOO4/Y/n888+1d+9evfrqq6pSpYokad68eVqxYoU++OADZWZmasmSJQoNDb21PwgAAAAAKCanTp3SoEGD5OfnJ39/fw0bNkznzp275vjHH39c9erVk6enp2rUqKFRo0bpzJkzRT6307ZV5+Tk6NKlS+rdu7dq1qwpSYqIiLBud3Nz06JFi+Tl5aWGDRtq6tSpeuKJJzRt2jTl5+drxowZWr9+vVq2bClJql27tjZs2KDXXntN7dq100svvaTIyEjNmDHDesxFixYpJCRE+/btU3BwsObOnauXXnpJQ4YMkSTddtttatOmjU2ciYmJuueeeyRJU6ZMUcOGDXXgwAHVr1+/0Osym81avHixfH19JUmDBw9WWlqapk+frtzc3OvGnZ2drcjISEVFRUmSTfKbnZ2tsLAwtWnTRiaTyXrfAAAAAJR+fxYCy7JBgwYpJydH69atU35+voYOHaqHHnpI7777bqHjf/31V/3666964YUX1KBBA/3888965JFH9Ouvv17RGXw9TpscN27cWB07dlRERIRiYmLUuXNn3XfffapYsaJ1u5eXl3V8y5Ytde7cOf33v//VuXPndOHCBXXq1MnmmHl5eYqMjJQk7dy5U1999ZV8fHyuOPfBgwd1+vRp5ebmqmPHjteMs1GjRtafg4ODJUnHjh27anIcGhpqTYz/3OfYsWOSpAMHDlw37kcffVR9+vTR9u3b1blzZ/Xs2VOtWrWSJMXFxalTp06qV6+eunTpou7du6tz585XjT03N1e5ubk26y5ZClTO5HrNawYAAACAotq7d6/WrFmjLVu2WIt98+fPV7du3fTCCy+oWrVqV+xz++236+OPP7Z+vu222zR9+nQ98MADunTp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",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "corrmat = df.corr()\n",
+ "f, ax = plt.subplots(figsize=(12, 9))\n",
+ "sns.heatmap(corrmat, vmax=.8, square=True);"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Are the genres significantly different in the perception of their danceability, based on their popularity? Examine our top three genres data distribution for popularity and danceability along a given x and y axis "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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j/Lwww8zduxYAG699VbefPNNLrnkEg499FA2bdrEI488QmlpKU8++WS8bk9paSmVlZVcd9112Gw2HnzwQRYuXMi777474OHAUCjEr371K3w+H3/4wx+wWCw88cQTlJaWkpqaGt/v8ccf57777mPhwoXccsstlJaW8tBDD9HU1MTf//73+H4bNmygtbWVq666CovFwgMPPMCVV17J8uXLsdlsQCz4+/e//80dd9xBZ2cnxcXF/O9//+OGG27g1FNP5ZprrqGhoYH77ruP8vJynn766RFdq0gk0w+eCI4EQRD2klAohNfr5U9/+hMnnXQSAIcddhgej4fFixfT3t4OQCQS4S9/+QsZGRnx5+p0OpKSkjjkkEP6PfbKlSv53e9+xzHHHBM/rt1uR6fTYbFYGDVqFACjRo2K396VpKQk8vLyABg3bhw5OTmUl5fz6quvcv3113PppZcCMHfuXNLS0rjppptYvnw5Rx55JABut5vHHnuMQw89FIDJkydzzDHH8Mwzz3DDDTcMqA1vvfUWlZWVvPbaa0ycOBGAWbNmxd9nz+v885//5JxzzuFPf/oTAPPmzcNut/OnP/2JCy+8kNGjR8f3Xbp0afx9mUwmFi5cyLfffsvxxx8fP+Zll13G/PnzgVhwcc8993D44Ydzzz33xPcpKCjgggsu4PPPP4/vKxyYxLCaIAjCXqLT6Xjqqac46aSTaGlp4dtvv+Wll17i008/BWLBE2xbpX13zJw5k4ceeoirrrqKV155hfb2dn7/+98zbdq0IX0PK1euBOizjuXJJ5+MWq1mxYoV8W05OTnxwAggLS2NqVOn8t133w349b799ltyc3PjgRGAxWLhqKOOit9fs2YNgUCAo48+mkgkEr/0DLt99dVX8X23D/iA+Ofs9/t7ve64cePitysrK2lubu5z/BkzZmCxWHodf2QSPUeDJXqOBEEQ9qIvvviCv//971RWVmI2mykpKYmvrdUz/GE2m3f7uPfddx+PPfYY7733Hh988AEqlYo5c+bwl7/8hezs7CFrf1dXF0CvIS0AjUZDYmIibrc7vi09Pb3P85OTk9m4ceOAX6+zs7PfhX6339Yzi6+nJ+vHela9h20LvfboGQ778Sy+7dfQ6zn+okWLWLRo0U6PLxyYRHAkCIKwl9TW1saHvh5//HFyc3ORJInnn3+eL774YlDHTkhI4MYbb+TGG2+ksrKSZcuW8c9//pNFixbxxBNPDNE7IJ6X09bW1ivoCofDdHZ2kpiYGN/W2dnZ5/nt7e39Bjs7kp6eTnV1dZ/tHR0d8dtWqxWAe+65h4KCgj77pqSkDPj1+tNz/J4Fzn+s5zMZsUTH0aCJYTVBEIS9ZMOGDQSDQS699FLy8vLivRY9gdHOEmdVqh3/e25oaODII4/k/fffB6CoqIhLLrmEOXPm0NjYCLDHq73/+HV7goOe5PEe77zzDtFolOnTp8e3VVdXU1FREb/f0tLCmjVrmD179oBf/7DDDqO+vj4+mw9iM/62DyanTJmCVqulpaWFSZMmxS8ajYZ77713wIUyd6SoqIjk5GTq6+t7HT89PZ0lS5awadOmQR1fGPlEz5EgCMJeMmHCBDQaDXfffTcXXXQRoVCIpUuX8tlnnwHsdFq41Wpl06ZNrFy5ksmTJ/d6LDs7m4yMDP72t7/h8XjIy8tjw4YNfP755/zmN78BYj1LAJ999hk2m42SkpIBtbmn1+Sjjz7iiCOOYNSoUZxxxhk8+OCD+P1+ZsyYQWlpKQ8//DAzZ87k8MMPjz9XURQuu+wyrr32WtRqNQ8//DA2m23ApQQATjnlFJ544gl+97vfcfXVV2O1Wnn66afp6OggKysLgMTERC6++GIeeOABPB4PM2fOpKWlhQceeABJkgb8XndErVZz7bXXcuutt6JWqznqqKNwuVz885//pKWlhQkTJgzq+HudsnuFP4W+RHAkCIKwl+Tn57NkyRIefvhhLr/8cmw2G4cccgjPPvss55133k6X9rjooov4+9//zq9//WuefvrpPo8//PDD3HvvvTzwwAN0dnaSmZnJFVdcEc/DGT16NKecckp8CO/tt98eUJtnzpzJnDlzWLJkCd988w1PPPEEd9xxB/n5+bz22mv861//Ii0tjfPPP5/f/va3vXqasrKy4u32+/3MmTOHRx99FLvdPuDPTKPR8NRTT3HHHXdw++23o9Fo+MlPfoLdbqeqqiq+3zXXXENqaiovvPACTz75JDabjdmzZ3PdddfFA8PBOOusszCbzTz55JO8/PLLmEwmpk2bxj333ENubu6gjy+MbJJykBdEWLBgAQDLli0b5pYIgjCSBAIBqqqqKCwsxGAwDHdzRrybb76ZlStX8sknnwzqOFu3bqWyspLjjjuuVy2hn/3sZ2RkZPDwww8PtqnDbm/9bi1YsICIs4X/PXEP1uknDNlxD0ai50gQBOEgEIlEdrmPSqXaaa7TYESj0V0WJ5QkCZ/Px9VXX825557LscceSzQa5d1332XDhg0DrpV0sDvI+zyGhAiOBEEQDnD19fXxXvKdueKKK7jyyiv3ShsuuOCCeM2kHcnOzuaTTz7h/vvv56mnnuKNN95AURTGjx/Pk08+yaxZs/ZK2w44IjgaNBEcCYIgHODS0tJ49dVXB7Tfnlq8ePFOH1+0aBFer3en++h0OgBOOOEETjhBDAvtOREcDZYIjgRBEA5wOp2OSZMmDWsbioqKhvX1Dyqi52jQRJ0jQRAEQTiAKGIq/6CJ4EgQBEEQDiSi52jQRHAkCIIgCAcSERwNmgiOBEEQBOFAIobVBk0ER4IgCIJwABF1jgZPBEeCIAgHuUWLFjF16lSmT59Oe3v7cDdHGCwRHA2amMovCIJwENu8eTMvvPACixYtYt68eaSkpAx3k4TBEsNqgyZ6jgRBEA5iLpcLgLlz55KTkzPMrRGGhOg4GjTRcyQIgrAbFEUhGIoO2+vrdepeC7IORFlZGUuWLGH16tX4/X7S09P55S9/id1u55ZbbgHgmGOO4YwzzuCMM87gwgsv5JprruGpp54iOzubV199lZaWFpYsWcI333yD1+tl+vTp3HjjjZSUlACxhWdDoRB2u5033ngDvV7PaaedxnXXXRevfN3U1DToYwg7JyOJOkdDQARHgiAIA6QoCr9/+EtKqx3D1oZxBUncdcW8AQdIfr+fiy66iLlz5/LSSy+hVqt55ZVXuOuuu3jppZd46KGHuPLKK3nllVcoLCxk06ZNRKNRPv/8c15++WX8fj8+n49f/OIX5Obm8uijj6LT6XjooYdYuHAhb775JtnZ2QB8+OGHzJ8/n5deeom6ujr++Mc/4vf7WbRoER6PZ9DHEHatU7ZQ2SmRNNwN2c+JYTVBEIQDmN/v5/zzz+fWW2+luLiYgoICrrrqKgBqamqw2WwAJCUlkZCQEH/eRRddREFBAePGjeOtt96is7OTBx54gMmTJ1NSUsKSJUswGAw8//zz8edYrVbuvvtuxowZw4IFC7j66qt57bXX8Hg8Q3IMYWAaXcPdgv2f6DkSBEEYIEmSuOuKefvVsFpSUhLnnnsub7/9Nps2baK2tpbNmzcDIMs7Hn4pKCiI3y4rK6OgoICkpG39EQaDgcmTJ1NWVhbfNnnyZIxGY/z+1KlTCYfDVFVVDckxhnt9uP2FLJKOBk0ER4IgCLtBkiQM+v3nX2dbWxvnnHMOSUlJHH300cybN49JkyZx5JFH7vR5er0+fntHdXNkWUaj2fZZaLXaPo8DqNXqITmGMDA7iXmFARLDaoIgCAewt99+G6fTyYsvvshvf/tbjj32WLq6uoCBFwscO3Ys1dXVdHR0xLcFg0E2bNjAqFGj4ts2btxINLqtV23NmjUYjUYKCwuH5BjCwIgikIMngiNBEIQDWEZGBn6/n/fff5/Gxka+/PJLrrvuOgBCodCAjnHqqadit9u55pprWLduHZs3b+aGG27A5/NxzjnnxPdraGhg0aJFVFRU8OGHH/Lggw+ycOFCjEbjkBxDGBhZFsHRYO0/fcOCIAjCbjvhhBPYuHEjixcvxuPxkJ2dzVlnncWyZctYv349RUVFuzxGQkICzz33HIsXL+aCCy4AYPr06bz44ovk5ubG9zvkkENQqVT87Gc/IyEhgfPPP5/LL798yI4hDIwixtUGTVIO8v63BQsWALBs2bJhbokgCCNJIBCgqqqKwsJCDAbDcDdnxLv55ptpaGjg2WefHdZj7A/21u/WggULaHH4+NNll/Pz35w/ZMc9GIlhNUEQBEE4gIieo8ETwZEgCIIgHEBkUSF70ETOkSAIgjBoixcvHhHHEETP0VAQPUeCIAiCcAARs9UGTwRHgiAIgnAAET1HgyeCI0EQBEE4gERFz9GgieBIEARBEA4gEdFxNGgiOBIEQRCEA0gwEhnuJuz3RHAkCIIgCAcQfzi6652EnRLBkSAIgiAcQKKyNNxN2O+J4EgQBOEg99BDD3H00Ufv9dcZO3YsS5cu3euvc7CLiOBo0EQRSEEQhIPcRRddxC9/+cu9/jpffvklCQkJe/11DnYRRQRHgyWCI0EQhN2gKApKODhsry9p9UjS0J78zGYzZrN5SI/Zn9TU1L3+GoIYVhsKIjgSBEEYIEVRaHzmjwTrtwxbG/Q5JWSd/7fdCpDGjh3LHXfcwdtvv83q1auxWq38/Oc/54orrgBiw2qvv/46n3zyCQC1tbX89a9/ZdWqVVgsFi666CJeeOEFLr/8cs4880wAXnvtNZ588kkaGhrIzs7m5z//Oeeddx4qlYr6+noWLFjAddddxzPPPIPBYODNN99k+vTp3HnnnZx55pmEQiHuu+8+PvjgA1pbWzGZTMyePZvbbruNpKSk+DEefPBBnnzySUpLS0lLS+M3v/kN55xzTr/vc+nSpdx///1cccUVPPjgg3i9XubMmcOtt95Keno6AIFAgMcee4z//e9/tLa2UlRUxG9/+1uOP/74AR9jpAvJImNmsMQnKAiCsFv2z2/ld911F2eccQbvvPMOCxcu5KGHHuK7777rs5/f7+eCCy5AlmVefPFF7rvvPpYuXUpdXV18n5dffpl//OMfXHHFFbzzzjtcc801/Otf/+Kee+7pdazXX3+d//znP9x///1YLJZej/3jH//gww8/ZPHixXzwwQcsXryYb7/9lkcffbTXfnfeeSeXXXYZ7733HvPnz+f222/v1ZYfczgc8df8z3/+Q1NTExdffDGR7unt1113HW+88QZ//vOfeeuttzjmmGO4+uqr+fjjjwd8jJEuIIt+j8ESn6AgCMIASZJE1vl/2y+H1U4//XROO+00AC677DKeeuopVq9ezYwZM3rt9+677+JwOFi6dCl2ux2Au+++O/5cgH/+859cfvnlnHzyyQDk5ubi8XhYtGgRV199dXy/c889l1GjRvXbnkmTJnHCCSdw6KGHApCdnc2cOXMoKyvrtd8FF1zAggULALj22mt5/vnnWbt2Lbm5uf0eNxwOc9dddzFx4sR420866SS++eYbsrKyWLZsGY899hjz588H4Morr2Tz5s089thjHHPMMbs8xuGHH76TT3lkCMja4W7Cfk8ER4IgCLtBkiQknWG4m7HbiouLe91PSEggHA732W/Tpk0UFhbGAyOAkpKSeCK1w+GgubmZe++9lwceeCC+jyzLBINB6uvr0ev1AOTn5++wPaeddhpff/0199xzD9XV1VRWVlJVVRUPlvprd08b+mt3D7PZHA9qep5vs9koKyvD7XYDMH369F7PmTFjBvfee++AjrE/BEd+RYcSjSCpxSl+T4lPThAE4SCg0+n6bFOUvmtwqdVq5J0sXNrz2C233MKcOXP6PJ6ZmUlraysABsOOg8hbb72VDz74gNNPP52jjz6a3/3udzz11FO0tLTsUbt7aLV9e02i0ShqtXqHz1EUBY1m2+lwT44xkvhlLUokJIKjQRA5R4IgCEJcSUkJNTU1OJ3O+LaKiop4r0tycjJJSUnU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xo7fs2vH6zNHAAAAjQnhCAAAwA3hCAAAwA3hCAAAwA3hCAAAwI1Xz3PUGBQWFqqqqoprrAEAGo3IyEitXbvW22U0W80+HPn7+9d5vbaGkpeXJ+m/l1JpjhgDxkBiDGowDozB1WK8rp1mf54jb+O8FIyBxBhIjEENxoExgPex5wgAAMAN4QgAAMAN4QgAAMAN4QgAAMAN4QgAAMAN4QgAAMANh/IDAAC4YeYIAADADeEIAADADeEIAADADeEIAADADeEIAADADeHIS/Ly8jRx4kTdeuutSkpK0pgxY3TkyBGPPh9//LEGDRqkhIQE3XPPPdq1a5eXqq0f1dXVWrhwoVJTU9WtWzc9+uijOnXqlLfLqlfFxcV6/vnnddtttykxMVHDhw9Xdna26/5du3Zp2LBh6tq1q+68807985//9GK19e/48ePq3r27NmzY4Go7dOiQRowYoW7duql///56++23vVhh/dq4caMGDRqk+Ph4DR48WB9//LHrvtOnT2vs2LFKTExUnz599Oqrr6qqqsqL1V57ly5d0oIFC3T77bere/fueuCBB/Ttt9+67m9O3wU0MgYNrrKy0gwZMsSMGDHCHDhwwOTk5Jjx48eblJQUc/bsWWOMMbt27TJxcXHmrbfeMrm5uWbWrFnm5ptvNrm5uV6u/tpZtGiR6dWrl/nss8/MoUOHzOjRo01aWpqprKz0dmn1ZtSoUWbIkCFm79695tixY2bmzJkmISHBHD161OTm5pr4+Hgzb948k5uba9544w3TpUsX8/XXX3u77HrhdDrNsGHDTHR0tPnggw+MMcacO3fO9OrVy0ydOtXk5uaa999/38THx5v333/fy9Veexs3bjRdunQxa9euNSdPnjRLly41sbGxZv/+/cbpdJq0tDTz2GOPme+//958+umnJjk52SxYsMDbZV9TCxcuNLfeeqv58ssvzYkTJ8xzzz1nevToYQoKCprVdwGND+HIC7766isTHR1t8vPzXW0VFRWma9eu5r333jPGGDN69Gjz5z//2eNx999/v5k+fXpDllpvKisrTffu3c3f//53V1tJSYlJSEgwmzZt8mJl9efEiRMmOjraZGdnu9qqq6vNwIEDzauvvmqmT59u0tPTPR4zceJEM3r06IYutUHMnTvXPPjggx7haNmyZaZPnz7m4sWLHv3S0tK8VWa9qK6uNrff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OC0bgIZAOAJwTcXExGjRokWWn2fDhg2KiYnR6dOnJUlHjhzR8OHDLT8vAPwSwhGARqlfv35av369wsPDJUlbt27VN9984+WqADQHLb1dAADUJSwsTGFhYd4uA0AzxMwR0MT1799f8+fP14svvqikpCT16tVLkydPVnFxsavPV199pT/96U/q0aOHevXqpUmTJikvL891f80S1nfffaehQ4cqISFBd911l7Zu3erqk5WVpZiYGGVlZXm8/siRIzVy5Mgr1nf48GE9+eST6t27t+Li4pSamqq//e1vqqiocPWJiYnR4sWLNWzYMCUkJGjx4sUey2qLFi3S4sWLXX0XLVqkjIwM3XbbbaqurvZ4veeee0533HHHVY0lAEiEI8AW1q1bp/379+ull17SpEmT9MUXX2js2LEyxmjjxo0aPXq0IiMjNW/ePE2dOlXffPON7r//fp09e9bjecaOHasBAwZo8eLF6tSpkyZMmKAvvvjiqusqLCzUAw88oPLycs2aNUuvv/66Bg8erDVr1ujtt9/26Lts2TLdddddWrhwYa1wc9999yk9PV2StH79etftgoICj7BWUVGhrVu3aujQoVddMwCwrAbYgI+Pj1avXq1WrVpJurwkNW7cOO3cuVNz5sxRnz59NHfuXFf/xMREDRo0SCtXrtTkyZNd7SNHjtS4ceMkSampqRo6dKiWLFmivn37XlVdOTk56ty5sxYsWKCQkBBJ0i233KKvvvpKWVlZeuyxx1x9e/bsqVGjRrlu//vf/3b9PSIiQhEREZKkbt26SZLCw8MVERGhjRs3KiUlRZL06aefqqysTPfcc89V1QsAEjNHgC3079/fFYxqbrds2VLvvvuufvzxRw0ZMsSjf8eOHdW9e3ft2bPHo919xsXhcOgPf/iDDhw44LEE9mv06dNHa9eulb+/v3Jzc7Vjxw699tprOnfunJxOp0ffzp07/6rn9vHx0dChQ7Vt2zaVl5dLkj788EPdcsstriAFAFeDcATYQIcOHTxu+/j46LrrrlNZWZkkqV27drUe065dO50/f96jrebIsBpt27aVMUalpaVXVVd1dbXmzJmj5ORkDR48WJmZmTp06JD8/f1r9Q0KCvrVz3/vvfeqvLxc27ZtU0FBgXbt2qVhw4ZdVa0AUINlNcAGioqKPG5XVVWpqKjINZt05syZWo/58ccfdd1113m0FRcXewSpM2fOqEWLFmrTpo0cDock1doAfeHCBQUHB9dZ14oVK/Tmm29q5syZSktLc9VTs3/IqhtuuEHJycn6+OOPVVxcrJCQEA0cOPCaPDeA5ouZI8AGdu7c6bFMtWPHDl26dEnDhw9X+/bttXnzZo/+p06d0rfffqvExESP9u3bt7v+bozRtm3b1KNHD/n5+bn2DOXn57v6lJSU6OjRo1esa9++fbrpppt07733uoJRQUGBcnJyaoWsX+LjU/f/rtLT0/X1119r8+bNGjRoUJ2zUgDwazBzBNhAXl6eHn/8cT344IPKy8vTvHnzlJqaqpSUFE2cOFFTp07VpEmTdPfdd6uoqEiLFy9W69atPTZAS9Irr7yiyspKderUSe+9956OHj2qt956S9LlQ+gjIyO1ZMkShYSEyOFwaPny5QoMDLxiXQkJCVq6dKlWrFihbt266eTJk1q+fLmcTqdrn9D/r9DQUEnS5s2b1bVrV91www2SpDvuuEOZmZk6cOCApk+f/queEwDqQjgCbGDw4MEKDQ3VhAkTFBQUpKFDh+qpp56SJA0bNkzBwcFavny5xo0bp5CQEKWmpmrixIlq3769x/PMmDFDy5cv16lTp9SlSxetWrVKPXv2lCS1aNFCCxcu1IsvvqiJEyeqXbt2euihh3Ts2DEdP368zrrGjh2roqIivf3221qyZIkiIyP1xz/+0RWsSktLXaHnl6Slpemjjz7Ss88+q/T0dM2YMUOS5O/vr969e+vYsWNKSEi4yhEEgP9yGK7kCDRp/fv3V3JysmbNmnXVz7FhwwZNnTpVO3bsUFRU1DWsrv5VVFSob9++euKJJ/TQQw95uxwANsDMEYAm6YcfftCHH36or7/+Wg6HQ/fee6+3SwJgE4QjAE2Sj4+P1qxZo+DgYM2fP9+1YRwArGJZDQAAwA2H8gMAALghHAEAALghHAEAALghHAEAALghHAEAALghHAEAALghHAEAALghHAEAALj5fzzc+jIGbxmpAAAAAElFTkSuQmCC",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "sns.set_theme(style=\"ticks\")\n",
+ "\n",
+ "# Show the joint distribution using kernel density estimation\n",
+ "g = sns.jointplot(\n",
+ " data=df,\n",
+ " x=\"popularity\", y=\"danceability\", hue=\"artist_top_genre\",\n",
+ " kind=\"kde\",\n",
+ ")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "In general, the three genres align in terms of their popularity and danceability. A scatterplot of the same axes shows a similar pattern of convergence. Try a scatterplot to check the distribution of data per genre"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {},
+ "outputs": [
+ {
+ "ename": "TypeError",
+ "evalue": "__init__() got an unexpected keyword argument 'size'",
+ "output_type": "error",
+ "traceback": [
+ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
+ "\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)",
+ "Cell \u001b[1;32mIn[13], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m sns\u001b[39m.\u001b[39;49mFacetGrid(df, hue\u001b[39m=\u001b[39;49m\u001b[39m\"\u001b[39;49m\u001b[39martist_top_genre\u001b[39;49m\u001b[39m\"\u001b[39;49m, size\u001b[39m=\u001b[39;49m\u001b[39m5\u001b[39;49m) \\\n\u001b[0;32m 2\u001b[0m \u001b[39m.\u001b[39mmap(plt\u001b[39m.\u001b[39mscatter, \u001b[39m\"\u001b[39m\u001b[39mpopularity\u001b[39m\u001b[39m\"\u001b[39m, \u001b[39m\"\u001b[39m\u001b[39mdanceability\u001b[39m\u001b[39m\"\u001b[39m) \\\n\u001b[0;32m 3\u001b[0m \u001b[39m.\u001b[39madd_legend()\n",
+ "\u001b[1;31mTypeError\u001b[0m: __init__() got an unexpected keyword argument 'size'"
+ ]
+ }
+ ],
+ "source": [
+ "sns.FacetGrid(df, hue=\"artist_top_genre\", size=5) \\\n",
+ " .map(plt.scatter, \"popularity\", \"danceability\") \\\n",
+ " .add_legend()"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3.8.6 64-bit",
+ "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.6"
+ },
+ "metadata": {
+ "interpreter": {
+ "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d"
+ }
+ },
+ "orig_nbformat": 2,
+ "vscode": {
+ "interpreter": {
+ "hash": "e7e062254315b6c9f92abc9bc2bdcaf487fbb633b3956fd7c9b16e81ab674fff"
+ }
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/open-machine-learning-jupyter-book/assets/data/nigerian-songs.csv b/open-machine-learning-jupyter-book/assets/data/nigerian-songs.csv
new file mode 100644
index 0000000000..65343f9629
--- /dev/null
+++ b/open-machine-learning-jupyter-book/assets/data/nigerian-songs.csv
@@ -0,0 +1,531 @@
+name,album,artist,artist_top_genre,release_date,length,popularity,danceability,acousticness,energy,instrumentalness,liveness,loudness,speechiness,tempo,time_signature
+Sparky,Mandy & The Jungle,Cruel Santino,alternative r&b,2019,144000,48,0.666,0.851,0.42,0.534,0.11,-6.699,0.0829,133.015,5
+shuga rush,EVERYTHING YOU HEARD IS TRUE,Odunsi (The Engine),afropop,2020,89488,30,0.71,0.0822,0.683,0.000169,0.101,-5.64,0.36,129.993,3
+LITT!,LITT!,AYLร,indie r&b,2018,207758,40,0.836,0.272,0.564,0.000537,0.11,-7.127,0.0424,130.005,4
+Confident / Feeling Cool,Enjoy Your Life,Lady Donli,nigerian pop,2019,175135,14,0.894,0.798,0.611,0.000187,0.0964,-4.961,0.113,111.087,4
+wanted you,rare.,Odunsi (The Engine),afropop,2018,152049,25,0.702,0.116,0.833,0.91,0.348,-6.044,0.0447,105.115,4
+Kasala,Pioneers,DRB Lasgidi,nigerian pop,2020,184800,26,0.803,0.127,0.525,6.69e-06,0.129,-10.034,0.197,100.103,4
+Pull Up,Everything Pretty,prettyboydo,nigerian pop,2018,202648,29,0.818,0.452,0.587,0.00449,0.59,-9.84,0.199,95.842,4
+take a break,rare.,Odunsi (The Engine),afropop,2018,141933,27,0.808,0.608,0.3,4.8e-05,0.0863,-11.213,0.0453,119.964,4
+Cash,Enjoy Your Life,Lady Donli,nigerian pop,2019,187714,36,0.846,0.214,0.669,0.467,0.0857,-7.822,0.0441,115.008,4
+SATISFIED,GEMINI,Tay Iwar,alternative r&b,2019,123082,30,0.555,0.912,0.295,0.275,0.0967,-11.038,0.036,77.033,4
+Morocco,Mandy & The Jungle,Cruel Santino,alternative r&b,2019,186696,33,0.735,0.872,0.596,0.866,0.16,-7.379,0.0865,89.966,4
+luv in a mosh,EVERYTHING YOU HEARD IS TRUE,Odunsi (The Engine),afropop,2020,97071,35,0.66,0.609,0.745,0.00301,0.342,-4.125,0.0421,177.991,4
+Raw Dinner,Mandy & The Jungle,Cruel Santino,alternative r&b,2019,143569,46,0.603,0.714,0.433,0.0407,0.105,-5.935,0.338,63.545,5
+Waka,Wildfire,prettyboydo,nigerian pop,2020,172708,23,0.583,0.296,0.563,0.00023,0.214,-6.801,0.143,96.568,4
+Summer Time (feat. Tay Iwar),Suzie's Funeral,Cruel Santino,alternative r&b,2016,226146,19,0.663,0.871,0.462,3.33e-06,0.125,-6.769,0.0278,139.946,4
+Bite the Dust,Enjoy Your Life,Lady Donli,nigerian pop,2019,142857,14,0.69,0.469,0.516,0.000236,0.0865,-8.45,0.131,104.991,4
+City on Lights!,dnt'dlt,AYLร,indie r&b,2019,200937,15,0.535,0.488,0.696,4.33e-06,0.167,-7.65,0.264,159.48,4
+PDA!,EVERYTHING YOU HEARD IS TRUE,Odunsi (The Engine),afropop,2020,148666,29,0.624,0.56,0.646,0.0,0.233,-5.179,0.0793,179.874,4
+End Of The Wicked (feat. Octavian),End Of The Wicked (feat. Octavian),Cruel Santino,alternative r&b,2020,186341,49,0.748,0.608,0.819,0.0615,0.109,-5.41,0.0789,150.01,4
+Catching a Wav,Passionfruit Summers,Amaarae,afro r&b,2017,195000,34,0.655,0.793,0.333,0.00139,0.101,-12.849,0.051,80.033,4
+hectic,rare.,Odunsi (The Engine),afropop,2018,201082,34,0.713,0.171,0.669,0.00349,0.0724,-6.997,0.0921,90.988,4
+Whoa!,Insert Project Name,AYLร,indie r&b,2017,205395,24,0.64,0.954,0.352,0.0731,0.106,-8.418,0.0526,108.356,4
+FLAVA,Enjoy Your Life,Lady Donli,nigerian pop,2019,166153,17,0.663,0.871,0.446,6.06e-05,0.146,-7.182,0.192,156.119,4
+Altรฉ Cruise,rare.,Odunsi (The Engine),afropop,2018,192309,36,0.89,0.563,0.536,0.000859,0.622,-4.794,0.123,95.02,4
+Classic,Classic,Lady Donli,nigerian pop,2018,216296,45,0.721,0.313,0.782,0.0,0.0791,-9.297,0.071,161.971,4
+I listen to you...,dnt'dlt,AYLร,indie r&b,2019,227500,17,0.828,0.273,0.529,5.73e-06,0.101,-12.471,0.143,119.976,4
+angel,rare.,Odunsi (The Engine),afropop,2018,151304,36,0.76,0.229,0.111,0.00119,0.129,-19.362,0.044,92.014,4
+Around,Enjoy Your Life,Lady Donli,nigerian pop,2019,111107,12,0.847,0.424,0.653,0.0,0.27,-5.617,0.0412,142.517,3
+SPACE,GEMINI,Tay Iwar,alternative r&b,2019,193249,27,0.853,0.249,0.372,0.00116,0.0517,-10.347,0.0596,116.989,4
+Altรฉ,Altรฉ,DRB Lasgidi,nigerian pop,2019,182909,18,0.774,0.021,0.73,2.46e-05,0.0749,-4.424,0.0315,105.077,4
+Beginning,Beginning,Joeboy,afropop,2019,158052,55,0.878,0.149,0.668,0.000116,0.1,-7.076,0.107,109.955,4
+Aye,Aye,DaVido,afropop,2014,235053,0,0.729,0.628,0.868,0.0,0.057,-4.72,0.0474,115.0,4
+Baby,Baby,Joeboy,afropop,2019,165448,13,0.785,0.142,0.806,0.000285,0.147,-5.34,0.0558,105.001,4
+Assurance,Assurance,DaVido,afropop,2018,249320,48,0.665,0.275,0.799,2.99e-06,0.0756,-3.244,0.115,206.007,4
+Yori Yori,Least Expected,Bracket,afro dancehall,2009,218426,43,0.685,0.523,0.783,0.0,0.112,-1.606,0.169,102.62,4
+Nobody,Nobody,DJ Neptune,afro dancehall,2020,145860,63,0.707,0.251,0.866,2.5e-06,0.263,-3.612,0.0354,108.053,4
+Perfect Gentleman,The Journey,Sean Tizzle,afro dancehall,2014,254824,16,0.693,0.369,0.936,3.83e-05,0.123,-4.091,0.0635,125.945,4
+Case,Case,Teni,afro dancehall,2018,202448,54,0.81,0.358,0.638,0.0,0.211,-4.778,0.0398,102.003,4
+Adiepena,Adiepena,KiDi,afro dancehall,2018,195728,36,0.741,0.307,0.762,0.0,0.318,-6.089,0.0346,102.965,4
+Nobody Fine Pass You,Nobody Fine Pass You,T-Classic,nigerian pop,2019,215170,0,0.765,0.628,0.687,2.28e-06,0.0736,-5.98,0.125,114.056,4
+Duduke,Duduke,Simi,afropop,2020,172000,60,0.781,0.552,0.656,5.18e-05,0.131,-4.105,0.106,96.083,4
+Mad over You,Mad over You,Runtown,afro dancehall,2016,215906,53,0.842,0.458,0.543,0.000135,0.102,-4.778,0.0483,107.048,4
+Odo Remix (feat. Mayorkun & Davido),Odo Remix (feat. Mayorkun & Davido),KiDi,afro dancehall,2017,233592,41,0.722,0.0642,0.608,0.0111,0.0514,-4.684,0.0304,103.04,4
+On Top Your Matter,On Top Your Matter,WizKid,afro dancehall,2014,284814,26,0.706,0.0536,0.966,0.0,0.0566,-1.266,0.0564,124.003,4
+Happy Day,Happy Day,Patoranking,afro dancehall,2014,260146,5,0.716,0.232,0.952,0.000105,0.0868,-2.717,0.111,102.948,4
+No One Like You,Best Of P-Square,P-Square,afro dancehall,2014,268120,1,0.826,0.549,0.877,0.0,0.0924,-3.028,0.172,101.993,4
+If,If,DaVido,afropop,2017,237714,57,0.951,0.397,0.661,0.0,0.0686,-2.678,0.0612,104.997,4
+Walk With Me,Walk With Me,Stormrex,Missing,2015,261973,0,0.488,0.586,0.666,0.0,0.397,-7.577,0.151,111.33,4
+Amen,Boo of the Booless,chike,nigerian pop,2020,220203,30,0.48,0.494,0.709,0.0,0.127,-5.963,0.104,90.826,4
+Yanga,Yanga,Chidinma,afropop,2018,182033,22,0.885,0.289,0.717,0.0,0.048,-5.36,0.169,118.0,4
+Thunder,Thunder,KiDi,afro dancehall,2018,197537,24,0.748,0.515,0.628,0.0,0.0586,-8.81,0.0322,102.983,4
+All I Want Is You,All I Want Is You,Banky W.,afro dancehall,2015,220343,22,0.47,0.127,0.91,0.000862,0.117,-4.508,0.0554,114.024,4
+Pino Pino,Pino Pino,Phyno,afro dancehall,2016,287137,1,0.65,0.633,0.937,0.0,0.13,-1.421,0.151,101.973,4
+Pana,Pana,Tekno,afropop,2017,244867,2,0.67,0.316,0.544,0.0308,0.0746,-7.388,0.325,199.871,4
+Mama,Mama,Mayorkun,afro dancehall,2017,198504,0,0.855,0.392,0.592,0.0,0.105,-3.685,0.071,104.035,4
+Majesty,Heartwork,Peruzzi,afropop,2018,211826,0,0.796,0.281,0.766,2.63e-06,0.137,-5.041,0.0643,110.073,4
+4DAYZ,4DAYZ,Kiss Daniel,afro dancehall,2018,160000,0,0.761,0.24,0.883,0.000496,0.0534,-3.591,0.0952,123.993,4
+FIA,FIA,DaVido,afropop,2017,214205,50,0.819,0.344,0.751,1.27e-05,0.425,-3.175,0.0459,107.063,4
+Kind Love,Ayo,WizKid,afro dancehall,2014,231947,26,0.627,0.0269,0.913,1.44e-06,0.0654,-2.402,0.0376,119.004,4
+Romantic (feat. Tiwa Savage),Romantic (feat. Tiwa Savage),Korede Bello,afro dancehall,2016,225933,49,0.764,0.0886,0.593,0.000296,0.0621,-4.026,0.0456,103.993,4
+Prayer,Prayer,DMW,afropop,2017,216111,0,0.728,0.14,0.823,0.000167,0.318,-6.015,0.0405,119.931,4
+Girl (feat. Wizkid),Cupid Stories,Bracket,afro dancehall,2011,294960,31,0.791,0.208,0.872,0.0,0.099,-5.94,0.176,120.017,4
+Poko,No Bad Songz,Kizz Daniel,afro dancehall,2018,169930,47,0.854,0.0718,0.816,0.0,0.0428,-5.225,0.11,106.017,4
+Panana,Panana,L.A.X,afro dancehall,2018,161593,22,0.75,0.776,0.744,3.3e-05,0.231,-2.799,0.0311,104.036,4
+Mi Na Bo Po,E.L.O.M.,E.L,azonto,2015,206266,0,0.478,0.0285,0.678,0.0,0.306,-5.648,0.242,61.695,4
+All Over,All Over,Tiwa Savage,afro dancehall,2017,211291,51,0.831,0.217,0.844,0.0,0.115,-4.589,0.0585,112.048,4
+For Life,For Life,Runtown,afro dancehall,2017,229633,0,0.72,0.0965,0.67,3.32e-05,0.0615,-4.895,0.216,205.67,4
+Fall,Fall,DaVido,afropop,2017,240000,61,0.928,0.379,0.675,0.0,0.0533,-3.535,0.0566,105.952,4
+Say,Rasaking,L.A.X,afro dancehall,2018,177658,13,0.774,0.515,0.605,0.0,0.0887,-6.447,0.0924,99.941,4
+Woju (Remix),Woju (Remix),Kiss Daniel,afro dancehall,2015,204210,0,0.791,0.302,0.906,2.66e-06,0.0356,-2.705,0.0478,113.955,4
+Duro (Remix),Duro (Remix),Tekno,afropop,2015,212000,1,0.607,0.313,0.87,3.73e-06,0.09,-3.298,0.0812,119.981,4
+Aje,Aje,DMW,afropop,2018,234788,0,0.771,0.416,0.79,0.0,0.0493,-3.807,0.0708,119.946,4
+Easy (Jeje),Easy (Jeje),Reekado Banks,afro dancehall,2017,200413,41,0.767,0.0704,0.839,4.8e-06,0.0604,-5.268,0.0803,126.99,4
+Applaudise,Applaudise,Iyanya,afro dancehall,2015,211693,0,0.668,0.288,0.93,0.000102,0.239,-3.274,0.0393,112.039,4
+Feeling (feat. Reekado Banks),Feeling (feat. Reekado Banks),Bisa Kdei,afro dancehall,2017,208195,15,0.704,0.354,0.705,1.85e-06,0.109,-6.434,0.0902,102.79,4
+"My Woman, My Everything (feat. Wandecoal)","My Woman, My Everything (feat. Wandecoal) - Single",Patoranking,afro dancehall,2015,233717,54,0.902,0.0438,0.845,0.0,0.0867,-2.695,0.0644,112.005,4
+Collabo,Double Trouble,P-Square,afro dancehall,2014,223500,52,0.58,0.353,0.903,6.98e-06,0.0957,-4.564,0.0773,194.828,3
+Give You Love,Give You Love,Juls,afro dancehall,2016,234605,36,0.799,0.0633,0.533,0.0,0.126,-6.412,0.0569,99.982,4
+Ohemaa,Ohemaa,Kuami Eugene,afropop,2019,245736,33,0.576,0.271,0.8,0.0,0.118,-4.479,0.0477,104.02,4
+Mon Bรฉbรฉ (feat. Flavour),Three,Patoranking,afro dancehall,2020,205450,34,0.631,0.6,0.386,0.0,0.112,-10.135,0.0622,96.651,4
+Tear Rubber,Greatness,DJ Neptune,afro dancehall,2018,221517,0,0.846,0.0501,0.664,6.16e-06,0.136,-3.184,0.0445,104.0,4
+Kololo,Kololo,Banky W.,afro dancehall,2017,232543,21,0.768,0.259,0.701,0.000385,0.121,-3.728,0.0543,121.026,4
+One and Only,One and Only,Korede Bello,afro dancehall,2016,170141,19,0.718,0.129,0.813,0.0,0.38,-4.102,0.112,125.965,4
+Laye,Laye,Kiss Daniel,afro dancehall,2015,229276,0,0.716,0.313,0.869,0.0,0.102,-3.923,0.107,120.018,4
+Dada Omo,Dada Omo,Sugarboy,nigerian pop,2017,213524,0,0.733,0.0662,0.92,0.0,0.107,-3.753,0.167,118.021,4
+Only Girl,Only Girl,Adekunle Gold,afro dancehall,2017,210050,0,0.83,0.327,0.667,0.0,0.141,-5.408,0.0743,105.947,4
+Obianuju,Naija Party Vibes Vol. 2,Various Artists,afro dancehall,2011,220543,0,0.696,0.172,0.733,0.0,0.315,-3.807,0.113,109.019,4
+Finally,Finally,Master Kraft,Missing,2015,222537,26,0.875,0.175,0.896,0.0,0.0589,-2.287,0.0438,111.631,4
+Ogadigide,Double Trouble,P-Square,afro dancehall,2014,252521,20,0.703,0.268,0.875,0.0,0.343,-6.088,0.081,172.469,3
+Ada Ada,Blessed,Flavour,afro dancehall,2012,233900,0,0.635,0.623,0.961,0.000138,0.111,-3.751,0.111,167.166,3
+Ololufe,Mushin2Mohits,Wande Coal,afro dancehall,2009,298800,0,0.397,0.51,0.532,0.0,0.102,-9.11,0.0693,96.811,4
+My Darling (feat. Don Jazzy),Mix of Love,Various Artists,afro dancehall,2015,249652,0,0.782,0.173,0.836,3.01e-06,0.12,-4.005,0.0494,124.995,4
+Yes/No,R & BW,Banky W.,afro dancehall,2013,247432,46,0.534,0.23,0.627,1.35e-05,0.127,-5.526,0.0745,128.796,5
+I Love U,Best Of P-Square,P-Square,afro dancehall,2014,281026,1,0.596,0.293,0.85,0.0,0.338,-2.129,0.145,97.724,4
+Tere (feat. Diamond Platnumz),No Bad Songz,Kizz Daniel,afro dancehall,2018,228121,28,0.833,0.0115,0.887,3.02e-05,0.0545,-2.839,0.171,119.97,4
+Return,Son of Mercy - EP,DaVido,afropop,2016,185360,24,0.67,0.158,0.738,0.0,0.101,-3.379,0.158,106.59,4
+Iwotago (feat. Phyno),Da Smash Hitz,Various Artists,soft rock,2015,201614,0,0.465,0.351,0.866,0.0,0.649,-4.978,0.342,173.857,3
+Ire,Ire,Boj,afro dancehall,2016,178256,8,0.683,0.149,0.882,0.0942,0.112,-4.982,0.0419,113.948,4
+Kedike,Naija Hits 2012-2013,This Is Africa,afropop,2013,233430,0,0.797,0.304,0.854,0.000587,0.172,-5.503,0.0415,117.995,4
+Strong Ting,The W Experience,Banky W.,afro dancehall,2009,301720,26,0.581,0.00755,0.844,0.00307,0.136,-2.557,0.0971,129.925,4
+Promise,Promise,Adekunle Gold,afro dancehall,2019,178000,34,0.813,0.413,0.604,0.00172,0.109,-8.667,0.0555,120.083,4
+Oyi (Remix),Best Of Flavour,Flavour,afro dancehall,2015,200013,0,0.428,0.592,0.677,1.19e-06,0.215,-11.731,0.343,112.516,5
+Always (feat. Davido),Man of the Year,Skales,afro dancehall,2015,240893,16,0.73,0.0859,0.943,0.0,0.162,-2.846,0.2,120.045,4
+Oruka,Legends,Various Artists,Missing,2015,300225,0,0.672,0.126,0.845,0.0,0.0426,-3.669,0.0531,94.999,4
+Angela,Angela,Kuami Eugene,afropop,2017,187297,42,0.653,0.0235,0.651,2.98e-05,0.221,-3.165,0.0723,200.075,4
+Obimo,Obimo,Kayswitch,Missing,2016,232896,14,0.7,0.00437,0.879,1.61e-05,0.111,-5.687,0.0594,126.03,4
+Where,Where,Tekno,afropop,2016,219080,7,0.887,0.0729,0.908,0.000192,0.0483,-3.346,0.0637,115.023,4
+Mansa,Mansa,Bisa Kdei,afro dancehall,2015,246987,0,0.665,0.16,0.875,0.0,0.0402,-4.712,0.0527,124.94,4
+Pakurumo,Superstar,WizKid,afro dancehall,2011,212005,41,0.879,0.525,0.737,0.00576,0.268,-5.412,0.0421,119.99,4
+Marry,Marry,DJ Neptune,afro dancehall,2016,209841,37,0.891,0.169,0.649,0.0289,0.058,-6.476,0.068,111.989,4
+Forever,Talk About It,M.I. Abaga,afropop,2009,257866,6,0.492,0.113,0.672,0.0,0.053,-4.588,0.191,122.024,4
+Ifunanya,Best Of P-Square,P-Square,afro dancehall,2014,266520,0,0.828,0.706,0.768,0.0,0.0433,-3.667,0.0424,110.001,4
+Ariva,Ariva,Flavour,afro dancehall,2019,218723,0,0.748,0.0861,0.641,1.34e-05,0.0751,-2.014,0.043,90.103,4
+I Gentle,I Gentle,Naeto C,afro dancehall,2012,245040,11,0.764,0.528,0.95,7.97e-06,0.142,-6.319,0.0551,119.972,4
+Fine Lady,"Afrobeats the Hits, Vol. 1",Various Artists,afro dancehall,2012,221720,0,0.75,0.0123,0.912,0.0,0.0402,-5.828,0.117,123.983,4
+Komole,The Journey,Sean Tizzle,afro dancehall,2015,251733,0,0.628,0.682,0.942,4.53e-06,0.0863,-3.84,0.144,127.991,4
+Dodo,Dodo,DaVido,afropop,2015,198191,0,0.759,0.0743,0.815,0.000237,0.167,-3.679,0.0418,113.965,4
+Today Today,Undeniable,Eldee,afro dancehall,2012,227451,18,0.715,0.00762,0.873,0.000473,0.26,-7.532,0.0338,120.009,4
+Duro,The Journey,Sean Tizzle,afro dancehall,2014,275330,3,0.633,0.0439,0.94,0.0,0.0699,-3.563,0.0547,119.946,4
+Criteria,Criteria,Olamide,afro dancehall,2018,220421,18,0.811,0.608,0.846,0.0,0.06,-4.84,0.0921,110.015,4
+Forever,Forever,Eazzy,hiplife,2016,216266,0,0.764,0.324,0.669,0.000181,0.107,-2.787,0.0339,98.979,4
+O Wa N'bฤ,Simisola,Simi,afropop,2017,210000,32,0.756,0.554,0.766,1.85e-05,0.132,-6.005,0.0686,106.003,4
+Ojoro,Ojoro,DJ Neptune,afro dancehall,2019,226000,1,0.772,0.17,0.841,1.73e-06,0.0715,-6.751,0.106,120.0,4
+Lovinjitis,Testimoney,Wizboyy,afro dancehall,2013,262706,37,0.772,0.493,0.871,5.66e-05,0.121,-3.673,0.242,88.778,4
+Made for You,Made for You,Banky W.,afro dancehall,2016,252030,38,0.433,0.134,0.811,0.0,0.0379,-3.6,0.246,70.638,3
+Ololufe,Best Of Flavour,Flavour,afro dancehall,2015,198213,0,0.457,0.657,0.616,2.61e-06,0.0918,-4.717,0.0373,168.523,4
+BE,BE,Tekno,afropop,2017,225645,43,0.861,0.273,0.679,2.12e-06,0.131,-5.566,0.0675,100.074,4
+Chinelo,Chinelo,Bracket,afro dancehall,2018,203493,21,0.856,0.0215,0.695,0.0,0.0776,-3.56,0.0982,105.056,4
+Chop My Money Remix,Best Of P-Square,P-Square,afro dancehall,2014,272125,2,0.815,0.156,0.797,3.66e-06,0.131,-5.875,0.0839,127.028,4
+Woman,Woman,Tekno,afropop,2019,255267,0,0.708,0.365,0.637,0.0,0.141,-5.12,0.197,124.124,5
+Facebook Love (feat. Jaywon),Essential,Essence,erotica,2010,294386,7,0.631,0.244,0.864,0.0,0.0976,-2.971,0.125,100.051,4
+Ashawo,U Know My P,Naeto C,afro dancehall,2008,262826,14,0.761,0.00957,0.807,0.0,0.35,-1.674,0.059,120.039,4
+Ki Ni Big Deal,U Know My P,Naeto C,afro dancehall,2008,268973,17,0.695,0.013,0.938,0.0,0.218,-1.489,0.113,109.954,4
+This Year (Odun Yi),A Jungle Christmas 2014,The Jungle Collective,afro dancehall,2014,230505,0,0.638,0.633,0.51,0.0,0.0885,-10.331,0.149,85.848,4
+Lefenuso,Aproko City,Lord Of Ajasa,nigerian hip hop,2016,234267,6,0.805,0.626,0.929,0.0,0.0781,-1.614,0.324,108.017,4
+Lori Le,Turn It Up,X Project,Missing,2010,243017,25,0.801,0.00907,0.819,1.32e-05,0.0652,-4.66,0.107,140.009,4
+Gongo Aso,Gongo Aso,9ice,afro dancehall,2008,224306,39,0.824,0.245,0.965,9.84e-05,0.0983,-2.742,0.0409,110.03,4
+Street Credibility,Gongo Aso,9ice,afro dancehall,2008,288413,34,0.474,0.496,0.737,0.0,0.12,-3.781,0.352,87.635,4
+Who Born The Maja,Mushin2Mohits,Wande Coal,afro dancehall,2009,187000,0,0.826,0.172,0.626,0.0,0.103,-9.68,0.135,95.426,4
+Kokoma,Kokoma,K9,Missing,2012,201599,0,0.893,0.0584,0.915,4.46e-06,0.0755,-1.863,0.12,125.049,4
+Gbamu-Gbamu,Tradition,9ice,afro dancehall,2009,241011,26,0.568,0.205,0.935,0.0,0.157,-2.266,0.23,88.516,5
+Beautiful Onyinye,The Invasion,P-Square,afro dancehall,2011,292106,37,0.709,0.687,0.793,8.11e-06,0.123,-4.725,0.057,99.96,4
+Do Me,Game Over,P-Square,afro dancehall,2008,281306,19,0.824,0.505,0.918,0.0,0.0415,-2.311,0.117,103.049,4
+Booty Call,Currliculum Vitae,Mo' Hits All Stars,afro dancehall,2009,314000,0,0.825,0.203,0.918,1.34e-06,0.144,-1.559,0.212,129.389,5
+1er Gaou - Version originale,1er Gaou (Album original),Magic System,afropop,2012,295146,0,0.835,0.14,0.86,0.0,0.0767,-6.872,0.0621,119.044,4
+My Car,My Car,Tony Tetuila,afro dancehall,2001,248426,24,0.917,0.25,0.707,0.00602,0.323,-10.512,0.0933,110.049,4
+See Me So,Nigeria Gold,Various Artists,afro dancehall,2011,278746,0,0.735,0.0823,0.482,0.0,0.0928,-6.68,0.427,195.886,4
+Fi Mi Le,a.k.a Fi Mi Le,Kas,Missing,2011,218331,22,0.917,0.0352,0.829,2.6e-05,0.241,-5.129,0.195,104.946,4
+Oleku (feat. Brymo),Oleku (feat. Brymo),Ice Prince,afro dancehall,2010,291363,38,0.544,0.344,0.73,1.36e-06,0.14,-4.299,0.144,162.112,5
+Ara,#TheSonOfaKapenta,Brymo,afro dancehall,2012,256813,33,0.668,0.435,0.908,4.41e-05,0.112,-4.988,0.111,129.982,4
+Pere,Currliculum Vitae,Mo' Hits All Stars,afro dancehall,2009,254000,0,0.842,0.0512,0.837,1.54e-06,0.172,-4.388,0.137,115.001,4
+Sound Track,Singles,May D,afro dancehall,2012,294112,0,0.635,0.458,0.582,2.22e-06,0.0928,-4.05,0.0771,118.006,4
+Imagine That,Expressions,Styl-Plus,afro dancehall,2007,299826,34,0.701,0.0501,0.885,0.0,0.0429,-1.203,0.12,124.989,4
+Olufunmi,Call My Name,Styl-Plus,afro dancehall,2012,309146,18,0.597,0.45,0.773,0.0,0.166,-5.496,0.109,113.197,4
+Call My Name,Call My Name,Styl-Plus,afro dancehall,2012,280653,16,0.664,0.381,0.607,2.48e-05,0.0651,-8.92,0.177,108.043,4
+African Queen,Nigeria Gold (YouTube),2Baba,afro dancehall,2011,261426,0,0.464,0.428,0.83,0.0,0.518,-4.139,0.419,74.612,4
+Nfana Ibaga (No Problem),Face 2 Face 10.0,2Baba,afro dancehall,2014,265440,22,0.615,0.22,0.723,0.0,0.082,-4.808,0.404,97.998,4
+kolomental,Old & New,Various Artists,afro dancehall,2010,276610,0,0.889,0.0387,0.699,5.61e-05,0.121,-4.879,0.169,105.995,4
+Nigeria Jaga Jaga,Old & New,Various Artists,Missing,2010,187820,0,0.835,0.0304,0.757,0.0,0.333,-6.175,0.294,97.33,4
+Mr. Lecturer,Mr. Lecturer,Eedris Abdulkareem,afro dancehall,2003,255426,17,0.834,0.0162,0.734,4.3e-05,0.11,-8.623,0.0535,127.024,4
+Live in Yankee,Mr. Lecturer,Eedris Abdulkareem,afro dancehall,2003,274720,9,0.619,0.277,0.644,0.0,0.1,-7.93,0.112,100.15,4
+Jaga Jaga,Jaga Jaga,Eedris Abdulkareem,afro dancehall,2004,226493,26,0.881,0.0384,0.689,0.0,0.227,-7.685,0.26,95.958,4
+Oruka,Unchained,Sunny Neji,highlife,2013,300173,0,0.677,0.138,0.842,0.0,0.0422,-3.551,0.0512,95.014,4
+Critical,The Alliance Reconstructed,Ikechukwu,afro dancehall,2011,238576,15,0.761,0.0154,0.96,0.00102,0.0566,-2.993,0.0559,105.983,4
+Mo Gbono Feli Feli,Carnival Street Bangers,Various Artists,afro dancehall,2013,258000,25,0.772,0.0753,0.859,0.00598,0.0718,-6.396,0.0896,105.962,4
+Pop Something Ft. D'banj,"African Football Anthems, Vol. 1",Various Artists,afro dancehall,2013,298813,0,0.661,0.00176,0.942,0.189,0.214,-4.694,0.0611,140.026,4
+Tongolo,Sangolo,Various Artists,afro dancehall,1998,251715,0,0.82,0.261,0.662,0.0,0.369,-9.514,0.0771,102.074,4
+Yahoozee,Trilogy,Olu Maintain,afro dancehall,2008,256391,0,0.802,0.234,0.641,0.0,0.148,-8.204,0.281,112.985,4
+Over The Moon Ft. K-Switch,51Lex Presents Something About You,Dr SID,afro dancehall,2011,235920,16,0.876,0.297,0.709,1.25e-05,0.0617,-7.842,0.0357,124.957,4
+Tony Montana - Remix,Tony Montana Remix,Naeto C,afro dancehall,2012,243774,24,0.726,0.0896,0.974,0.0,0.0946,-4.55,0.318,125.044,4
+Undisputed,Mi2 the Movie,M.I. Abaga,afropop,2011,164702,14,0.823,0.248,0.701,1.29e-05,0.2,-4.891,0.0509,114.978,4
+Implication,The Unstoppable (International Edition),2Baba,afro dancehall,2010,207813,0,0.764,0.332,0.842,1.44e-06,0.241,-6.872,0.0454,129.968,4
+Bomper to Bomper,Nigeria Club,Various Artists,Missing,2012,226200,6,0.731,0.0278,0.701,0.0,0.577,-10.326,0.105,119.991,4
+Oleku (feat. Brymo),Everbody Loves Ice Prince,Ice Prince,afro dancehall,2011,290413,0,0.542,0.39,0.751,0.0,0.256,-4.397,0.143,161.754,5
+Ten over Ten,Super C Season,Naeto C,afro dancehall,2011,218640,29,0.666,0.019,0.978,0.000466,0.378,-3.117,0.129,117.984,4
+Aboki,Aboki,Ice Prince,afro dancehall,2012,220760,30,0.776,0.17,0.843,0.0,0.0589,-2.992,0.057,122.01,4
+You Bad,Best Of Wande Coal,Wande Coal,afro dancehall,2016,243040,4,0.733,0.404,0.806,0.0,0.128,-4.45,0.0818,120.023,4
+Limpopo,Takeover,KCee,afro dancehall,2013,253933,23,0.691,0.432,0.966,0.0151,0.223,-2.677,0.133,125.037,4
+Caro (feat. Lax),Ayo,WizKid,afro dancehall,2014,246832,45,0.698,0.0214,0.944,4.68e-05,0.485,-2.48,0.0628,122.183,4
+Dami Duro,Best Of Davido,DaVido,afropop,2020,250250,8,0.659,0.188,0.995,0.0,0.216,-0.735,0.194,124.983,4
+Like to Party,Best of Burna Boy,Burna Boy,afro dancehall,2017,246400,0,0.452,0.136,0.718,0.0,0.121,-6.972,0.341,109.454,3
+First of All,YBNL,Olamide,afro dancehall,2016,186666,0,0.923,0.066,0.702,3.09e-05,0.0999,-6.031,0.246,124.98,4
+Stupid Love,YBNL,Olamide,afro dancehall,2016,227093,0,0.825,0.335,0.944,0.0,0.0313,-3.656,0.237,131.017,4
+Ten Ten,Best Of Wande Coal,Wande Coal,afro dancehall,2016,229146,1,0.665,0.0472,0.869,0.0,0.0775,-3.1,0.138,108.95,4
+Pop Something ft D'Banj,Turning Point,Dr SID,afro dancehall,2010,296813,24,0.661,0.00176,0.942,0.189,0.214,-4.694,0.0611,140.026,4
+Halleluyah,Olu Maintain,Olu Maintain,afro dancehall,2017,265055,7,0.678,0.622,0.575,0.0,0.359,-8.591,0.189,82.998,4
+Catch Cold,Olu Maintain,Olu Maintain,afro dancehall,2017,391001,9,0.764,0.665,0.646,2.22e-06,0.314,-10.312,0.514,106.444,4
+You Know It ft. Eldee,You Know It - Single ft. Eldee,Goldie,Missing,2010,230360,4,0.784,0.25,0.849,5.79e-06,0.256,-7.913,0.0621,119.994,4
+Kako bi Chicken,B.O.R.S,Reminisce,afropop,2012,224640,0,0.819,0.148,0.943,0.0,0.0893,-2.073,0.244,125.049,4
+If Love Is A Crime,Grass 2 Grace,2Baba,afro dancehall,2006,269733,34,0.505,0.496,0.7,0.0,0.111,-5.175,0.104,171.84,4
+African Queen,Face 2 Face - Remix,2Baba,afro dancehall,2004,260986,39,0.48,0.483,0.853,0.0,0.606,-2.081,0.381,79.362,4
+Possibilities Ft. 2face,Danger,P-Square,afro dancehall,2009,307373,31,0.698,0.561,0.646,0.0,0.0996,-7.524,0.36,91.784,4
+Bizzy Body,Get Squared,P-Square,afro dancehall,2009,289080,31,0.931,0.3,0.559,0.0,0.0398,-7.434,0.0787,100.062,4
+No Lele,Superstar,WizKid,afro dancehall,2011,218174,35,0.559,0.54,0.835,0.0,0.243,-4.256,0.185,136.29,5
+Ekuro,Omo Baba Olowo: The Genesis,DaVido,afropop,2016,207281,22,0.724,0.0142,0.823,0.0,0.0572,-5.617,0.113,122.916,4
+Pere,51Lex Presents Stop The Violence,Mo' Hits All Stars,afro dancehall,2011,254000,28,0.842,0.0512,0.837,1.54e-06,0.172,-4.388,0.137,115.001,4
+Bastard,Bastard,The Three Wisemen,Missing,2012,230714,18,0.901,0.145,0.668,0.00107,0.144,-8.597,0.263,105.011,4
+Pepper Dem Gang,The Glory,Olamide,afro dancehall,2016,219586,0,0.599,0.532,0.839,0.0,0.811,-3.441,0.374,117.643,4
+Yawa,Yawa,Mayorkun,afro dancehall,2016,204826,0,0.622,0.453,0.789,0.0,0.0987,-3.951,0.0787,123.282,4
+Daddy Yo,Daddy Yo,WizKid,afro dancehall,2016,161559,43,0.822,0.258,0.83,1.38e-05,0.137,-3.84,0.0718,98.94,4
+Diana,Diana,Tekno,afropop,2016,258626,10,0.854,0.217,0.825,4.61e-05,0.0515,-2.802,0.0629,102.989,4
+Gbagbe Oshi,Son of Mercy - EP,DaVido,afropop,2016,206640,13,0.527,0.0348,0.845,9.11e-06,0.0444,-4.125,0.141,102.96,4
+Do Like That,Do Like That,Korede Bello,afro dancehall,2016,214386,0,0.837,0.329,0.379,0.0,0.0786,-10.202,0.43,114.057,4
+Awon Da (Rasaki),Awon Da (Rasaki),L.A.X,afro dancehall,2016,209659,12,0.768,0.622,0.87,0.00166,0.0814,-4.236,0.0527,116.987,3
+Ah Skiibii (Remix) [feat. Olamide],Ah Skiibii (Remix) [feat. Olamide],Skiibii,afropop,2016,211748,4,0.762,0.103,0.97,0.0,0.0341,-0.807,0.111,132.982,4
+Bank Alert,Bank Alert,P-Square,afro dancehall,2016,253840,46,0.824,0.0767,0.915,0.0,0.045,-2.989,0.0894,129.989,4
+Omo Wobe Anthem,Omo Wobe Anthem,Olamide,afro dancehall,2016,187297,0,0.833,0.0206,0.66,0.0,0.14,-7.993,0.191,107.967,4
+Shele Gan Gan,Shele Gan Gan,Lil Kesh,afro dancehall,2016,220493,0,0.866,0.463,0.778,6.16e-05,0.0918,-4.417,0.143,105.061,4
+Cinderella,Chemistry,Falz,afro dancehall,2016,175830,20,0.717,0.238,0.77,0.0,0.0889,-3.98,0.276,114.826,4
+Foreign,Chemistry,Falz,afro dancehall,2016,182073,27,0.886,0.305,0.887,0.0,0.0945,-4.237,0.298,110.819,4
+Ariwo Ko,Gold,Adekunle Gold,afro dancehall,2016,184000,0,0.857,0.589,0.806,0.000101,0.0899,-4.735,0.214,89.929,4
+G.O.E,God Over Everything,Patoranking,afro dancehall,2016,232027,0,0.547,0.0814,0.699,0.0,0.122,-4.59,0.0426,88.239,4
+Jigi Jigi,Jigi Jigi,Niniola,afro dancehall,2016,222641,13,0.729,0.0553,0.932,0.000459,0.123,-2.001,0.178,123.922,4
+Love You Tire,Love You Tire,Mayorkun,afro dancehall,2016,182047,0,0.859,0.336,0.69,7.1e-06,0.0864,-4.12,0.0614,108.994,4
+Sons of Anarchy,The Glory,Olamide,afro dancehall,2016,140983,0,0.458,0.669,0.848,0.0,0.0952,-2.964,0.364,204.999,4
+Ireti,Ireti,Moelogo,afro dancehall,2016,251379,31,0.709,0.164,0.696,5.33e-06,0.28,-6.393,0.0412,116.005,4
+My City,Ireti,Moelogo,afro dancehall,2016,186009,18,0.597,0.152,0.615,0.0,0.161,-4.451,0.0415,89.911,4
+Love Don't Lie,Love Don't Lie,Johnny Drille,nigerian pop,2015,246543,0,0.529,0.175,0.799,0.0,0.0888,-5.038,0.0436,116.013,4
+Wait for Me,Wait for Me,Johnny Drille,nigerian pop,2015,287555,28,0.255,0.158,0.694,0.0,0.338,-5.495,0.0476,69.279,4
+Afro Lover,Afro Lover,Jilex Anderson,Missing,2016,223920,0,0.8,0.117,0.591,0.0035,0.112,-7.028,0.0719,92.013,4
+Link Up,Link Up,Ycee,afro dancehall,2016,251212,29,0.886,0.38,0.596,0.0,0.173,-6.749,0.168,106.99,4
+Ladies and Gentlemen,SPOTLIGHT,Reekado Banks,afro dancehall,2016,177941,25,0.797,0.0855,0.875,0.0,0.055,-6.523,0.0797,123.01,4
+Slide In,Slide In,Jilex,Missing,2015,258847,0,0.493,0.011,0.52,0.0,0.103,-8.039,0.203,77.13,4
+Tonight,Tonight,Nonso Amadi,afropop,2016,237374,48,0.768,0.76,0.498,2.04e-05,0.138,-6.159,0.0424,98.102,4
+Bokiniyen,Bokiniyen,Koker,afropop,2017,230680,0,0.769,0.162,0.835,0.0,0.109,-3.297,0.0883,117.995,4
+Hello,Jos To The World,Ice Prince,afro dancehall,2016,367998,0,0.497,0.611,0.683,0.00958,0.164,-7.107,0.138,121.322,5
+4 Me,4 Me,Maleek Berry,afropop,2017,197307,0,0.878,0.00852,0.605,0.0272,0.0637,-5.98,0.124,103.995,4
+LEG OVER,LEG OVER,Mr Eazi,afro dancehall,2016,197972,0,0.601,0.58,0.681,0.0,0.0934,-5.171,0.324,98.078,4
+Ballerz,Ballerz,Wande Coal,afro dancehall,2016,191150,29,0.857,0.322,0.736,7.39e-06,0.0672,-5.58,0.0441,112.986,4
+Like This,Like This,DJ Henry X,Missing,2016,161516,0,0.462,0.0234,0.755,0.0,0.572,-5.511,0.137,200.087,4
+Who You Epp,Who You Epp (feat. Wande Coal & Phyno),Olamide,afro dancehall,2016,231386,0,0.812,0.613,0.851,0.0,0.104,-3.393,0.127,110.995,4
+Legalize,Legalize,Sugarboy,nigerian pop,2016,192052,0,0.69,0.356,0.806,0.000812,0.104,-3.326,0.0531,99.984,4
+Get Up (Feat. Dj Tunez and Flash),Achikolo,Various Artists,afro dancehall,2016,200385,0,0.833,0.0187,0.722,0.0,0.0756,-6.613,0.113,117.998,4
+Oje (feat. Wizkid),Oje (feat. Wizkid),Legendury Beatz,afropop,2014,195613,15,0.661,0.00929,0.919,0.000118,0.198,-3.412,0.0475,124.043,4
+Bubble Bup,Bubble Bup,Cynthia Morgan,Missing,2016,227785,1,0.699,0.221,0.609,0.0,0.112,-5.689,0.238,98.316,4
+Wine to the Top,Wine to the Top,WizKid,afro dancehall,2017,219429,0,0.813,0.452,0.868,7.45e-06,0.0708,-2.941,0.2,104.951,4
+Radio,Radio,Nonso Amadi,afropop,2016,190000,1,0.836,0.824,0.472,0.00428,0.112,-8.004,0.0464,96.065,4
+Adore Her,The Collectiv3 Lp,Various Artists,Missing,2015,255873,19,0.625,0.211,0.527,1.53e-05,0.095,-7.565,0.159,115.016,4
+Rora Se (Tread Softly),Rora Se (Tread Softly),Moelogo,afro dancehall,2016,193469,13,0.72,0.102,0.678,0.0,0.107,-5.159,0.0523,98.016,4
+Pain Killer (feat. RunTown),Pain Killer (feat. RunTown),Sarkodie,afro dancehall,2017,219271,36,0.853,0.522,0.775,0.00348,0.0684,-4.111,0.0581,101.999,4
+Some Say,Ireti,Moelogo,afro dancehall,2016,226000,13,0.782,0.0867,0.752,0.00102,0.133,-3.297,0.0703,89.984,3
+Iskaba,Iskaba,Wande Coal,afro dancehall,2016,224680,59,0.814,0.0794,0.764,0.0174,0.0696,-7.944,0.053,125.026,4
+Tilapia (feat. Medikal),"Life Is Eazi, Vol. 1 - Accra To Lagos",Mr Eazi,afro dancehall,2017,191489,0,0.593,0.615,0.671,0.208,0.307,-7.398,0.1,93.694,4
+2 People,"Life Is Eazi, Vol. 1 - Accra To Lagos",Mr Eazi,afro dancehall,2017,200727,0,0.826,0.263,0.733,0.0,0.0816,-6.121,0.297,109.944,4
+Wo Onane No,DeYaaa,Kwamz & Flava,afro dancehall,2014,209502,0,0.842,0.0281,0.61,0.0288,0.0927,-6.91,0.096,110.003,4
+Walahi,Ghetto University,Runtown,afro dancehall,2015,213914,0,0.842,0.135,0.806,6.13e-06,0.076,-4.02,0.0384,115.937,4
+Te Ota E Mole,Te Ota E Mole,Moelogo,afro dancehall,2015,184444,8,0.665,0.493,0.907,0.159,0.12,-5.719,0.0478,128.042,4
+Bang Bang,Bang Bang,Timaya,afro dancehall,2016,187586,0,0.765,0.142,0.826,0.0,0.0382,-3.953,0.193,100.008,4
+Hey Stranger,SPOTLIGHT,Reekado Banks,afro dancehall,2016,209447,23,0.863,0.341,0.813,0.00407,0.103,-7.882,0.103,100.015,4
+Wishlist,Turn Up,Various Artists,nigerian pop,2016,233064,0,0.78,0.471,0.562,2.23e-05,0.46,-7.886,0.145,90.023,4
+Tonyor,Tonyor (feat. Mr. P),Selebobo,afro dancehall,2016,216999,34,0.861,0.108,0.756,3.03e-06,0.0996,-3.146,0.0554,124.966,4
+Shout Out Trap (feat. Wande Coal),Ballers,Dammy Krane,Missing,2016,194925,0,0.858,0.084,0.752,0.0,0.373,-4.548,0.108,121.086,4
+Killy Person Freestyle,Killy Person (Freestyle),Reekado Banks,afro dancehall,2016,165283,18,0.883,0.137,0.566,0.0,0.224,-10.091,0.175,105.975,4
+One Call Away (feat. Maleek Berry),Afropop 101,Legendury Beatz,afropop,2017,177600,0,0.625,0.165,0.651,0.0,0.123,-5.128,0.304,99.728,4
+Higher Healing (feat. Huma Lara),Away and Beyond Plus,2Baba,afro dancehall,2014,235781,17,0.703,0.0611,0.833,0.0,0.0921,-5.496,0.302,159.971,4
+Just Like Dat,Just Like Dat,Orezi,afro dancehall,2017,207516,0,0.791,0.252,0.803,0.0,0.191,-4.678,0.0895,118.027,4
+Say-Baba,Say-Baba,CDQ,afropop,2017,246746,0,0.842,0.0485,0.927,0.0067,0.161,-2.945,0.0993,125.04,4
+First Come First Serve,First Come First Serve,CDQ,afropop,2016,212349,1,0.769,0.367,0.758,0.0,0.125,-5.869,0.145,109.917,4
+Pass The Agbara,Pass The Agbara,Skuki,Missing,2017,215021,0,0.962,0.578,0.613,2.92e-06,0.0656,-3.921,0.205,110.021,4
+Come Closer (feat. Drake),Come Closer (feat. Drake),WizKid,afro dancehall,2017,211273,49,0.835,0.138,0.457,1.96e-06,0.109,-7.455,0.204,99.99,4
+Shine Your Light,Shine Your Light,Moelogo,afro dancehall,2017,218181,15,0.487,0.214,0.39,2.47e-05,0.0425,-11.317,0.0461,176.071,3
+Yetunde,Yetunde,Legendury Beatz,afropop,2016,152607,24,0.681,0.127,0.791,0.0,0.087,-5.144,0.0507,103.07,4
+Gbo Gan Gbom (Une Soul),Gbo Gan Gbom (Une Soul),Flavour,afro dancehall,2016,233920,0,0.622,0.406,0.92,1.67e-06,0.0637,-0.543,0.267,112.294,3
+Go Down,Go Down,Julz,Missing,2016,204973,0,0.882,0.297,0.69,0.00275,0.0715,-5.07,0.182,128.014,4
+Far Away,Far Away,Master Kraft,Missing,2016,208065,28,0.533,0.13,0.764,4.52e-06,0.0938,-3.63,0.148,79.997,5
+Dance 4 Me,Authentic (African Edition),J. Martins,afro dancehall,2016,250287,32,0.695,0.1,0.957,0.0,0.072,-2.173,0.183,125.996,4
+Koffi Anan,Koffi Anan,Yemi Alade,afro dancehall,2016,205008,37,0.937,0.265,0.872,0.000466,0.164,-1.43,0.133,112.983,4
+Fight (feat. DJ Cuppy),"Life Is Eazi, Vol. 1 - Accra To Lagos",Mr Eazi,afro dancehall,2017,184778,0,0.74,0.0943,0.721,0.0196,0.16,-8.43,0.0723,113.018,4
+Sometimes I Pray,Shine Your Light,Moelogo,afro dancehall,2017,220190,14,0.559,0.31,0.488,0.0,0.248,-11.293,0.0977,93.854,4
+Your Smile,Your Smile,Tjan,afro r&b,2017,215760,25,0.738,0.176,0.641,6.06e-06,0.258,-9.56,0.0549,99.84,4
+Salsa,Salsa,Master Kraft,Missing,2016,184058,12,0.845,0.162,0.622,0.0,0.113,-6.298,0.302,120.023,4
+Gbemisaya,Quality,CDQ,afropop,2016,261067,6,0.807,0.0353,0.858,0.000662,0.0589,-3.278,0.0922,129.939,4
+UP 2 SUMTING,UP 2 SUMTING,Iyanya,afro dancehall,2016,207172,0,0.57,0.459,0.616,0.0,0.208,-7.084,0.285,99.954,4
+Juice (feat. Maleek Berry),First Wave EP,Ycee,afro dancehall,2017,250920,54,0.812,0.496,0.657,0.0024,0.091,-2.77,0.0738,109.998,4
+Wavy,First Wave EP,Ycee,afro dancehall,2017,215226,12,0.714,0.0348,0.815,0.0,0.129,-3.978,0.28,105.048,4
+I.J.N,I.J.N,Pheelz,Missing,2016,221333,0,0.731,0.447,0.684,0.0,0.0898,-5.361,0.0508,89.95,4
+Terรฉ terรฉ,Terรฉ terรฉ,Toofan,azontobeats,2016,207333,45,0.916,0.113,0.744,2.22e-05,0.0494,-1.724,0.0747,109.995,4
+Maradona,Maradona,Niniola,afro dancehall,2017,191242,30,0.914,0.0444,0.613,0.069,0.11,-6.808,0.0548,118.043,4
+Yolo Yolo,Yolo Yolo,Seyi Shay,afro dancehall,2017,206600,16,0.785,0.0741,0.973,7.86e-06,0.2,-3.054,0.155,105.943,4
+Baby Answer,Signature - EP,Iyanya,afro dancehall,2017,202680,0,0.72,0.114,0.936,0.0,0.154,-1.804,0.101,106.022,4
+Gimme Luv (feat. Olamide),Gimme Luv (feat. Olamide),DJ Spinall,afro dancehall,2017,202161,18,0.877,0.261,0.738,0.0,0.346,-3.383,0.0628,110.006,4
+Ojukokoro,Ten,DJ Spinall,afro dancehall,2016,175000,0,0.69,0.0498,0.836,0.00015,0.0854,-6.863,0.1,123.1,4
+Sexy Girls,Sexy Girls,SUPERSTAR DJ Xclusive,Missing,2017,208000,3,0.88,0.129,0.699,4.56e-06,0.352,-6.482,0.0731,117.011,4
+Alhaji (Can't Hear You) [Remix] (feat. Runtown),Alhaji (Can't Hear You) [Remix] (feat. Runtown),Illbliss,afro dancehall,2017,215745,18,0.777,0.265,0.846,0.0,0.118,-5.446,0.0452,108.027,4
+Halรฉ Halรฉ,God Over Everything,Patoranking,afro dancehall,2016,208355,0,0.778,0.181,0.588,0.0,0.113,-8.845,0.06,115.976,4
+Cheating Zone,God Over Everything,Patoranking,afro dancehall,2016,236811,0,0.582,0.447,0.834,0.0,0.0663,-4.74,0.24,76.505,4
+Money,God Over Everything,Patoranking,afro dancehall,2016,224028,0,0.644,0.137,0.887,0.0,0.0834,-4.231,0.124,101.923,4
+Kill Nobody (feat. Calibrii),First Wave EP,Ycee,afro dancehall,2017,209186,14,0.699,0.382,0.799,0.0,0.495,-5.369,0.285,102.846,4
+Bad,Bad,Juls,afro dancehall,2017,240065,40,0.758,0.563,0.46,0.0,0.0972,-9.253,0.236,96.04,4
+Sikiru,Sikiru,Magnito,nigerian hip hop,2017,213183,0,0.934,0.337,0.762,0.0,0.0604,-6.247,0.27,109.973,4
+IZZUE,Izzue,Davido x Dammy Krane,Missing,2015,180610,0,0.86,0.0301,0.671,5.49e-05,0.0807,-1.908,0.0512,107.071,4
+Joro,Joro,WizKid,afro dancehall,2019,262736,66,0.686,0.253,0.694,0.000904,0.109,-3.693,0.257,189.998,4
+Skeletun,Skeletun,Tekno,afropop,2019,192623,60,0.747,0.0355,0.64,8.07e-05,0.338,-4.766,0.0899,201.999,4
+Blow My Mind,Blow My Mind,DaVido,afropop,2019,199173,61,0.52,0.129,0.644,0.000235,0.107,-7.09,0.0783,103.646,4
+Dumebi,Rema,Rema,nigerian pop,2019,179775,18,0.922,0.202,0.666,0.00386,0.105,-4.97,0.0609,110.015,4
+Risky,A Good Time,DaVido,afropop,2019,270315,55,0.714,0.15,0.702,0.0,0.0993,-4.544,0.264,126.511,5
+Killin Dem,Killin Dem,Zlatan,afro dancehall,2019,220884,54,0.876,0.107,0.808,0.00447,0.121,-5.382,0.176,112.923,4
+"Soco (feat. Wizkid, Ceeza Milli, Spotless & Terri)","Soco (feat. Wizkid, Ceeza Milli, Spotless & Terri)",Starboy,afro dancehall,2018,255608,65,0.841,0.594,0.644,0.00402,0.142,-3.284,0.083,108.003,4
+On the Low,African Giant,Burna Boy,afro dancehall,2019,185898,73,0.816,0.692,0.781,0.00935,0.0835,-4.237,0.0425,99.95,4
+Gbona,African Giant,Burna Boy,afro dancehall,2019,187609,65,0.798,0.564,0.813,0.000141,0.108,-5.869,0.162,93.912,4
+Sensima,Sensima,Skiibii,afropop,2018,187794,58,0.874,0.0899,0.807,0.0,0.0698,-3.973,0.177,109.945,4
+One Ticket (feat. Davido),No Bad Songz,Kizz Daniel,afro dancehall,2018,208419,41,0.832,0.0614,0.919,0.0,0.0773,-3.595,0.256,106.086,4
+Fever,Fever,WizKid,afro dancehall,2018,252244,58,0.755,0.544,0.806,0.000114,0.0908,-4.618,0.0479,98.008,4
+Skin Tight (feat. Efya),Skin Tight (feat. Efya),Mr Eazi,afro dancehall,2015,248626,1,0.654,0.152,0.439,1.11e-05,0.111,-7.114,0.263,111.358,3
+Power Rangers,Power Rangers,Teni,afro dancehall,2019,212662,49,0.804,0.488,0.782,0.00403,0.1,-3.905,0.0374,105.018,4
+Soapy,Soapy,Naira Marley,afro dancehall,2019,174043,52,0.9,0.159,0.806,0.00971,0.0811,-4.816,0.246,123.038,4
+Iron Man,Rema,Rema,nigerian pop,2019,201693,7,0.76,0.587,0.568,0.04,0.0905,-3.37,0.0489,99.955,4
+Jogodo,Jogodo,Tekno,afropop,2018,263026,47,0.74,0.379,0.771,0.0,0.0889,-4.7,0.122,100.019,4
+Balance,Chulo Vibes,Timaya,afro dancehall,2019,183529,0,0.722,0.378,0.788,0.0327,0.381,-3.661,0.0508,102.079,4
+Pana,Pana,Tekno,afropop,2016,242893,60,0.553,0.305,0.553,0.0581,0.0715,-6.818,0.305,72.949,3
+Mad Over You,Runtown Hits Vol.1,Runtown,afro dancehall,2017,216058,0,0.843,0.433,0.548,8.34e-05,0.109,-5.209,0.0477,107.044,4
+Wonder Woman,Wonder Woman,DaVido,afropop,2018,236000,42,0.688,0.434,0.696,0.0,0.128,-4.37,0.301,95.954,4
+Ghetto Love,Ghetto Love,WizKid,afro dancehall,2019,198367,60,0.807,0.206,0.774,0.000338,0.127,-4.553,0.235,98.048,4
+Risky,Risky,DaVido,afropop,2019,270315,58,0.714,0.15,0.702,0.0,0.0993,-4.544,0.264,126.511,5
+Audio Money,Audio Money,Rudeboy,azontobeats,2019,224092,14,0.894,0.281,0.787,0.0,0.0341,-2.881,0.0882,104.942,4
+40Yrs,40yrs Everlasting,Flavour,afro dancehall,2019,186084,0,0.765,0.0884,0.604,0.000158,0.101,-4.607,0.104,125.113,5
+Wetin We Gain,Wetin We Gain,Victor AD,Missing,2018,214752,36,0.533,0.424,0.784,0.0,0.093,-3.285,0.315,64.428,5
+Crazy Love,Crazy Love,Flavour,afro dancehall,2018,212729,0,0.742,0.187,0.702,0.0,0.522,-3.828,0.0341,100.979,4
+Osinachi,Osinachi,HumbleSmith,afropop,2015,235773,2,0.845,0.228,0.79,0.0,0.0886,-5.42,0.301,114.941,4
+Duro,Duro,Tekno,afropop,2015,212000,20,0.74,0.282,0.84,0.000156,0.0955,-3.815,0.0859,89.816,3
+Obianuju,Obianuju,Flavour,afro dancehall,2016,195056,0,0.587,0.704,0.463,0.0,0.143,-9.06,0.0784,118.392,5
+Waka Waka,Waka Waka (feat. Davido),Selebobo,afro dancehall,2017,206496,39,0.909,0.199,0.735,0.00022,0.038,-2.905,0.0375,110.033,4
+Dance (feat. Rudeboy),Dance (feat. Rudeboy),Timaya,afro dancehall,2017,203280,0,0.709,0.0761,0.868,0.0,0.086,-2.386,0.0696,95.979,4
+Kom Kom,Kom Kom,Timaya,afro dancehall,2018,188571,0,0.767,0.0539,0.872,5.18e-05,0.171,-4.305,0.0469,98.043,4
+Yawa,Yawa,Tekno,afropop,2017,236355,46,0.92,0.223,0.584,0.000274,0.0422,-4.789,0.0629,107.965,4
+Yeba,Yeba,Kiss Daniel,afro dancehall,2017,199024,0,0.812,0.187,0.768,0.000961,0.0891,-5.267,0.0962,110.051,4
+I Don't Care,I Don't Care,Selebobo,afro dancehall,2017,209893,30,0.891,0.54,0.701,0.000286,0.0862,-3.767,0.0439,112.027,4
+Ride for You,Deal with It,Phyno,afro dancehall,2019,217154,41,0.809,0.483,0.683,7.34e-06,0.107,-4.366,0.0709,99.056,4
+Obianuju,Legacy (Ahamefuna),Duncan Mighty,afro dancehall,2011,221080,45,0.696,0.187,0.693,0.0,0.0771,-4.031,0.101,108.928,4
+Reason with me,Reason with me,Rudeboy,azontobeats,2019,251305,28,0.913,0.431,0.56,1.6e-06,0.11,-6.782,0.0913,102.014,4
+Ifunanya,Game Over,P-Square,afro dancehall,2008,266613,31,0.824,0.711,0.767,0.0,0.0468,-3.537,0.0433,109.978,4
+Woman,Woman,Tekno,afropop,2019,255220,31,0.673,0.344,0.642,0.0,0.157,-5.013,0.187,125.437,5
+Awele,Awele The Ep,Flavour,afro dancehall,2018,511738,0,0.783,0.273,0.853,0.0,0.0922,-2.855,0.0798,79.458,3
+Yati Yati,Yati Yati,Rudeboy,azontobeats,2019,202031,21,0.82,0.512,0.538,0.0153,0.0799,-9.305,0.0543,90.019,3
+Chizoba,Chizoba,Rudeboy,azontobeats,2018,241065,11,0.795,0.628,0.587,1.23e-05,0.117,-5.751,0.0831,113.399,5
+Yati-Yati,Yati-Yati,Ruffcoin,nigerian hip hop,2019,203964,16,0.77,0.473,0.756,0.00856,0.081,-3.111,0.0518,180.013,3
+I Can't Kill Myself,Chulo Vibes,Timaya,afro dancehall,2019,196000,0,0.799,0.208,0.885,0.0,0.0739,-5.772,0.195,99.951,4
+No Kissing Baby,No Kissing Baby,Patoranking,afro dancehall,2016,222857,0,0.766,0.156,0.735,5.69e-06,0.0438,-6.624,0.0704,105.009,4
+By Force,By Force,May D,afro dancehall,2017,176953,9,0.889,0.441,0.673,0.0,0.0801,-4.48,0.0608,110.029,4
+Askamaya,Askamaya,Teni,afro dancehall,2018,175960,2,0.816,0.068,0.778,5.47e-06,0.0833,-2.702,0.0622,116.038,4
+Angela,Rockstar,Kuami Eugene,afropop,2018,187285,44,0.654,0.0194,0.655,4.09e-05,0.2,-3.165,0.0766,199.997,4
+My Level,Dripset,Shatta Wale,afropop,2019,164450,7,0.675,0.283,0.662,0.0,0.194,-9.44,0.311,106.739,4
+Taking Over,Dripset,Shatta Wale,afropop,2019,216061,9,0.855,0.148,0.418,0.0,0.354,-11.115,0.341,112.913,4
+I Can't Kill Myself,Chulo Vibes,Timaya,afro dancehall,2019,196000,46,0.799,0.208,0.885,0.0,0.0739,-5.772,0.195,99.951,4
+Yeba,Yeba,Kiss Daniel,afro dancehall,2017,198974,46,0.813,0.187,0.77,0.00152,0.0979,-5.26,0.0951,110.044,4
+Something Different,Something Different,Adekunle Gold,afro dancehall,2020,176962,2,0.719,0.446,0.781,7.38e-06,0.112,-2.922,0.139,99.718,4
+Jerusalema,Jerusalema,Master KG,south african house,2019,342662,32,0.882,0.0222,0.467,1.09e-05,0.0618,-7.5,0.0513,124.015,4
+Electric (feat. Wizkid & London),SoundMan Vol. 1,Starboy,afro dancehall,2019,178775,55,0.775,0.762,0.415,0.0269,0.092,-10.038,0.259,97.942,4
+Oga,Oga,Yemi Alade,afro dancehall,2018,181342,35,0.681,0.0218,0.74,0.182,0.424,-6.346,0.0437,107.042,4
+Fake Love (feat. Duncan Mighty & WizKid),Fake Love (feat. Duncan Mighty & WizKid),Starboy,afro dancehall,2018,246792,53,0.873,0.28,0.651,0.000205,0.0782,-6.415,0.0664,106.036,4
+Catch You,Ijele The Traveler,Flavour,afro dancehall,2017,216032,4,0.763,0.251,0.741,0.000862,0.101,-4.386,0.0876,90.02,4
+Skintight,Skintight,Mr Eazi,afro dancehall,2015,205186,0,0.869,0.0737,0.399,5.06e-05,0.079,-7.507,0.127,99.722,4
+Abule,Abule,Patoranking,afro dancehall,2020,199198,50,0.687,0.119,0.79,2.57e-05,0.104,-7.122,0.194,99.669,4
+Teyamo,Teyamo,Singah,Missing,2018,242508,44,0.698,0.391,0.892,8.32e-06,0.101,-3.018,0.0534,100.062,4
+Lucky (feat. Rudeboy),Black Love,Sarkodie,afro dancehall,2019,267660,39,0.841,0.392,0.731,0.0,0.0703,-5.8,0.243,103.934,4
+Ubi Ego,Ubi Ego,Otigba Agulu,Missing,2019,410045,22,0.703,0.115,0.924,0.0,0.0853,-2.015,0.268,89.979,3
+Igbotic,Igbotic,Anyidons,Missing,2020,204146,19,0.512,0.346,0.842,0.0,0.356,-3.692,0.253,88.374,4
+FEM,FEM,DaVido,afropop,2020,202222,61,0.775,0.493,0.687,8.5e-05,0.0958,-6.174,0.0725,108.017,4
+Kontrol,Kontrol,Maleek Berry,afropop,2016,206315,69,0.868,0.281,0.521,6.36e-05,0.0992,-6.902,0.0512,113.993,4
+My Body,My Body,Solidstar,afro dancehall,2014,216373,0,0.574,0.114,0.803,0.0,0.0782,-4.399,0.291,97.968,4
+Bend Down Pause,Bend Down Pause,Runtown,afro dancehall,2015,197276,0,0.895,0.22,0.956,0.0,0.34,-2.599,0.182,100.03,4
+Ferrari,Mama Africa (The Diary of an African Woman),Yemi Alade,afro dancehall,2016,206959,30,0.513,0.358,0.932,2.45e-06,0.166,-1.173,0.355,114.115,4
+"Reggae Blues (feat. Olamide, Kcee, Orezi & Iyanya)","Reggae Blues (feat. Olamide, Kcee, Orezi & Iyanya)",HarrySong,afro dancehall,2015,289149,35,0.84,0.237,0.861,0.0013,0.0721,-1.96,0.0734,94.502,3
+Pullover (feat. Wiz Kid),Takeover,KCee,afro dancehall,2013,187866,26,0.819,0.036,0.89,0.0,0.207,-2.265,0.064,130.044,4
+Sekem,Sekem,MC Galaxy,afropop,2014,236276,0,0.835,0.32,0.881,2.86e-06,0.228,-3.69,0.0359,130.0,4
+Anointing (feat. Sarkodie),Anointing (feat. Sarkodie),Mr Eazi,afro dancehall,2016,216546,0,0.61,0.199,0.367,2.07e-06,0.0684,-10.952,0.335,100.698,4
+Kukere,Desire,Iyanya,afro dancehall,2013,223007,0,0.74,0.0681,0.842,0.00984,0.0569,-5.281,0.0872,130.059,4
+Bobo,Eyan Mayweather,Olamide,afro dancehall,2015,253466,0,0.7,0.58,0.963,0.0,0.403,-3.599,0.138,125.004,4
+Johnny,King of Queens,Yemi Alade,afro dancehall,2014,236012,12,0.84,0.2,0.842,6.68e-05,0.138,-2.641,0.232,125.105,4
+Fada Fada (Ghetto Gospel),Fada Fada (Ghetto Gospel),Phyno,afro dancehall,2016,284592,5,0.477,0.697,0.797,0.0,0.19,-2.971,0.217,89.607,3
+I Concur,I Concur,Timaya,afro dancehall,2015,245960,9,0.866,0.113,0.702,0.000871,0.0581,-2.712,0.226,126.001,4
+Wash,Wash,Tekno,afropop,2015,194080,10,0.886,0.0763,0.803,0.0,0.187,-5.004,0.162,120.989,4
+M.O.N.E.Y,M.O.N.E.Y,Timaya,afro dancehall,2016,231106,6,0.86,0.275,0.728,0.0,0.0777,-2.95,0.158,122.918,4
+Ashawo,Ashawo,Flavour,afro dancehall,2014,257751,0,0.761,0.146,0.975,0.489,0.144,-0.18,0.0611,100.612,4
+Shake Body,Man of the Year,Skales,afro dancehall,2015,208873,51,0.855,0.193,0.872,2.87e-05,0.0615,-4.09,0.0548,130.998,4
+Karolina,"Awilo Collection, Vol. 1",Awilo Longomba,afro dancehall,2016,272065,0,0.643,0.0924,0.982,0.0,0.162,-3.519,0.0525,119.953,4
+Shake,Blessed,Flavour,afro dancehall,2012,236355,0,0.731,0.262,0.949,0.0,0.575,-3.571,0.224,125.043,4
+On Top Your Matter,Ayo,WizKid,afro dancehall,2014,284773,35,0.714,0.0516,0.968,0.0,0.0758,-0.831,0.0536,124.038,4
+Baby Oku (Gyration),Super Sexy,Various Artists,bongo flava,2015,197224,0,0.639,0.229,0.97,0.00937,0.259,-1.68,0.0418,104.178,3
+Why (feat. Awilo Longomba),Ballers,Dammy Krane,afro dancehall,2016,208431,0,0.786,0.239,0.834,4.89e-06,0.241,-4.371,0.129,129.048,4
+The Money,The Money,DaVido,afropop,2015,221309,0,0.818,0.145,0.889,0.000383,0.0793,-2.387,0.134,123.982,4
+Mmege,Thankful,Flavour,afro dancehall,2014,214706,0,0.593,0.0441,0.907,2.43e-06,0.265,-0.371,0.0921,111.943,4
+Oyoyo,Oyoyo,J. Martins,afro dancehall,2009,237066,25,0.613,0.199,0.807,1.1e-05,0.0894,-6.459,0.395,101.648,4
+Woyo,Woyo,Timaya,afro dancehall,2017,163005,0,0.779,0.0285,0.842,0.00519,0.05,-2.793,0.0763,102.104,4
+Ikwokrikwo,Blessed,Flavour,afro dancehall,2012,222876,0,0.709,0.317,0.895,8.26e-05,0.601,-4.478,0.226,106.601,4
+Sisi (Remix),MixDown,Various Artists,Missing,2016,247693,0,0.78,0.565,0.916,0.0,0.144,-2.357,0.236,124.126,4
+Manuchim Soh,Munachim Soh,Duncan Mighty,afro dancehall,2012,271516,0,0.839,0.416,0.777,4.75e-06,0.118,-6.303,0.0476,129.928,4
+Ohema (feat. Mr Eazi),Ohema (feat. Mr Eazi),DJ Spinall,afro dancehall,2016,208666,34,0.777,0.0158,0.707,0.000173,0.0522,-4.812,0.152,106.98,4
+Joana,Joana,Selebobo,afro dancehall,2014,200173,29,0.738,0.371,0.933,0.0208,0.0614,-1.579,0.0435,121.985,4
+Baby (Chop Kiss),Baby (Chop Kiss),Shatta Wale,afropop,2016,198973,0,0.923,0.0523,0.842,0.00062,0.0434,-5.365,0.146,123.006,4
+Body,Body,Eugy,afro dancehall,2015,216000,36,0.831,0.378,0.259,0.000151,0.0994,-13.457,0.175,99.978,4
+Nobody Ugly,Nobody Ugly,P-Square,afro dancehall,2017,246635,2,0.882,0.123,0.738,7.5e-05,0.0589,-3.627,0.117,134.131,4
+Ife Adigomma,Thankful,Flavour N'abania,Missing,2014,292937,0,0.385,0.48,0.918,0.0381,0.196,-3.382,0.0912,136.352,4
+Nnekata,Ijele The Traveler,Flavour,afro dancehall,2017,224052,4,0.771,0.73,0.794,0.0,0.224,-4.266,0.248,161.376,3
+Sekem,Breakthrough,MC Galaxy,afropop,2015,236200,0,0.833,0.324,0.884,2.13e-06,0.253,-3.696,0.0367,130.014,4
+Desire,Desire,KCee,afro dancehall,2017,181916,2,0.812,0.251,0.761,0.000247,0.045,-3.05,0.0502,105.971,4
+Baby Na Yoka,Ijele The Traveler,Flavour,afro dancehall,2017,215875,13,0.842,0.115,0.917,2.22e-06,0.659,-3.897,0.198,102.971,4
+Sangolo,Sangolo,Eff-Jay,Missing,2014,221040,0,0.831,0.184,0.915,1.15e-05,0.11,-1.362,0.21,130.061,4
+Vanessa,Vanessa,KCee,afro dancehall,2017,238106,1,0.841,0.407,0.891,0.000125,0.0593,-3.585,0.103,110.016,4
+Malo,Malo,Bracket,afro dancehall,2017,205191,0,0.928,0.42,0.737,0.0,0.0667,-5.465,0.129,105.005,4
+Knack Am,Knack Am,Yemi Alade,afro dancehall,2017,214974,32,0.649,0.169,0.877,4.78e-05,0.0472,-1.597,0.25,125.051,5
+Wo!!,Wo!!,Olamide,afro dancehall,2017,195422,0,0.849,0.537,0.385,0.0196,0.0916,-16.261,0.0838,129.013,4
+Bend It,Bend It,Maleek Berry,afropop,2017,199626,0,0.51,0.0159,0.73,2.04e-06,0.157,-3.75,0.0716,102.397,4
+Augment,Augment (feat. Olamide),Phyno,afro dancehall,2017,283402,29,0.421,0.469,0.875,0.0,0.0683,-3.663,0.346,195.105,3
+Jaiye,Ijele The Traveler,Flavour,afro dancehall,2017,210991,0,0.748,0.208,0.952,1.03e-06,0.102,-4.621,0.0995,128.024,4
+Chimamanda,Ijele The Traveler,Flavour,afro dancehall,2017,263784,6,0.526,0.568,0.846,0.000618,0.192,-3.604,0.155,205.919,4
+Reggae Blues,Best of Harrysong,HarrySong,afro dancehall,2017,289093,7,0.816,0.233,0.86,0.000349,0.0903,-2.764,0.0725,94.424,3
+Shake,Blessed,Flavour N'abania,Missing,2012,236094,0,0.716,0.259,0.95,0.0,0.606,-3.571,0.227,125.042,4
+Pour Me Water,Pour Me Water,Mr Eazi,afro dancehall,2017,168159,0,0.848,0.171,0.457,0.000739,0.0994,-9.957,0.117,66.657,5
+Sugar,Attention to Detail,KCee,afro dancehall,2017,232933,0,0.741,0.587,0.754,0.00024,0.0485,-3.475,0.0443,122.017,4
+Ma Lo,Sugarcane,Tiwa Savage,afro dancehall,2017,182857,55,0.788,0.424,0.721,2.86e-06,0.0897,-4.577,0.152,105.23,4
+Arabanko,Best of Harrysong,HarrySong,afro dancehall,2017,200960,0,0.735,0.0803,0.863,0.000127,0.0815,-2.888,0.151,200.895,3
+Yeba,Yeba,Kiss Daniel,afro dancehall,2017,198974,0,0.812,0.185,0.768,0.00112,0.0962,-5.267,0.096,110.041,4
+Forever,Best of P-Square,P-Square,afro dancehall,2017,269426,2,0.764,0.328,0.818,0.0,0.0711,-4.27,0.06,115.003,4
+Ashawo - Remix,Uplifted,Flavour,afro dancehall,2016,262322,0,0.77,0.12,0.973,0.375,0.131,0.075,0.0763,100.617,4
+Samankwe,Best of Harrysong,HarrySong,afro dancehall,2017,212533,4,0.783,0.0205,0.907,1.63e-05,0.0645,-2.524,0.0952,99.973,4
+Testimony,Best of P-Square,P-Square,afro dancehall,2017,259906,4,0.824,0.23,0.751,0.000153,0.0739,-4.013,0.134,120.073,4
+Nek-Unek,Collywood Music Afrobeats Kickers,Various Artists,afropop,2014,229343,0,0.766,0.038,0.93,0.00831,0.0898,0.034,0.0584,123.054,4
+Sexy Rosey,Thankful,Flavour N'abania,Missing,2014,251924,0,0.727,0.0723,0.887,9.88e-06,0.186,-4.144,0.102,128.035,4
+Amayanabo,DanceHall Kings,Various Artists,afro dancehall,2010,218881,0,0.594,0.0521,0.694,0.545,0.0478,-6.289,0.334,87.498,3
+Mind,Mind,Various Artists,afropop,2018,233848,0,0.842,0.106,0.632,0.0,0.0716,-5.846,0.0895,114.956,4
+Telli Person (feat. Phyno & Olamide),Telli Person (feat. Phyno & Olamide),Timaya,afro dancehall,2017,224754,0,0.865,0.186,0.801,0.0,0.0467,-2.006,0.111,122.074,4
+Manya,Manya,Mut4y,afropop,2017,231272,45,0.82,0.324,0.605,2.33e-06,0.159,-7.676,0.0922,110.011,4
+Wake Up,Thankful,Flavour N'abania,Missing,2014,225071,0,0.693,0.261,0.928,0.0,0.304,-3.278,0.127,125.994,4
+Laye,New Era,Kiss Daniel,afro dancehall,2016,228493,39,0.734,0.36,0.891,0.0,0.0874,-2.659,0.103,120.007,4
+The Matter (feat. Wizkid),The Matter (feat. Wizkid),Maleek Berry,afropop,2013,198058,40,0.697,0.224,0.841,0.0,0.336,-6.782,0.271,103.07,4
+Yori Yori,"DJ Collins Africa Essential Anthems, Vol 2.",Various Artists,Missing,2013,217700,0,0.652,0.677,0.725,0.0,0.164,-3.486,0.169,102.879,4
+Salambala,Salambala - Single,Wizboyy Ofuasia,Missing,2015,248441,26,0.745,0.0929,0.899,0.0138,0.211,-1.648,0.0959,193.489,3
+Gรขtรฉ le coin,Coupรฉ bibamba,Awilo Longomba,afro dancehall,2013,396226,36,0.696,0.0678,0.742,0.0,0.551,-8.749,0.0413,115.072,4
+Nwa Baby,W.E.E.D.,Solidstar,afro dancehall,2016,210840,20,0.763,0.425,0.937,3.07e-06,0.0534,-0.116,0.158,105.941,4
+Oh My God (feat. Flavour),Attention to Detail,KCee,afro dancehall,2017,180506,1,0.453,0.239,0.912,0.0,0.0404,-2.413,0.211,93.598,3
+Personally - Bonus,Double Trouble,P-Square,afro dancehall,2014,192786,48,0.736,0.0787,0.747,0.00045,0.0973,-3.963,0.267,159.559,5
+Drogba (Joanna),Drogba (Joanna),Afro B,afroswing,2018,199000,0,0.966,0.0206,0.633,4.06e-06,0.0715,-6.392,0.101,108.011,4
+Sisi Maria,First Daze Of Winter,Maleek Berry,afropop,2018,197777,0,0.734,0.564,0.693,2.55e-05,0.407,-5.625,0.0399,107.933,4
+Yur Luv,Yur Luv,Tekno,afropop,2018,231053,44,0.736,0.331,0.786,3.14e-05,0.186,-4.988,0.067,103.956,4
+Bank Alert,Best of P-Square,P-Square,afro dancehall,2017,253907,13,0.806,0.0679,0.914,0.0,0.0439,-3.537,0.0988,130.023,4
+Oshรฉ (feat. Awilo Longomba),Rich & Famous [Famous],Praiz,afro r&b,2014,190902,29,0.54,0.222,0.945,0.0,0.27,-2.681,0.114,121.928,4
+Infinity,Infinity,Wizboyy,afro dancehall,2012,229786,19,0.788,0.308,0.916,0.0,0.18,-0.451,0.273,103.082,4
+Bundelele,Bundelele,Awilo Longomba,afro dancehall,2014,205970,33,0.68,0.0969,0.961,0.0124,0.142,-3.043,0.0478,133.988,4
+No Stress,No Stress,WizKid,afro dancehall,2020,202706,66,0.51,0.00401,0.663,0.0,0.0989,-4.871,0.472,199.733,4
+Smile (feat. H.E.R.),Smile (feat. H.E.R.),WizKid,afro dancehall,2020,251846,63,0.673,0.0258,0.74,0.0,0.127,-4.945,0.0847,90.026,4
+"PAMI (feat. Wizkid, Adekunle Gold & Omah Lay)","PAMI (feat. Wizkid, Adekunle Gold & Omah Lay)",DJ Tunez,afro dancehall,2020,213599,58,0.755,0.625,0.645,5.79e-06,0.197,-6.933,0.0944,99.889,4
+Kum Kum,Kum Kum,Chidokeyz,Missing,2020,142429,25,0.889,0.209,0.781,0.000228,0.077,-6.842,0.163,102.983,4
+Won Le Ba,Won Le Ba,Shizzi,nigerian pop,2020,229655,45,0.866,0.147,0.71,0.0,0.309,-5.562,0.0681,115.999,4
+Ginger Me,Ginger Me,Rema,nigerian pop,2020,205892,60,0.567,0.134,0.577,0.000397,0.145,-7.833,0.134,200.008,5
+Myself,Myself,Basketmouth,Missing,2020,203395,44,0.48,0.161,0.734,0.0,0.108,-6.978,0.287,95.735,4
+Where,Where,Tekno,afropop,2016,219080,34,0.887,0.0729,0.908,0.000192,0.0483,-3.346,0.0637,115.023,4
+Mmayewa,Mmayewa,Juls,afro dancehall,2020,169230,49,0.834,0.176,0.558,1.67e-05,0.0879,-8.274,0.166,116.977,4
+Jealous (feat. Fire Boy),YBNL MaFia Family,YBNL MaFia Family,nigerian pop,2018,216711,51,0.746,0.106,0.786,0.000128,0.622,-5.67,0.0472,102.996,4
+Mummy Pray for Me,Mummy Pray for Me,Mister Versace,Missing,2020,208378,35,0.885,0.565,0.506,0.000322,0.127,-8.173,0.204,105.999,4
+4 Life,4 Life,Famous Bobson,Missing,2020,165746,0,0.578,0.0102,0.561,0.00689,0.173,-7.367,0.202,103.969,4
+Sisi Maria (feat. Skales & Koker),Sisi Maria (feat. Skales & Koker),OmoAkin,Missing,2016,223451,33,0.916,0.0684,0.729,1.42e-05,0.11,-3.825,0.0457,111.982,4
+Tornado,Tornado,Tytanium,Missing,2019,151456,11,0.745,0.14,0.513,6.84e-05,0.1,-4.798,0.0424,137.039,5
+Skin,Skin,Minz,nigerian pop,2018,192506,40,0.775,0.851,0.517,2.13e-06,0.108,-7.782,0.437,95.904,4
+Kpro Kpro - Remix,Kpro Kpro (Remix),Sean Tizzle,afro dancehall,2018,213603,20,0.743,0.434,0.689,0.0,0.0854,-4.166,0.123,108.873,4
+Feel Alright,Feel Alright,WizzyWee,Missing,2018,226063,7,0.803,0.00616,0.668,8.6e-05,0.0503,-5.989,0.113,103.1,4
+Away,Away,Iyanya,afro dancehall,2014,211320,0,0.771,0.635,0.928,0.00567,0.0527,-1.285,0.0743,128.136,4
+Rotate,Naija Hits 2012-2013,This Is Africa,afro dancehall,2013,224574,0,0.725,0.133,0.945,1.02e-06,0.164,-0.809,0.094,130.07,4
+Shake Your Bum,Naija Hits 2012-2013,This Is Africa,afro dancehall,2013,216633,0,0.907,0.139,0.522,1.22e-06,0.0842,-4.896,0.139,126.075,4
+Commander,Commander,T-Obay,Missing,2014,200071,8,0.783,0.424,0.888,0.0,0.0464,-3.356,0.253,123.913,4
+Angelina,Angelina,Baci,Missing,2014,172866,0,0.78,0.13,0.92,0.0396,0.0415,-3.821,0.0629,125.996,4
+Sos,Sos,Yung L,afropop,2013,204120,14,0.747,0.0201,0.703,0.0,0.333,-8.652,0.123,99.941,4
+Le Kwa Ukwu,Le Kwa Ukwu,Iyanya,afro dancehall,2013,216920,0,0.755,0.4,0.887,2.95e-06,0.171,-3.939,0.115,125.03,4
+Give It to Me (feat. Flavour),Takeover,KCee,afro dancehall,2013,237546,6,0.783,0.107,0.922,0.00136,0.211,-0.812,0.087,130.03,4
+Johnny,Johnny,Yemi Alade,afro dancehall,2013,236012,32,0.848,0.186,0.711,0.000229,0.116,-6.385,0.194,125.084,4
+Kele Kele,Once Upon a Time,Tiwa Savage,afro dancehall,2013,222693,32,0.712,0.0319,0.77,0.0,0.103,-3.86,0.174,109.751,4
+Kukere,Kukere,Iyanya,afro dancehall,2012,224835,0,0.757,0.0179,0.853,0.00284,0.0452,-4.392,0.0601,130.058,4
+Ginger (feat. Wizkid),Ginger (feat. Wizkid),L.A.X,afro dancehall,2014,232120,29,0.777,0.0596,0.897,0.0,0.29,-2.871,0.0516,126.018,4
+Chineke Di Mma,Takeover,KCee,afro dancehall,2013,219866,3,0.703,0.0712,0.956,0.0,0.199,-2.786,0.0455,126.997,4
+Caro (feat. Wizkid),Caro (feat. Wizkid),Starboy L.a.X,Missing,2013,246760,32,0.702,0.0173,0.947,2.71e-05,0.445,-1.673,0.0642,122.075,4
+Dance,Dance,Tekno Miles,Missing,2014,201771,0,0.832,0.181,0.622,0.022,0.0615,-2.122,0.0738,126.054,4
+Dance (feat. R2bees),Explosion,WizKid,afro dancehall,2014,274546,0,0.73,0.0155,0.959,0.0,0.037,-2.408,0.0524,131.044,4
+Original,Original,Fally Ipupa,afropop,2014,285518,0,0.468,0.0555,0.896,0.0257,0.105,-4.335,0.054,118.737,4
+Nek-Unek,"Lanre Davies Presents Welcome to the Factory Afrobeat Bangers, Vol. 2",Various Artists,afropop,2014,228933,0,0.795,0.0216,0.857,0.0341,0.036,-5.228,0.0519,123.077,4
+Girlie O,Afrobeats With : Love Vol.1,Various Artists,afro dancehall,2014,240306,0,0.701,0.324,0.658,0.0,0.0973,-6.878,0.0618,107.037,4
+Say,Super Sun,BEZ,Missing,2011,255403,0,0.481,0.234,0.533,0.000185,0.15,-7.405,0.132,82.738,4
+Gallardo (feat. Davido),Good Music,Various Artists,Missing,2014,208536,0,0.792,0.506,0.79,1.9e-06,0.123,-6.299,0.067,129.944,4
+Limpopo,Good Music,Various Artists,afro dancehall,2014,258246,0,0.689,0.449,0.959,0.00871,0.186,-3.058,0.133,125.022,4
+Sanko,Afro Nation,Various Artists,afro dancehall,2014,187272,0,0.764,0.0385,0.837,0.00174,0.079,-3.4,0.102,102.992,4
+Jasi,Jasi,Banky W.,afro dancehall,2013,187116,29,0.727,0.0615,0.906,0.814,0.0854,-3.76,0.21,127.044,4
+Girlie 'O' Remix,Girlie 'O' Remix,Patoranking,afro dancehall,2014,235514,8,0.678,0.295,0.785,0.0,0.0807,-5.716,0.0505,106.351,4
+Repete,Blackmagic (Version 2.0),Blackmagic,nigerian pop,2013,218186,31,0.74,0.062,0.523,0.00108,0.0958,-9.024,0.18,130.649,5
+Give It to Me,Give It to Me,Skales,afro dancehall,2014,227473,9,0.928,0.116,0.845,0.0,0.133,-5.1,0.299,126.912,4
+Shake Body,Shake Body,Skales,afro dancehall,2014,208873,0,0.857,0.193,0.875,2.6e-05,0.057,-4.06,0.0554,130.993,4
+Jacuzzi (feat. Ice Prince),Lovely Afrolife Tunes,Various Artists,afro dancehall,2014,237244,0,0.911,0.319,0.833,5.44e-05,0.04,-3.635,0.0422,123.022,4
+Skelewu,Skelewu,DaVido,afropop,2014,187506,0,0.832,0.144,0.851,1.85e-06,0.0583,-3.098,0.109,121.009,4
+Garawa,Nicki Minaj,Tee Blaq,azontobeats,2014,222538,0,0.818,0.0345,0.936,9.6e-06,0.116,-3.121,0.0543,124.026,4
+Iwotago (feat. B Red),Afro Lovely Mix,Various Artists,afro dancehall,2014,201586,0,0.463,0.372,0.876,0.0,0.617,-4.853,0.345,172.827,3
+Bombay (feat. Wizkid),Bombay (feat. Wizkid),Phyno,afro dancehall,2014,200855,16,0.675,0.215,0.931,3.73e-06,0.381,-2.941,0.0661,103.017,4
+Oyo (On Your Own),Afro Lovely Mix,Various Artists,Missing,2014,240065,0,0.638,0.158,0.771,0.00476,0.103,-6.94,0.173,114.898,4
+Rara,Rara,Sean Tizzle,afro dancehall,2014,182543,6,0.732,0.338,0.902,0.0,0.175,-3.486,0.146,128.103,4
+All Of You,Naija Hits 2012-2013,This Is Africa,afropop,2013,187376,0,0.738,0.0558,0.654,1.23e-05,0.315,-5.952,0.0802,90.053,4
+Ojuelegba,Ayo,WizKid,afro dancehall,2014,216242,55,0.644,0.146,0.748,0.000346,0.203,-5.862,0.0349,100.037,4
+Murder (feat. Wale),Ayo,WizKid,afro dancehall,2014,242443,24,0.535,0.37,0.862,0.0,0.564,-3.482,0.317,102.958,4
+Chop Am,Chop Am,Reekado Banks,afro dancehall,2014,224522,24,0.725,0.018,0.915,0.0,0.0584,-4.036,0.219,128.973,4
+Ori Owo (feat. Tillaman),Love Afro Dancehall,Various Artists,afropop,2014,246256,0,0.742,0.194,0.933,4.06e-05,0.0543,-3.83,0.0692,125.978,4
+Ukwu,"Good Music, Vol. 1",Various Artists,afro dancehall,2014,187924,0,0.78,0.253,0.822,0.00711,0.683,-6.486,0.252,129.848,4
+Eledumare,"Good Music, Vol. 1",Various Artists,afro dancehall,2014,209581,0,0.786,0.0523,0.946,0.0,0.0368,-2.303,0.0781,122.004,4
+Sukus,Sukus,MC Galaxy,afropop,2014,209826,0,0.913,0.0652,0.894,0.00692,0.0837,-2.948,0.265,137.253,4
+"Adaobi (feat. Don Jazzy, Di'ja, Reekado Banks & Korede Bello)","Adaobi (feat. Don Jazzy, Di'ja, Reekado Banks & Korede Bello)",Mavins,afro dancehall,2014,260063,38,0.701,0.000665,0.898,0.185,0.156,-5.932,0.0837,128.045,4
+Shoki Remix,Shoki Remix,Lil Kesh,afro dancehall,2014,239666,5,0.744,0.405,0.918,0.0,0.174,-2.385,0.253,136.047,4
+Welu,Welu,Teddy-A,Missing,2014,221538,14,0.657,0.0908,0.971,4.8e-05,0.44,-1.371,0.134,194.977,3
+In My Bed,Ayo,WizKid,afro dancehall,2014,230557,39,0.851,0.00424,0.77,0.0,0.0342,-5.667,0.0486,125.006,4
+Baby Hello,Ghana Style,Various Artists,afro dancehall,2000,209162,0,0.813,0.0895,0.931,0.0,0.104,-2.465,0.0849,132.006,4
+Vasa Shiii,Vasa Shiii,Tee Blaq,azontobeats,2014,198347,0,0.84,0.0243,0.765,0.0455,0.0838,-6.507,0.0494,126.999,4
+Oh Baby (You & I),"Lanre Davies Presents Welcome to the Factory Afrobeat Bangers, Vol. 2",Various Artists,afropop,2014,218592,0,0.714,0.313,0.932,0.00182,0.0537,0.582,0.0999,128.021,4
+Hakuna Matata,Takeover,KCee,afro dancehall,2013,223241,14,0.747,0.241,0.967,0.00271,0.0344,-1.72,0.138,131.026,4
+Magical,Magical,Tobby Potter,Missing,2014,220003,0,0.88,0.0112,0.855,0.000169,0.109,-3.527,0.229,126.04,4
+Poco A Poco,The Evolution,Triplemg,Missing,2014,202240,0,0.759,0.247,0.691,1.23e-05,0.0339,-9.682,0.0857,125.987,4
+Shekini,Double Trouble,P-Square,afro dancehall,2014,218095,50,0.82,0.0226,0.857,0.0163,0.0283,-4.862,0.0756,94.459,3
+Tangerine (feat. Selebobo),King of Queens,Yemi Alade,afro dancehall,2014,226453,1,0.847,0.251,0.909,2.97e-06,0.0728,-3.791,0.353,126.085,4
+YoYo (Remix) [feat. J.Martins],YoYo (Remix) [feat. J.Martins],Selebobo,afro dancehall,2012,235853,23,0.74,0.0785,0.894,2.07e-05,0.0729,-6.846,0.0842,125.013,4
+Jeje,Jeje,DJ Xclusive,gqom,2014,236329,25,0.811,0.398,0.93,0.0,0.304,-3.012,0.209,127.989,4
+Osey,Osey,Nero X,christian afrobeat,2015,223946,28,0.795,0.343,0.642,0.0,0.0356,-4.792,0.0853,108.988,4
+Your Body Hot (feat. Attitude),Man of the Year,Skales,afro dancehall,2015,229906,20,0.838,0.0358,0.931,0.0,0.0985,-3.723,0.13,128.102,4
+Shuperu - Remix,Shuperu (Remix),Orezi,afro dancehall,2015,215320,14,0.786,0.195,0.806,0.0,0.161,-4.232,0.254,124.068,4
+Paper,Paper,Boj,afro dancehall,2014,192000,0,0.8,0.526,0.455,0.818,0.107,-11.184,0.0414,110.004,4
+Owo Ni Koko,Beta Hitz,Various Artists,afropop,2015,194089,0,0.735,0.138,0.864,3.19e-05,0.311,-3.497,0.0725,121.016,4
+Slow Down,Refuse To Be Broke,R2Bees,afro dancehall,2014,259373,0,0.519,0.109,0.721,0.0,0.275,-3.148,0.358,135.733,5
+Anything,Anything,Tekno,afropop,2015,208852,2,0.879,0.224,0.916,0.0,0.0877,-4.602,0.157,126.031,4
+Go Mad (feat. Mista Silva),Go Mad (feat. Mista Silva) - Single,Kwamz & Flava,afro dancehall,2015,171859,0,0.804,0.223,0.513,0.00073,0.0866,-9.695,0.0994,109.947,4
+Baloba (feat. DJ Leo),Baloba (feat. DJ Leo),BM,azontobeats,2015,216160,18,0.678,0.437,0.865,0.0193,0.0963,-4.134,0.0705,197.969,3
+Je Kan Mo,Je Kan Mo,Skales,afro dancehall,2015,195800,26,0.863,0.0366,0.896,0.000152,0.0504,-3.13,0.101,128.029,4
+My Woman My Everything,Mid Year Hitz Selection,Various Artists,afro dancehall,2015,233770,0,0.899,0.0497,0.846,0.0,0.0668,-2.654,0.0634,112.009,4
+In My Head,In My Head,Solidstar,afro dancehall,2015,224773,0,0.698,0.322,0.916,5.84e-05,0.133,-2.422,0.0785,124.082,4
+Kwaroro,Kwaroro,J. Martins,afro dancehall,2015,193960,10,0.735,0.632,0.918,0.193,0.0718,-2.582,0.0355,127.954,4
+Concert Party,Afro Escape,Various Artists,afro dancehall,2015,252708,0,0.602,0.177,0.883,4.38e-06,0.119,-6.183,0.0778,154.01,4
+Loko,Applaudise,Iyanya,afro dancehall,2015,223159,0,0.729,0.238,0.864,0.0,0.195,-3.942,0.0668,121.058,4
+Gift,Applaudise,Iyanya,afro dancehall,2015,278280,0,0.809,0.049,0.806,0.0,0.0659,-6.547,0.234,123.997,4
+Macoma,Applaudise,Iyanya,afro dancehall,2015,213426,0,0.816,0.114,0.961,0.0085,0.137,-2.204,0.139,106.972,4
diff --git a/open-machine-learning-jupyter-book/assignments/ml-advanced/clustering/introduction-to-clustering.md b/open-machine-learning-jupyter-book/assignments/ml-advanced/clustering/Research-other-visualizations-for-clustering.md
similarity index 53%
rename from open-machine-learning-jupyter-book/assignments/ml-advanced/clustering/introduction-to-clustering.md
rename to open-machine-learning-jupyter-book/assignments/ml-advanced/clustering/Research-other-visualizations-for-clustering.md
index 2658ba7168..34ec6f49c2 100644
--- a/open-machine-learning-jupyter-book/assignments/ml-advanced/clustering/introduction-to-clustering.md
+++ b/open-machine-learning-jupyter-book/assignments/ml-advanced/clustering/Research-other-visualizations-for-clustering.md
@@ -1,12 +1,8 @@
-# Instructions to clustering
-
-In this section, you have worked with some visualization techniques to get a grasp on plotting your data in preparation for clustering it. Scatterplots, in particular are useful for finding groups of objects. Research different ways and different libraries to create scatterplots and document your work in a notebook. You can use the data from this lesson, other lessons, or data you source yourself (please credit its source, however, in your notebook). Plot some data using scatterplots and explain what you discover.
-
# Research other visualizations for clustering
## Instructions
-In this lesson, you have worked with some visualization techniques to get a grasp on plotting your data in preparation for clustering it. Scatterplots, in particular are useful for finding groups of objects. Research different ways and different libraries to create scatterplots and document your work in a notebook. You can use the data from this lesson, other lessons, or data you source yourself (please credit its source, however, in your notebook). Plot some data using scatterplots and explain what you discover.
+In this section, you have worked with some visualization techniques to get a grasp on plotting your data in preparation for clustering it. Scatterplots, in particular are useful for finding groups of objects. Research different ways and different libraries to create scatterplots and document your work in a notebook. You can use the data from this section, other sections, or data you source yourself (please credit its source, however, in your notebook). Plot some data using scatterplots and explain what you discover.
## Rubric
@@ -15,4 +11,5 @@ In this lesson, you have worked with some visualization techniques to get a gras
| | A notebook is presented with five well-documented scatterplots | A notebook is presented with fewer than five scatterplots and it is less well documented | An incomplete notebook is presented |
## Acknowledgments
-Thanks to Microsoft for creating the open-source course Data Science for Beginners. It inspires the majority of the content in this chapter.
\ No newline at end of file
+
+Thanks to Microsoft for creating the open-source course [Data](https://github.com/microsoft/Data-Science-For-Beginners) Science for Beginners](https://github.com/microsoft/Data-Science-For-Beginners). It inspires the majority of the content in this chapter
\ No newline at end of file
diff --git a/open-machine-learning-jupyter-book/assignments/ml-advanced/clustering/k-means-clustering.md b/open-machine-learning-jupyter-book/assignments/ml-advanced/clustering/Try-different-clustering-methods.md.md
similarity index 60%
rename from open-machine-learning-jupyter-book/assignments/ml-advanced/clustering/k-means-clustering.md
rename to open-machine-learning-jupyter-book/assignments/ml-advanced/clustering/Try-different-clustering-methods.md.md
index 0045da5749..6ebafa700d 100644
--- a/open-machine-learning-jupyter-book/assignments/ml-advanced/clustering/k-means-clustering.md
+++ b/open-machine-learning-jupyter-book/assignments/ml-advanced/clustering/Try-different-clustering-methods.md.md
@@ -1,6 +1,6 @@
-# K means clustering
+# Try different clustering methods
-In this section you learned about K-Means clustering. Sometimes K-Means is not appropriate for your data. Create a notebook using data either from these lessons or from somewhere else (credit your source) and show a different clustering method NOT using K-Means. What did you learn?
+In this section you learned about K-Means clustering. Sometimes K-Means is not appropriate for your data. Create a notebook using data either from these sections or from somewhere else (credit your source) and show a different clustering method NOT using K-Means. What did you learn?
## Rubric
@@ -9,4 +9,5 @@ In this section you learned about K-Means clustering. Sometimes K-Means is not a
| | A notebook is presented with a well-documented clustering model | A notebook is presented without good documentation and/or incomplete | Incomplete work is submitted |
## Acknowledgments
-Thanks to Microsoft for creating the open-source course Data Science for Beginners. It inspires the majority of the content in this chapter.
\ No newline at end of file
+
+Thanks to Microsoft for creating the open-source course [Data](https://github.com/microsoft/Data-Science-For-Beginners) Science for Beginners](https://github.com/microsoft/Data-Science-For-Beginners). It inspires the majority of the content in this chapter.
diff --git a/open-machine-learning-jupyter-book/ml-advanced/clustering/clustering-models-for-machine-learning.md b/open-machine-learning-jupyter-book/ml-advanced/clustering/clustering-models-for-machine-learning.md
index 7d210a51f5..c25b9401d3 100644
--- a/open-machine-learning-jupyter-book/ml-advanced/clustering/clustering-models-for-machine-learning.md
+++ b/open-machine-learning-jupyter-book/ml-advanced/clustering/clustering-models-for-machine-learning.md
@@ -13,21 +13,19 @@ kernelspec:
name: python3
---
-# Introduction
+# Clustering models for Machine Learning
Clustering is a machine learning task where it looks to find objects that resemble one another and group these into groups called clusters. What differs clustering from other approaches in machine learning, is that things happen automatically, in fact, it's fair to say it's the opposite of supervised learning.
Nigeria's diverse audience has diverse musical tastes, let's look at some music popular in Nigeria. This dataset includes data about various songs' 'danceability' score, 'acousticness', loudness, 'speechiness', popularity and energy. It will be interesting to discover patterns in this data!
-```{figure} (../../../images/clustering/turntable.png)
+```{figure} ../../../images/clustering/turntable.png
---
name: A turntable
---
+A turntable
+```
In this series of sections, you will discover new ways to analyze data using clustering techniques. Clustering is particularly useful when your dataset lacks labels. If it does have labels, then classification techniques such as those you learned in previous sections might be more useful. But in cases where you are looking to group unlabelled data, clustering is a great way to discover patterns.
----
-
-```{tableofcontents}
-
-```
+---
\ No newline at end of file
diff --git a/open-machine-learning-jupyter-book/ml-advanced/clustering/introduction-to-clustering.md b/open-machine-learning-jupyter-book/ml-advanced/clustering/introduction-to-clustering.md
index d497867827..485e78a5d8 100644
--- a/open-machine-learning-jupyter-book/ml-advanced/clustering/introduction-to-clustering.md
+++ b/open-machine-learning-jupyter-book/ml-advanced/clustering/introduction-to-clustering.md
@@ -13,16 +13,12 @@ kernelspec:
name: python3
---
-
# Introduction to clustering
Clustering is a type of Unsupervised Learning that presumes that a dataset is unlabelled or that its inputs are not matched with predefined outputs. It uses various algorithms to sort through unlabeled data and provide groupings according to patterns it discerns in the data.
## Introduction
-Take a minute to think about the uses of clustering. In real life, clustering happens whenever you have a pile of laundry and need to sort out your family members' clothes. In data science, clustering happens when trying to analyze a user's preferences, or determine the characteristics of any unlabeled dataset. Clustering, in a way, helps make sense of chaos, like a sock drawer.
-
-
In a professional setting, clustering can be used to determine things like market segmentation, determining what age groups buy what items, for example. Another use would be anomaly detection, perhaps to detect fraud from a dataset of credit card transactions. Or you might use clustering to determine tumors in a batch of medical scans.
Think a minute about how you might have encountered clustering 'in the wild', in a banking, e-commerce, or business setting.
@@ -33,8 +29,7 @@ Interestingly, cluster analysis originated in the fields of Anthropology and Psy
Alternately, you could use it for grouping search results - by shopping links, images, or reviews, for example. Clustering is useful when you have a large dataset that you want to reduce and on which you want to perform more granular analysis, so the technique can be used to learn about data before other models are constructed.
-Once your data is organized in clusters, you assign it a cluster Id, and this technique can be useful when preserving a dataset's privacy; you can instead refer to a data point by its cluster id, rather than by more revealing identifiable data. Can you think of other reasons why you'd refer to a cluster Id rather than other elements of the cluster to identify it?
-
+
## Getting started with clustering
@@ -53,49 +48,42 @@ Scikit-learn offers a large array of methods to perform clustering. The type you
| Gaussian mixtures | flat geometry, inductive |
| BIRCH | large dataset with outliers, inductive |
-```{note}
-How we create clusters has a lot to do with how we gather up the data points into groups.
-```
-```{note}
-'Transductive' vs. 'inductive'
+How we create clusters has a lot to do with how we gather up the data points into groups. Let's unpack some vocabulary:
+
+**'Transductive' vs. 'inductive'**
+
Transductive inference is derived from observed training cases that map to specific test cases. Inductive inference is derived from training cases that map to general rules which are only then applied to test cases.
-```
An example: Imagine you have a dataset that is only partially labelled. Some things are 'records', some 'cds', and some are blank. Your job is to provide labels for the blanks. If you choose an inductive approach, you'd train a model looking for 'records' and 'cds', and apply those labels to your unlabeled data. This approach will have trouble classifying things that are actually 'cassettes'. A transductive approach, on the other hand, handles this unknown data more effectively as it works to group similar items together and then applies a label to a group. In this case, clusters might reflect 'round musical things' and 'square musical things'.
-```{note}
- 'Non-flat' vs. 'flat' geometry
-```
-
+**'Non-flat' vs. 'flat' geometry'**
+
Derived from mathematical terminology, non-flat vs. flat geometry refers to the measure of distances between points by either 'flat' (Euclidean) or 'non-flat' (non-Euclidean) geometrical methods.
-
'Flat' in this context refers to Euclidean geometry (parts of which are taught as 'plane' geometry), and non-flat refers to non-Euclidean geometry. What does geometry have to do with machine learning? Well, as two fields that are rooted in mathematics, there must be a common way to measure distances between points in clusters, and that can be done in a 'flat' or 'non-flat' way, depending on the nature of the data. Euclidean distances are measured as the length of a line segment between two points. Non-Euclidean distances are measured along a curve. If your data, visualized, seems to not exist on a plane, you might need to use a specialized algorithm to handle it.
-```{note}
-Infographic by Dasani Madipalli
-
-```{figure} (../../../images/clustering/flat-nonflat.png)
+```{figure} ../../../images/clustering/flat-nonflat.png
---
name: Flat vs Nonflat Geometry Infographic
---
-
-```{note}
- ๐ 'Distances
- Clusters are defined by their distance matrix, e.g. the distances between points. This distance can be measured in a few ways. Euclidean clusters are defined by the average of the point values, and contain a 'centroid' or center point. Distances are thus measured by the distance to that centroid. Non-Euclidean distances refer to 'clustroids', the point closest to other points. Clustroids in turn can be defined in various ways.
+Flat vs Nonflat Geometry Infographic
+(Infographic by Dasani Madipalli)
```
-```{note}
-๐ 'Constrained'
- Constrained Clustering introduces 'semi-supervised' learning into this unsupervised method. The relationships between points are flagged as 'cannot link' or 'must-link' so some rules are forced on the dataset.
-```
+**Distances**
+
+Clusters are defined by their distance matrix, e.g. the distances between points. This distance can be measured in a few ways. Euclidean clusters are defined by the average of the point values, and contain a 'centroid' or center point. Distances are thus measured by the distance to that centroid. Non-Euclidean distances refer to 'clustroids', the point closest to other points. Clustroids in turn can be defined in various ways.
+
+**Constrained**
+
+Constrained Clustering introduces 'semi-supervised' learning into this unsupervised method. The relationships between points are flagged as 'cannot link' or 'must-link' so some rules are forced on the dataset.
An example: If an algorithm is set free on a batch of unlabelled or semi-labelled data, the clusters it produces may be of poor quality. In the example above, the clusters might group 'round music things' and 'square music things' and 'triangular things' and 'cookies'. If given some constraints, or rules to follow ("the item must be made of plastic", "the item needs to be able to produce music") this can help 'constrain' the algorithm to make better choices.
-```{note}
-๐ 'Density'
+**Density**
+
Data that is 'noisy' is considered to be 'dense'. The distances between points in each of its clusters may prove, on examination, to be more or less dense, or 'crowded' and thus this data needs to be analyzed with the appropriate clustering method. This article demonstrates the difference between using K-Means clustering vs. HDBSCAN algorithms to explore a noisy dataset with uneven cluster density.
-```
+
## Clustering algorithms
@@ -103,23 +91,21 @@ There are over 100 clustering algorithms, and their use depends on the nature of
- **Hierarchical clustering**. If an object is classified by its proximity to a nearby object, rather than to one farther away, clusters are formed based on their members' distance to and from other objects. Scikit-learn's agglomerative clustering is hierarchical.
-```{note}
-Infographic by Dasani Madipalli
-
-```{figure} (../../../images/clustering/hierarchical.png)
+```{figure} ../../../images/clustering/hierarchical.png
---
name: Hierarchical clustering Infographic
---
+Hierarchical clustering Infographic Dasani Madipalli
+```
- **Centroid clustering**. This popular algorithm requires the choice of 'k', or the number of clusters to form, after which the algorithm determines the center point of a cluster and gathers data around that point. K-means clustering is a popular version of centroid clustering. The center is determined by the nearest mean, thus the name. The squared distance from the cluster is minimized.
- ```{note}
-Infographic by Dasani Madipalli
-
-```{figure} (../../../images/clustering/centroid.png)
+```{figure} ../../../images/clustering/centroid.png
---
name: Centroid clustering Infographic
---
+Centroid clustering Infographic by Dasani Madipalli
+```
- **Distribution-based clustering**. Based in statistical modeling, distribution-based clustering centers on determining the probability that a data point belongs to a cluster, and assigning it accordingly. Gaussian mixture methods belong to this type.
@@ -135,122 +121,57 @@ Clustering as a technique is greatly aided by proper visualization, so let's get
1. Import the `Seaborn` package for good data visualization.
- ```{code-cell}
- !pip install seaborn
- ```
+```{code-cell}
+!pip install seaborn
+```
1. Append the song data from _nigerian-songs.csv_. Load up a dataframe with some data about the songs. Get ready to explore this data by importing the libraries and dumping out the data:
- ```{code-cell}
- import matplotlib.pyplot as plt
- import pandas as pd
-
- df = pd.read_csv("../data/nigerian-songs.csv")
- df.head()
- ```
+```{code-cell}
+import matplotlib.pyplot as plt
+import pandas as pd
- Check the first few lines of data:
+df = pd.read_csv("../../assets/data/nigerian-songs.csv")
+df.head()
+```
-```{figure} (../../../images/clustering/df-head.png)
----
-name: df-head
----
+Check the first few lines of data:
1. Get some information about the dataframe, calling `info()`:
- ```{code-cell}
- df.info()
- ```
-
- The output looking like so:
-
- ```output
-
- RangeIndex: 530 entries, 0 to 529
- Data columns (total 16 columns):
- # Column Non-Null Count Dtype
- --- ------ -------------- -----
- 0 name 530 non-null object
- 1 album 530 non-null object
- 2 artist 530 non-null object
- 3 artist_top_genre 530 non-null object
- 4 release_date 530 non-null int64
- 5 length 530 non-null int64
- 6 popularity 530 non-null int64
- 7 danceability 530 non-null float64
- 8 acousticness 530 non-null float64
- 9 energy 530 non-null float64
- 10 instrumentalness 530 non-null float64
- 11 liveness 530 non-null float64
- 12 loudness 530 non-null float64
- 13 speechiness 530 non-null float64
- 14 tempo 530 non-null float64
- 15 time_signature 530 non-null int64
- dtypes: float64(8), int64(4), object(4)
- memory usage: 66.4+ KB
- ```
+```{code-cell}
+df.info()
+```
1. Double-check for null values, by calling `isnull()` and verifying the sum being 0:
- ```{code-cell}
- df.isnull().sum()
- ```
-
- Looking good:
-
- ```output
- name 0
- album 0
- artist 0
- artist_top_genre 0
- release_date 0
- length 0
- popularity 0
- danceability 0
- acousticness 0
- energy 0
- instrumentalness 0
- liveness 0
- loudness 0
- speechiness 0
- tempo 0
- time_signature 0
- dtype: int64
- ```
+```{code-cell}
+df.isnull().sum()
+```
1. Describe the data:
- ```{code-cell}
- df.describe()
- ```
-
-```{figure} (../../../images/clustering/describe-the-data.png)
----
-name: describe-the-data
----
+```{code-cell}
+df.describe()
+```
```{note}
- If we are working with clustering, an unsupervised method that does not require labeled data, why are we showing this data with labels? In the data exploration phase, they come in handy, but they are not necessary for the clustering algorithms to work. You could just as well remove the column headers and refer to the data by column number.
- ```
+If we are working with clustering, an unsupervised method that does not require labeled data, why are we showing this data with labels? In the data exploration phase, they come in handy, but they are not necessary for the clustering algorithms to work. You could just as well remove the column headers and refer to the data by column number.
+```
Look at the general values of the data. Note that popularity can be '0', which show songs that have no ranking. Let's remove those shortly.
1. Use a barplot to find out the most popular genres:
- ```{code-cell}
- import seaborn as sns
-
- top = df['artist_top_genre'].value_counts()
- plt.figure(figsize=(10,7))
- sns.barplot(x=top[:5].index,y=top[:5].values)
- plt.xticks(rotation=45)
- plt.title('Top genres',color = 'blue')
- ```
-
-```{figure} (../../../images/clustering/popular.png)
----
-name: most popular
----
+```{code-cell}
+import seaborn as sns
+
+top = df['artist_top_genre'].value_counts()
+plt.figure(figsize=(10,7))
+sns.barplot(x=top[:5].index,y=top[:5].values)
+plt.xticks(rotation=45)
+plt.title('Top genres',color = 'blue')
+```
```{note}
If you'd like to see more top values, change the top `[:5]` to a bigger value, or remove it to see all.
@@ -258,51 +179,42 @@ If you'd like to see more top values, change the top `[:5]` to a bigger value, o
Note, when the top genre is described as 'Missing', that means that Spotify did not classify it, so let's get rid of it.
-1. Get rid of missing data by filtering it out
-
- ```{code-cell}
- df = df[df['artist_top_genre'] != 'Missing']
- top = df['artist_top_genre'].value_counts()
- plt.figure(figsize=(10,7))
- sns.barplot(x=top.index,y=top.values)
- plt.xticks(rotation=45)
- plt.title('Top genres',color = 'blue')
- ```
+2. Get rid of missing data by filtering it out
- Now recheck the genres:
-
-```{figure} (../../../images/clustering/all-genres.png)
----
-name: all-genres
----
-
-1. By far, the top three genres dominate this dataset. Let's concentrate on `afro dancehall`, `afropop`, and `nigerian pop`, additionally filter the dataset to remove anything with a 0 popularity value (meaning it was not classified with a popularity in the dataset and can be considered noise for our purposes):
+```{code-cell}
+df = df[df['artist_top_genre'] != 'Missing']
+top = df['artist_top_genre'].value_counts()
+plt.figure(figsize=(10,7))
+sns.barplot(x=top.index,y=top.values)
+plt.xticks(rotation=45)
+plt.title('Top genres',color = 'blue')
+```
- ```{code-cell}
- df = df[(df['artist_top_genre'] == 'afro dancehall') | (df['artist_top_genre'] == 'afropop') | (df['artist_top_genre'] == 'nigerian pop')]
- df = df[(df['popularity'] > 0)]
- top = df['artist_top_genre'].value_counts()
- plt.figure(figsize=(10,7))
- sns.barplot(x=top.index,y=top.values)
- plt.xticks(rotation=45)
- plt.title('Top genres',color = 'blue')
- ```
+3. By far, the top three genres dominate this dataset. Let's concentrate on `afro dancehall`, `afropop`, and `nigerian pop`, additionally filter the dataset to remove anything with a 0 popularity value (meaning it was not classified with a popularity in the dataset and can be considered noise for our purposes):
-1. Do a quick test to see if the data correlates in any particularly strong way:
+```{code-cell}
+df = df[(df['artist_top_genre'] == 'afro dancehall') | (df['artist_top_genre'] == 'afropop') | (df['artist_top_genre'] == 'nigerian pop')]
+df = df[(df['popularity'] > 0)]
+top = df['artist_top_genre'].value_counts()
+plt.figure(figsize=(10,7))
+sns.barplot(x=top.index,y=top.values)
+plt.xticks(rotation=45)
+plt.title('Top genres',color = 'blue')
+```
- ```{code-cell}
- corrmat = df.corr()
- f, ax = plt.subplots(figsize=(12, 9))
- sns.heatmap(corrmat, vmax=.8, square=True)
- ```
+4. Do a quick test to see if the data correlates in any particularly strong way:
- 
+```{code-cell}
+corrmat = df.corr()
+f, ax = plt.subplots(figsize=(12, 9))
+sns.heatmap(corrmat, vmax=.8, square=True)
+```
- The only strong correlation is between `energy` and `loudness`, which is not too surprising, given that loud music is usually pretty energetic. Otherwise, the correlations are relatively weak. It will be interesting to see what a clustering algorithm can make of this data.
+The only strong correlation is between `energy` and `loudness`, which is not too surprising, given that loud music is usually pretty energetic. Otherwise, the correlations are relatively weak. It will be interesting to see what a clustering algorithm can make of this data.
- ```{note}
- Note that correlation does not imply causation! We have proof of correlation but no proof of causation. An amusing web site has some visuals that emphasize this point.
- ```
+```{note}
+Note that correlation does not imply causation! We have proof of correlation but no proof of causation. An amusing web site has some visuals that emphasize this point.
+```
Is there any convergence in this dataset around a song's perceived popularity and danceability? A FacetGrid shows that there are concentric circles that line up, regardless of genre. Could it be that Nigerian tastes converge at a certain level of danceability for this genre?
@@ -314,68 +226,47 @@ Are these three genres significantly different in the perception of their dancea
1. Examine our top three genres data distribution for popularity and danceability along a given x and y axis.
- ```{code-cell}
-
- sns.set_theme(style="ticks")
-
- g = sns.jointplot(
- data=df,
- x="popularity", y="danceability", hue="artist_top_genre",
- kind="kde",
- )
- ```
+```{code-cell}
+sns.set_theme(style="ticks")
+g = sns.jointplot(
+ data=df,
+ x="popularity", y="danceability", hue="artist_top_genre",
+ kind="kde",
+)
+```
- You can discover concentric circles around a general point of convergence, showing the distribution of points.
+You can discover concentric circles around a general point of convergence, showing the distribution of points.
- ```{note}
- Note that this example uses a KDE (Kernel Density Estimate) graph that represents the data using a continuous probability density curve. This allows us to interpret data when working with multiple distributions.
- ```
+```{note}
+Note that this example uses a KDE (Kernel Density Estimate) graph that represents the data using a continuous probability density curve. This allows us to interpret data when working with multiple distributions.
+```
- In general, the three genres align loosely in terms of their popularity and danceability. Determining clusters in this loosely-aligned data will be a challenge:
+In general, the three genres align loosely in terms of their popularity and danceability. Determining clusters in this loosely-aligned data will be a challenge:
-```{figure} (../../../images/clustering/distribution.png)
+```{figure} ../../../images/clustering/distribution.png
---
name: distribution
---
+istribution
+```
1. Create a scatter plot:
- ```{code-cell}
- sns.FacetGrid(df, hue="artist_top_genre", size=5) \
- .map(plt.scatter, "popularity", "danceability") \
- .add_legend()
- ```
-
+```{code-cell}
+sns.FacetGrid(df, hue="artist_top_genre") \
+ .map(plt.scatter, "popularity", "danceability") \
+ .add_legend()
+```
A scatterplot of the same axes shows a similar pattern of convergence
-
-
In general, for clustering, you can use scatterplots to show clusters of data, so mastering this type of visualization is very useful. In the next section, we will take this filtered data and use k-means clustering to discover groups in this data that see to overlap in interesting ways.
---
## Your turn! ๐
-[Research other visualizations for clustering](../../assignments/ml-advanced/clustering/introduction-to-clustering.md)
-
-## Self study
-
-Before you apply clustering algorithms, as we have learned, it's a good idea to understand the nature of your dataset.There are several resources available.
-
-- [right clustering algorithm](https://www.kdnuggets.com/2019/10/right-clustering-algorithm.html)
-- [clustering algorithms behave](https://www.freecodecamp.org/news/8-clustering-algorithms-in-machine-learning-that-all-data-scientists-should-know/)
-
-## Acknowledgments
----
-
-Thanks to Microsoft for creating the open-source course [Data](https://github.com/microsoft/Data-Science-For-Beginners) Science for Beginners](https://github.com/microsoft/Data-Science-For-Beginners). It inspires the majority of the content in this chapter.
-
-
-[Research other visualizations for clustering](../../assignments/ml-advanced/clustering/introduction-to-clustering.md)
+[Research other visualizations for clustering](../../assignments/ml-advanced/clustering/Research-other-visualizations-for-clustering.md)
## Self study
@@ -387,9 +278,3 @@ Before you apply clustering algorithms, as we have learned, it's a good idea to
## Acknowledgments
Thanks to Microsoft for creating the open-source course [Data](https://github.com/microsoft/Data-Science-For-Beginners) Science for Beginners](https://github.com/microsoft/Data-Science-For-Beginners). It inspires the majority of the content in this chapter.
-
----
-
-```{bibliography}
-:filter: docname in docnames
-```
diff --git a/open-machine-learning-jupyter-book/ml-advanced/clustering/k-means-clustering.md b/open-machine-learning-jupyter-book/ml-advanced/clustering/k-means-clustering.md
index 6206def2f8..71bff10205 100644
--- a/open-machine-learning-jupyter-book/ml-advanced/clustering/k-means-clustering.md
+++ b/open-machine-learning-jupyter-book/ml-advanced/clustering/k-means-clustering.md
@@ -30,20 +30,21 @@ K-Means Clustering is a method derived from the domain of signal processing. It
The clusters can be visualized as Voronoi diagrams, which include a point (or 'seed') and its corresponding region.
-```{note}
-infographic by Jen Looper
-
-```{figure} (../../../images/clustering/voronoi.png)
+```{figure} ../../../images/clustering/voronoi.png
---
name: voronoi diagram
---
+voronoi diagram
+infographic by Jen Looper
+```
The K-Means clustering process executes in a three-step process):
-1. The algorithm selects k-number of center points by sampling from the dataset. After this, it loops:
- 1. It assigns each sample to the nearest centroid.
- 2. It creates new centroids by taking the mean value of all of the samples assigned to the previous centroids.
- 3. Then, it calculates the difference between the new and old centroids and repeats until the centroids are stabilized.
+- The algorithm selects k-number of center points by sampling from the dataset. After this, it loops:
+
+1. It assigns each sample to the nearest centroid.
+2. It creates new centroids by taking the mean value of all of the samples assigned to the previous centroids.
+3. Then, it calculates the difference between the new and old centroids and repeats until the centroids are stabilized.
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.
@@ -55,98 +56,109 @@ You will work in this section's _notebook.ipynb_ file that includes the data imp
Start by taking another look at the songs data.
+```{code-cell}
+!pip install seaborn
+import matplotlib.pyplot as plt
+import pandas as pd
+import seaborn as sns
+df = pd.read_csv("../../assets/data/nigerian-songs.csv")
+df = df[(df['artist_top_genre'] == 'afro dancehall') | (df['artist_top_genre'] == 'afropop') | (df['artist_top_genre'] == 'nigerian pop')]
+df = df[(df['popularity'] > 0)]
+top = df['artist_top_genre'].value_counts()
+plt.figure(figsize=(10,7))
+sns.barplot(x=top.index,y=top.values)
+plt.xticks(rotation=45)
+plt.title('Top genres',color = 'blue')
+```
+
1. Create a boxplot, calling `boxplot()` for each column:
- ```{code-cell}
- plt.figure(figsize=(20,20), dpi=200)
-
- plt.subplot(4,3,1)
- sns.boxplot(x = 'popularity', data = df)
-
- plt.subplot(4,3,2)
- sns.boxplot(x = 'acousticness', data = df)
-
- plt.subplot(4,3,3)
- sns.boxplot(x = 'energy', data = df)
-
- plt.subplot(4,3,4)
- sns.boxplot(x = 'instrumentalness', data = df)
-
- plt.subplot(4,3,5)
- sns.boxplot(x = 'liveness', data = df)
-
- plt.subplot(4,3,6)
- sns.boxplot(x = 'loudness', data = df)
-
- plt.subplot(4,3,7)
- sns.boxplot(x = 'speechiness', data = df)
-
- plt.subplot(4,3,8)
- sns.boxplot(x = 'tempo', data = df)
-
- plt.subplot(4,3,9)
- sns.boxplot(x = 'time_signature', data = df)
-
- plt.subplot(4,3,10)
- sns.boxplot(x = 'danceability', data = df)
-
- plt.subplot(4,3,11)
- sns.boxplot(x = 'length', data = df)
-
- plt.subplot(4,3,12)
- sns.boxplot(x = 'release_date', data = df)
- ```
-
- This data is a little noisy: by observing each column as a boxplot, you can see outliers.
-
-```{figure} (../../../images/clustering/boxplots.png)
----
-name: outliers
----
+```{code-cell}
+plt.figure(figsize=(20,20), dpi=200)
+
+plt.subplot(4,3,1)
+sns.boxplot(x = 'popularity', data = df)
+
+plt.subplot(4,3,2)
+sns.boxplot(x = 'acousticness', data = df)
+
+plt.subplot(4,3,3)
+sns.boxplot(x = 'energy', data = df)
+
+plt.subplot(4,3,4)
+sns.boxplot(x = 'instrumentalness', data = df)
+
+plt.subplot(4,3,5)
+sns.boxplot(x = 'liveness', data = df)
+
+plt.subplot(4,3,6)
+sns.boxplot(x = 'loudness', data = df)
+
+plt.subplot(4,3,7)
+sns.boxplot(x = 'speechiness', data = df)
+
+plt.subplot(4,3,8)
+sns.boxplot(x = 'tempo', data = df)
+
+plt.subplot(4,3,9)
+sns.boxplot(x = 'time_signature', data = df)
+
+plt.subplot(4,3,10)
+sns.boxplot(x = 'danceability', data = df)
+
+plt.subplot(4,3,11)
+sns.boxplot(x = 'length', data = df)
+
+plt.subplot(4,3,12)
+sns.boxplot(x = 'release_date', data = df)
+```
+
+This data is a little noisy: by observing each column as a boxplot, you can see outliers.
+
You could go through the dataset and remove these outliers, but that would make the data pretty minimal.
-1. For now, choose which columns you will use for your clustering exercise. Pick ones with similar ranges and encode the `artist_top_genre` column as numeric data:
-
- ```{code-cell}
- from sklearn.preprocessing import LabelEncoder
- le = LabelEncoder()
-
- X = df.loc[:, ('artist_top_genre','popularity','danceability','acousticness','loudness','energy')]
-
- y = df['artist_top_genre']
-
- X['artist_top_genre'] = le.fit_transform(X['artist_top_genre'])
-
- y = le.transform(y)
- ```
-
-1. Now you need to pick how many clusters to target. You know there are 3 song genres that we carved out of the dataset, so let's try 3:
-
- ```{code-cell}
- from sklearn.cluster import KMeans
-
- nclusters = 3
- seed = 0
-
- km = KMeans(n_clusters=nclusters, random_state=seed)
- km.fit(X)
-
- # Predict the cluster for each data point
-
- y_cluster_kmeans = km.predict(X)
- y_cluster_kmeans
- ```
+2. For now, choose which columns you will use for your clustering exercise. Pick ones with similar ranges and encode the `artist_top_genre` column as numeric data:
+
+```{code-cell}
+from sklearn.preprocessing import LabelEncoder
+le = LabelEncoder()
+
+X = df.loc[:, ('artist_top_genre','popularity','danceability','acousticness','loudness','energy')]
+
+y = df['artist_top_genre']
+
+X['artist_top_genre'] = le.fit_transform(X['artist_top_genre'])
+
+y = le.transform(y)
+```
+
+3. Now you need to pick how many clusters to target. You know there are 3 song genres that we carved out of the dataset, so let's try 3:
+
+```{code-cell}
+from sklearn.cluster import KMeans
+
+nclusters = 3
+seed = 0
+
+km = KMeans(n_clusters=nclusters, random_state=seed)
+km.fit(X)
+
+# Predict the cluster for each data point
+
+y_cluster_kmeans = km.predict(X)
+y_cluster_kmeans
+```
You see an array printed out with predicted clusters (0, 1,or 2) for each row of the dataframe.
-1. Use this array to calculate a 'silhouette score':
+4. Use this array to calculate a 'silhouette score':
- ```{code-cell}
- from sklearn import metrics
- score = metrics.silhouette_score(X, y_cluster_kmeans)
- score
- ```
+```{code-cell}
+from sklearn import metrics
+score = metrics.silhouette_score(X, y_cluster_kmeans)
+score
+```
## Silhouette score
@@ -158,38 +170,29 @@ Our score is **.53**, so right in the middle. This indicates that our data is no
1. Import `KMeans` and start the clustering process.
- ```{code-cell}
- from sklearn.cluster import KMeans
- wcss = []
-
- for i in range(1, 11):
- kmeans = KMeans(n_clusters = i, init = 'k-means++', random_state = 42)
- kmeans.fit(X)
- wcss.append(kmeans.inertia_)
-
- ```
+```{code-cell}
+from sklearn.cluster import KMeans
+wcss = []
- There are a few parts here that warrant explaining.
+for i in range(1, 11):
+ kmeans = KMeans(n_clusters = i, init = 'k-means++', random_state = 42)
+ kmeans.fit(X)
+ wcss.append(kmeans.inertia_)
+```
- ```{note}
- ๐ range: These are the iterations of the clustering process
- ```
+ There are a few parts here that warrant explaining.
- ```{note}
- ๐ random_state: "Determines random number generation for centroid initialization."
- ```
+```{seealso}
+๐ range: These are the iterations of the clustering process
- ```{note}
- ๐ WCSS: "within-cluster sums of squares" measures the squared average distance of all the points within a cluster to the cluster centroid.
- ```
+๐ random_state: "Determines random number generation for centroid initialization."
- ```{note}
- ๐ Inertia: K-Means algorithms attempt to choose centroids to minimize 'inertia', "a measure of how internally coherent clusters are." The value is appended to the wcss variable on each iteration.
- ```
+๐ WCSS: "within-cluster sums of squares" measures the squared average distance of all the points within a cluster to the cluster centroid.
- ```{note}
- ๐ k-means++: In Scikit-learn you can use the 'k-means++' optimization, which "initializes the centroids to be (generally) distant from each other, leading to probably better results than random initialization.
- ```
+๐ Inertia: K-Means algorithms attempt to choose centroids to minimize 'inertia', "a measure of how internally coherent clusters are." The value is appended to the wcss variable on each iteration.
+
+๐ k-means++: In Scikit-learn you can use the 'k-means++' optimization, which "initializes the centroids to be (generally) distant from each other, leading to probably better results than random initialization.
+```
### Elbow method
@@ -197,81 +200,73 @@ Previously, you surmised that, because you have targeted 3 song genres, you shou
1. Use the 'elbow method' to make sure.
- ```{code-cell}
- plt.figure(figsize=(10,5))
- sns.lineplot(range(1, 11), wcss,marker='o',color='red')
- plt.title('Elbow')
- plt.xlabel('Number of clusters')
- plt.ylabel('WCSS')
- plt.show()
- ```
+```sql
+plt.figure(figsize=(10,5))
+sns.lineplot(range(1, 11), wcss,marker='o',color='red')
+plt.title('Elbow')
+plt.xlabel('Number of clusters')
+plt.ylabel('WCSS')
+plt.show()
+```
- Use the `wcss` variable that you built in the previous step to create a chart showing where the 'bend' in the elbow is, which indicates the optimum number of clusters. Maybe it **is** 3!
+```{figure} ../../../images/clustering/elbow.png
+---
+name: elbow
+---
+```
- 
+Use the `wcss` variable that you built in the previous step to create a chart showing where the 'bend' in the elbow is, which indicates the optimum number of clusters. Maybe it **is** 3!
## Exercise - display the clusters
1. Try the process again, this time setting three clusters, and display the clusters as a scatterplot:
- ```{code-cell}
- from sklearn.cluster import KMeans
- kmeans = KMeans(n_clusters = 3)
- kmeans.fit(X)
- labels = kmeans.predict(X)
- plt.scatter(df['popularity'],df['danceability'],c = labels)
- plt.xlabel('popularity')
- plt.ylabel('danceability')
- plt.show()
- ```
+```{code-cell}
+from sklearn.cluster import KMeans
+kmeans = KMeans(n_clusters = 3)
+kmeans.fit(X)
+labels = kmeans.predict(X)
+plt.scatter(df['popularity'],df['danceability'],c = labels)
+plt.xlabel('popularity')
+plt.ylabel('danceability')
+plt.show()
+```
2. Check the model's accuracy:
- ```{code-cell}
- labels = kmeans.labels_
-
- correct_labels = sum(y == labels)
-
- print("Result: %d out of %d samples were correctly labeled." % (correct_labels, y.size))
-
- print('Accuracy score: {0:0.2f}'. format(correct_labels/float(y.size)))
- ```
-
- This model's accuracy is not very good, and the shape of the clusters gives you a hint why.
-
-```{figure} (../../../images/clustering/clusters.png)
----
-name: clusters
----
+```{code-cell}
+labels = kmeans.labels_
+correct_labels = sum(y == labels)
+print("Result: %d out of %d samples were correctly labeled." % (correct_labels, y.size))
+print('Accuracy score: {0:0.2f}'. format(correct_labels/float(y.size)))
+```
- This data is too imbalanced, too little correlated and there is too much variance between the column values to cluster well. In fact, the clusters that form are probably heavily influenced or skewed by the three genre categories we defined above. That was a learning process!
+This model's accuracy is not very good, and the shape of the clusters gives you a hint why.
- In Scikit-learn's documentation, you can see that a model like this one, with clusters not very well demarcated, has a 'variance' problem:
+This data is too imbalanced, too little correlated and there is too much variance between the column values to cluster well. In fact, the clusters that form are probably heavily influenced or skewed by the three genre categories we defined above. That was a learning process!
-```{note}
-Infographic from Scikit-learn
+In Scikit-learn's documentation, you can see that a model like this one, with clusters not very well demarcated, has a 'variance' problem:
-```{figure} (../../../images/clustering/problems.png)
+```{figure} ../../../images/clustering/problems.png
---
name: problem models
---
+roblem models by Scikit-learn
+```
## Variance
Variance is defined as "the average of the squared differences from the Mean" . In the context of this clustering problem, it refers to data that the numbers of our dataset tend to diverge a bit too much from the mean.
-```{note}
+```{seealso}
This is a great moment to think about all the ways you could correct this issue. Tweak the data a bit more? Use different columns? Use a different algorithm? Hint: Try scaling your data to normalize it and test other columns.
```
-```{index} seealso: variance calculator
-```
-
---
## Your turn! ๐
-[Try different clustering methods](../../assignments/ml-advanced/clustering/k-means-clustering.md)
+[Try different clustering methods](../../assignments/ml-advanced/clustering/Try-different-clustering-methods.md)
## Self study
@@ -284,8 +279,4 @@ You can use this tool to visualize sample data points and determine its centroid
Thanks to Microsoft for creating the open-source course [Data](https://github.com/microsoft/Data-Science-For-Beginners) Science for Beginners](https://github.com/microsoft/Data-Science-For-Beginners). It inspires the majority of the content in this chapter.
----
-
-```{bibliography}
-:filter: docname in docnames
-```
\ No newline at end of file
+---
\ No newline at end of file
diff --git a/open-machine-learning-jupyter-book/slides/python-programming/my_module.py b/open-machine-learning-jupyter-book/slides/python-programming/my_module.py
new file mode 100644
index 0000000000..2332ec13a3
--- /dev/null
+++ b/open-machine-learning-jupyter-book/slides/python-programming/my_module.py
@@ -0,0 +1,3 @@
+
+def my_sum(a, b):
+ return a + b