Merge branch 'main' of ../ml-clone/ml-for-beginners into main

pull/34/head
Jen Looper 3 years ago
commit 2722550407

@ -0,0 +1,38 @@
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: ''
assignees: ''
---
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Desktop (please complete the following information):**
- OS: [e.g. iOS]
- Browser [e.g. chrome, safari]
- Version [e.g. 22]
**Smartphone (please complete the following information):**
- Device: [e.g. iPhone6]
- OS: [e.g. iOS8.1]
- Browser [e.g. stock browser, safari]
- Version [e.g. 22]
**Additional context**
Add any other context about the problem here.

@ -0,0 +1,20 @@
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: ''
assignees: ''
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.

@ -0,0 +1,37 @@
## Track translation progress by opening a draft PR using this template and checking off the translations completed
Each lesson includes a translation of the README.md and the Assignment.md file, if available. Only mark the lesson complete if both those files are translated per lesson, please.
- [ ] 1
- [ ] 1-1
- [ ] 1-2
- [ ] 1-3
- [ ] 2
- [ ] 2-1
- [ ] 2-2
- [ ] 2-3
- [ ] 2-4
- [ ] 3
- [ ] 3-1
- [ ] 3-2
- [ ] 3-3
- [ ] 4
- [ ] 4-1
- [ ] 5
- [ ] 5-1
- [ ] 5-2
- [ ] 5-3
- [ ] 6
- [ ] 6-1
- [ ] 6-2
- [ ] 6-3
- [ ] 6-4
- [ ] 6-5
- [ ] 6-6
- [ ] 7
- [ ] 7-1
- [ ] 7-2
- [ ] 7-3
- [ ] 7-4
- [ ] Quiz (add a file in the quiz-app with all localizations)

@ -0,0 +1,45 @@
name: Azure Static Web Apps CI/CD
on:
push:
branches:
- main
pull_request:
types: [opened, synchronize, reopened, closed]
branches:
- main
jobs:
build_and_deploy_job:
if: github.event_name == 'push' || (github.event_name == 'pull_request' && github.event.action != 'closed')
runs-on: ubuntu-latest
name: Build and Deploy Job
steps:
- uses: actions/checkout@v2
with:
submodules: true
- name: Build And Deploy
id: builddeploy
uses: Azure/static-web-apps-deploy@v0.0.1-preview
with:
azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN_JOLLY_SEA_0A877260F }}
repo_token: ${{ secrets.GITHUB_TOKEN }} # Used for Github integrations (i.e. PR comments)
action: "upload"
###### Repository/Build Configurations - These values can be configured to match you app requirements. ######
# For more information regarding Static Web App workflow configurations, please visit: https://aka.ms/swaworkflowconfig
app_location: "/quiz-app" # App source code path
api_location: "api" # Api source code path - optional
output_location: "dist" # Built app content directory - optional
###### End of Repository/Build Configurations ######
close_pull_request_job:
if: github.event_name == 'pull_request' && github.event.action == 'closed'
runs-on: ubuntu-latest
name: Close Pull Request Job
steps:
- name: Close Pull Request
id: closepullrequest
uses: Azure/static-web-apps-deploy@v0.0.1-preview
with:
azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN_JOLLY_SEA_0A877260F }}
action: "close"

@ -0,0 +1,14 @@
# Contributing
This project welcomes contributions and suggestions. Most contributions require you to
agree to a Contributor License Agreement (CLA) declaring that you have the right to,
and actually do, grant us the rights to use your contribution. For details, visit
https://cla.microsoft.com.
When you submit a pull request, a CLA-bot will automatically determine whether you need
to provide a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the
instructions provided by the bot. You will only need to do this once across all repositories using our CLA.
This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/).
For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/)
or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments.

@ -0,0 +1,55 @@
# [Lesson Topic]
Add a sketchnote if possible/appropriate
![Embed a video here if available](video-url)
## [Pre-lecture quiz](link-to-quiz-app)
Describe what we will learn
### Introduction
Describe what will be covered
> Notes
### Prerequisite
What steps should have been covered before this lesson?
### Preparation
Preparatory steps to start this lesson
---
[Step through content in blocks]
## [Topic 1]
### Task:
Work together to progressively enhance your codebase to build the project with shared code:
```html
code blocks
```
✅ Knowledge Check - use this moment to stretch students' knowledge with open questions
## [Topic 2]
## [Topic 3]
## 🚀Challenge
Add a challenge for students to work on collaboratively in class to enhance the project
Optional: add a screenshot of the completed lesson's UI if appropriate
## [Post-lecture quiz](link-to-quiz-app)
## Review & Self Study
**Assignment**: [Assignment Name](assignment.md)

@ -0,0 +1,9 @@
# [Assignment Name]
## Instructions
## Rubric
| Criteria | Exemplary | Adequate | Needs Improvement |
| -------- | --------- | -------- | ----------------- |
| | | | |

@ -0,0 +1,55 @@
# [Lesson Topic]
Add a sketchnote if possible/appropriate
![Embed a video here if available](video-url)
## [Pre-lecture quiz](link-to-quiz-app)
Describe what we will learn
### Introduction
Describe what will be covered
> Notes
### Prerequisite
What steps should have been covered before this lesson?
### Preparation
Preparatory steps to start this lesson
---
[Step through content in blocks]
## [Topic 1]
### Task:
Work together to progressively enhance your codebase to build the project with shared code:
```html
code blocks
```
✅ Knowledge Check - use this moment to stretch students' knowledge with open questions
## [Topic 2]
## [Topic 3]
## 🚀Challenge
Add a challenge for students to work on collaboratively in class to enhance the project
Optional: add a screenshot of the completed lesson's UI if appropriate
## [Post-lecture quiz](link-to-quiz-app)
## Review & Self Study
**Assignment**: [Assignment Name](assignment.md)

@ -0,0 +1,9 @@
# [Assignment Name]
## Instructions
## Rubric
| Criteria | Exemplary | Adequate | Needs Improvement |
| -------- | --------- | -------- | ----------------- |
| | | | |

@ -0,0 +1,55 @@
# [Lesson Topic]
Add a sketchnote if possible/appropriate
![Embed a video here if available](video-url)
## [Pre-lecture quiz](link-to-quiz-app)
Describe what we will learn
### Introduction
Describe what will be covered
> Notes
### Prerequisite
What steps should have been covered before this lesson?
### Preparation
Preparatory steps to start this lesson
---
[Step through content in blocks]
## [Topic 1]
### Task:
Work together to progressively enhance your codebase to build the project with shared code:
```html
code blocks
```
✅ Knowledge Check - use this moment to stretch students' knowledge with open questions
## [Topic 2]
## [Topic 3]
## 🚀Challenge
Add a challenge for students to work on collaboratively in class to enhance the project
Optional: add a screenshot of the completed lesson's UI if appropriate
## [Post-lecture quiz](link-to-quiz-app)
## Review & Self Study
**Assignment**: [Assignment Name](assignment.md)

@ -0,0 +1,9 @@
# [Assignment Name]
## Instructions
## Rubric
| Criteria | Exemplary | Adequate | Needs Improvement |
| -------- | --------- | -------- | ----------------- |
| | | | |

@ -0,0 +1,55 @@
# [Lesson Topic]
Add a sketchnote if possible/appropriate
![Embed a video here if available](video-url)
## [Pre-lecture quiz](link-to-quiz-app)
Describe what we will learn
### Introduction
Describe what will be covered
> Notes
### Prerequisite
What steps should have been covered before this lesson?
### Preparation
Preparatory steps to start this lesson
---
[Step through content in blocks]
## [Topic 1]
### Task:
Work together to progressively enhance your codebase to build the project with shared code:
```html
code blocks
```
✅ Knowledge Check - use this moment to stretch students' knowledge with open questions
## [Topic 2]
## [Topic 3]
## 🚀Challenge
Add a challenge for students to work on collaboratively in class to enhance the project
Optional: add a screenshot of the completed lesson's UI if appropriate
## [Post-lecture quiz](link-to-quiz-app)
## Review & Self Study
**Assignment**: [Assignment Name](assignment.md)

@ -0,0 +1,9 @@
# [Assignment Name]
## Instructions
## Rubric
| Criteria | Exemplary | Adequate | Needs Improvement |
| -------- | --------- | -------- | ----------------- |
| | | | |

@ -0,0 +1,13 @@
# Getting Started with Classification
In this section of the curriculum you will learn about how to classify data using Machine Learning.
## Lessons
1. [Visualize your Data and Prepare it for Use](1-Data/README.md)
2. [Build a Discriminative Model](2-Discriminative/README.md)
3. [Build a Generative Model](3-Generative/README.md)
4. [Applied ML: Build a Web App](4-Applied/README.md)
## Credits
"Getting Started with Classification" was written with ♥️ by [Cassie Breviu](@cassieview)

@ -0,0 +1,305 @@
# Introduction to Clustering
[![No One Like You by PSquare](https://img.youtube.com/vi/ty2advRiWJM/0.jpg)](https://youtu.be/ty2advRiWJM "No One Like You by PSquare")
> While you're studying Machine Learning with Clustering, enjoy some Nigerian Dance Hall tracks - this is a highly rated song from 2014 by PSquare.
## [Pre-lecture quiz](link-to-quiz-app)
### Introduction
Clustering is a type of [Unsupervised Learning](https://wikipedia.org/wiki/Unsupervised_learning) that presumes that a dataset is unlabelled. It uses various algorithms to sort through unlabeled data and provide groupings according to patterns it discerns in the data.
> TODO infographic
[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.
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
[Scikit-Learn offers a large array](https://scikit-learn.org/stable/modules/clustering.html) of methods to perform clustering. The type you choose will depend on your use case. According to the documentation, each method has various benefits. Here is a simplified table of the methods supported by Scikit-Learn and their appropriate use cases:
| Method name | Use case |
| :--------------------------- | :--------------------------------------------------------------------- |
| K-Means | general purpose, inductive |
| Affinity propagation | many, uneven clusters, inductive |
| Mean-shift | many, uneven clusters, inductive |
| Spectral clustering | few, even clusters, transductive |
| Ward hierarchical clustering | many, constrained clusters, transductive |
| Agglomerative clustering | many, constrained, non Euclidean distances, transductive |
| DBSCAN | non-flat geometry, uneven clusters, transductive |
| OPTICS | non-flat geometry, uneven clusters with variable density, transductive |
| Gaussian mixtures | flat geometry, inductive |
| BIRCH | large dataset with outliers, 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'](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' (non-[Euclidean](https://wikipedia.org/wiki/Euclidean_geometry)) or 'non-flat' (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. If your data, visualized, seems to not exist on a plane, you might need to use a specialized algorithm to handle it.
>
> Infographic: like the last one here https://datascience.stackexchange.com/questions/52260/terminology-flat-geometry-in-the-context-of-clustering
>
> 🎓 ['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.
### 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. Scikit-Learn's Agglomerative clustering is hierarchical.
TODO: infographic
**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://en.wikipedia.org/wiki/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.
TODO: infographic
**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.
### Preparing the 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.
Open the notebook.ipynb file in this folder. Import the Seaborn package for good data visualization.
```python
pip install seaborn
```
Append the song data .csv file. 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:
```python
import matplotlib.pyplot as plt
import pandas as pd
df = pd.read_csv("../../data/nigerian-songs.csv")
df.head()
```
Check the first few lines of data:
| | name | album | artist | artist_top_genre | release_date | length | popularity | danceability | acousticness | energy | instrumentalness | liveness | loudness | speechiness | tempo | time_signature |
| --- | ------------------------ | ---------------------------- | ------------------- | ---------------- | ------------ | ------ | ---------- | ------------ | ------------ | ------ | ---------------- | -------- | -------- | ----------- | ------- | -------------- |
| 0 | 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 |
| 1 | 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 |
| 2 | 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 |
| 3 | 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 |
| 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 |
Get some information about the dataframe:
```python
df.info()
```
```
<class 'pandas.core.frame.DataFrame'>
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
```
Double-check for null values:
```python
df.isnull().sum()
```
Looking good:
```
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
```
Describe the data:
```python
df.describe()
```
| | release_date | length | popularity | danceability | acousticness | energy | instrumentalness | liveness | loudness | speechiness | tempo | time_signature |
| ----- | ------------ | ----------- | ---------- | ------------ | ------------ | -------- | ---------------- | -------- | --------- | ----------- | ---------- | -------------- |
| count | 530 | 530 | 530 | 530 | 530 | 530 | 530 | 530 | 530 | 530 | 530 | 530 |
| mean | 2015.390566 | 222298.1698 | 17.507547 | 0.741619 | 0.265412 | 0.760623 | 0.016305 | 0.147308 | -4.953011 | 0.130748 | 116.487864 | 3.986792 |
| std | 3.131688 | 39696.82226 | 18.992212 | 0.117522 | 0.208342 | 0.148533 | 0.090321 | 0.123588 | 2.464186 | 0.092939 | 23.518601 | 0.333701 |
| min | 1998 | 89488 | 0 | 0.255 | 0.000665 | 0.111 | 0 | 0.0283 | -19.362 | 0.0278 | 61.695 | 3 |
| 25% | 2014 | 199305 | 0 | 0.681 | 0.089525 | 0.669 | 0 | 0.07565 | -6.29875 | 0.0591 | 102.96125 | 4 |
| 50% | 2016 | 218509 | 13 | 0.761 | 0.2205 | 0.7845 | 0.000004 | 0.1035 | -4.5585 | 0.09795 | 112.7145 | 4 |
| 75% | 2017 | 242098.5 | 31 | 0.8295 | 0.403 | 0.87575 | 0.000234 | 0.164 | -3.331 | 0.177 | 125.03925 | 4 |
| max | 2020 | 511738 | 73 | 0.966 | 0.954 | 0.995 | 0.91 | 0.811 | 0.582 | 0.514 | 206.007 | 5 |
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.
Use a barplot to find out the most popular genres:
```python
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')
```
![most popular](images/popular.png)
✅ If you'd like to see more top values, change the top `[:5]` to a bigger value, or remove it to see all.
Note, when the top genre is described as 'Missing', that means that Spotify did not classify it, so let's get rid of it:
```python
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')
```
Now recheck the most popular genres:
![most popular](images/popular.png)
By far, the top three genres dominate this dataset, so let's concentrate on `afro dancehall`, `afropop`, and `nigerian pop`, also filtering 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):
```python
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')
```
Do a quick test to see if the data correlates in any particularly strong way:
```python
corrmat = df.corr()
f, ax = plt.subplots(figsize=(12, 9))
sns.heatmap(corrmat, vmax=.8, square=True);
```
![correlations](images/correlation.png)
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.
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?
✅ Try different datapoints (energy, loudness, speechiness) and more or different musical genres. What can you discover? Take a look at the `df.describe()` table to see the general spread of the data points.
### Data Distribution
Are these three 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.
```python
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. In general, the three genres align loosely in terms of their popularity and danceability. Determining clusters in this loosely-aligned data will be interesting:
![distribution](images/distribution.png)
A scatterplot of the same axes shows a similar pattern of convergence:
```python
sns.FacetGrid(df, hue="artist_top_genre", size=5) \
.map(plt.scatter, "popularity", "danceability") \
.add_legend()
```
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 seems to overlap in interesting ways.
## 🚀Challenge
## [Post-lecture quiz](link-to-quiz-app)
## 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 onn this topic [here](https://www.kdnuggets.com/2019/10/right-clustering-algorithm.html)
[This helpful article](https://www.freecodecamp.org/news/8-clustering-algorithms-in-machine-learning-that-all-data-scientists-should-know/) walks you through the different ways that various clustering algorithms behave, given different data shapes.
In the next lesson, you will make use of the most popular clustering method, K-Means. Take a look at Stanford's K-Means Simulator [here](https://stanford.edu/class/engr108/visualizations/kmeans/kmeans.html). You can use this tool to visualize sample data points and determine its centroids. With fresh data, click 'update' to see how long it takes to find convergence. 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?
**Assignment**: [Assignment Name](assignment.md)

@ -0,0 +1,9 @@
# [Assignment Name]
## Instructions
## Rubric
| Criteria | Exemplary | Adequate | Needs Improvement |
| -------- | --------- | -------- | ----------------- |
| | | | |

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

@ -0,0 +1,39 @@
{
"metadata": {
"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.3"
},
"orig_nbformat": 2,
"kernelspec": {
"name": "python383jvsc74a57bd0e134e05457d34029b6460cd73bbf1ed73f339b5b6d98c95be70b69eba114fe95",
"display_name": "Python 3.8.3 64-bit (conda)"
}
},
"nbformat": 4,
"nbformat_minor": 2,
"cells": [
{
"source": [
"# Nigerian Music scraped from Spotify - an analysis"
],
"cell_type": "markdown",
"metadata": {}
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
]
}

File diff suppressed because one or more lines are too long

@ -0,0 +1,57 @@
# [Lesson Topic]
Add a sketchnote if possible/appropriate
![Embed a video here if available](video-url)
https://www.youtube.com/watch?v=hDmNF9JG3lo
https://stanford.edu/~cpiech/cs221/handouts/kmeans.html
## [Pre-lecture quiz](link-to-quiz-app)
Describe what we will learn
### Introduction
Describe what will be covered
> Notes
### Prerequisite
What steps should have been covered before this lesson?
### Preparation
Preparatory steps to start this lesson
---
[Step through content in blocks]
## [Topic 1]
### Task:
Work together to progressively enhance your codebase to build the project with shared code:
```html
code blocks
```
✅ Knowledge Check - use this moment to stretch students' knowledge with open questions
## [Topic 2]
## [Topic 3]
## 🚀Challenge
Add a challenge for students to work on collaboratively in class to enhance the project
Optional: add a screenshot of the completed lesson's UI if appropriate
## [Post-lecture quiz](link-to-quiz-app)
## Review & Self Study
**Assignment**: [Assignment Name](assignment.md)

@ -0,0 +1,9 @@
# [Assignment Name]
## Instructions
## Rubric
| Criteria | Exemplary | Adequate | Needs Improvement |
| -------- | --------- | -------- | ----------------- |
| | | | |

@ -0,0 +1,28 @@
{
"metadata": {
"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
},
"orig_nbformat": 2
},
"nbformat": 4,
"nbformat_minor": 2,
"cells": [
{
"source": [
"# Nigerian Music scraped from Spotify - an analysis"
],
"cell_type": "markdown",
"metadata": {}
}
]
}

File diff suppressed because one or more lines are too long

@ -0,0 +1,20 @@
# Clustering Models for Machine Learning
## Regional topic: Clustering models for a Nigerian audience's musical taste
Nigeria's diverse audience has diverse musical tastes. Using data scraped from Spotify (inspired by [this article](https://towardsdatascience.com/country-wise-visual-analysis-of-music-taste-using-spotify-api-seaborn-in-python-77f5b749b421), 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!
![A turntable](./images/turntable.jpg)
Photo by <a href="https://unsplash.com/@marcelalaskoski?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Marcela Laskoski</a> on <a href="https://unsplash.com/s/photos/nigerian-music?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Unsplash</a>
In this series of lessons, 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 lessons are more useful. But in cases where you are looking to group unlabelled data, clustering is a great way to discover patterns.
## Lessons
1. [Introduction to Clustering](1-Visualize/README.md)
2. [K-Means Clustering](2-K-Means/README.md)
## Credits
These lessons were written with ♥️ by [Jen Looper](https://www.twitter.com/jenlooper) with helpful reviews by Muhammad Sakib Khan Inan.
The [Nigerian Songs](https://www.kaggle.com/sootersaalu/nigerian-songs-spotify) dataset was sourced from Kaggle as scraped from Spotify.

@ -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
1 name album artist artist_top_genre release_date length popularity danceability acousticness energy instrumentalness liveness loudness speechiness tempo time_signature
2 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
3 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
4 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
5 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
6 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
7 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
8 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
9 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
10 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
11 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
12 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
13 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
14 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
15 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
16 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
17 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
18 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
19 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
20 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
21 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
22 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
23 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
24 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
25 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
26 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
27 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
28 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
29 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
30 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
31 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
32 Beginning Beginning Joeboy afropop 2019 158052 55 0.878 0.149 0.668 0.000116 0.1 -7.076 0.107 109.955 4
33 Aye Aye DaVido afropop 2014 235053 0 0.729 0.628 0.868 0.0 0.057 -4.72 0.0474 115.0 4
34 Baby Baby Joeboy afropop 2019 165448 13 0.785 0.142 0.806 0.000285 0.147 -5.34 0.0558 105.001 4
35 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
36 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
37 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
38 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
39 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
40 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
41 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
42 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
43 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
44 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
45 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
46 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
47 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
48 If If DaVido afropop 2017 237714 57 0.951 0.397 0.661 0.0 0.0686 -2.678 0.0612 104.997 4
49 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
50 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
51 Yanga Yanga Chidinma afropop 2018 182033 22 0.885 0.289 0.717 0.0 0.048 -5.36 0.169 118.0 4
52 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
53 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
54 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
55 Pana Pana Tekno afropop 2017 244867 2 0.67 0.316 0.544 0.0308 0.0746 -7.388 0.325 199.871 4
56 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
57 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
58 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
59 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
60 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
61 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
62 Prayer Prayer DMW afropop 2017 216111 0 0.728 0.14 0.823 0.000167 0.318 -6.015 0.0405 119.931 4
63 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
64 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
65 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
66 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
67 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
68 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
69 Fall Fall DaVido afropop 2017 240000 61 0.928 0.379 0.675 0.0 0.0533 -3.535 0.0566 105.952 4
70 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
71 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
72 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
73 Aje Aje DMW afropop 2018 234788 0 0.771 0.416 0.79 0.0 0.0493 -3.807 0.0708 119.946 4
74 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
75 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
76 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
77 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
78 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
79 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
80 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
81 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
82 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
83 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
84 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
85 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
86 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
87 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
88 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
89 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
90 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
91 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
92 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
93 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
94 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
95 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
96 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
97 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
98 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
99 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
100 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
101 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
102 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
103 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
104 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
105 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
106 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
107 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
108 Where Where Tekno afropop 2016 219080 7 0.887 0.0729 0.908 0.000192 0.0483 -3.346 0.0637 115.023 4
109 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
110 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
111 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
112 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
113 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
114 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
115 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
116 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
117 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
118 Dodo Dodo DaVido afropop 2015 198191 0 0.759 0.0743 0.815 0.000237 0.167 -3.679 0.0418 113.965 4
119 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
120 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
121 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
122 Forever Forever Eazzy hiplife 2016 216266 0 0.764 0.324 0.669 0.000181 0.107 -2.787 0.0339 98.979 4
123 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
124 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
125 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
126 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
127 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
128 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
129 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
130 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
131 Woman Woman Tekno afropop 2019 255267 0 0.708 0.365 0.637 0.0 0.141 -5.12 0.197 124.124 5
132 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
133 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
134 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
135 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
136 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
137 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
138 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
139 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
140 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
141 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
142 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
143 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
144 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
145 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
146 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
147 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
148 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
149 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
150 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
151 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
152 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
153 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
154 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
155 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
156 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
157 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
158 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
159 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
160 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
161 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
162 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
163 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
164 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
165 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
166 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
167 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
168 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
169 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
170 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
171 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
172 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
173 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
174 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
175 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
176 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
177 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
178 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
179 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
180 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
181 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
182 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
183 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
184 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
185 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
186 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
187 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
188 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
189 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
190 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
191 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
192 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
193 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
194 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
195 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
196 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
197 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
198 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
199 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
200 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
201 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
202 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
203 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
204 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
205 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
206 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
207 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
208 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
209 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
210 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
211 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
212 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
213 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
214 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
215 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
216 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
217 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
218 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
219 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
220 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
221 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
222 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
223 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
224 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
225 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
226 Bokiniyen Bokiniyen Koker afropop 2017 230680 0 0.769 0.162 0.835 0.0 0.109 -3.297 0.0883 117.995 4
227 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
228 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
229 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
230 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
231 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
232 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
233 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
234 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
235 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
236 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
237 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
238 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
239 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
240 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
241 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
242 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
243 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
244 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
245 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
246 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
247 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
248 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
249 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
250 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
251 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
252 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
253 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
254 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
255 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
256 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
257 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
258 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
259 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
260 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
261 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
262 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
263 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
264 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
265 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
266 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
267 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
268 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
269 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
270 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
271 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
272 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
273 Gbemisaya Quality CDQ afropop 2016 261067 6 0.807 0.0353 0.858 0.000662 0.0589 -3.278 0.0922 129.939 4
274 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
275 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
276 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
277 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
278 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
279 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
280 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
281 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
282 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
283 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
284 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
285 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
286 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
287 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
288 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
289 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
290 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
291 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
292 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
293 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
294 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
295 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
296 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
297 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
298 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
299 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
300 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
301 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
302 Sensima Sensima Skiibii afropop 2018 187794 58 0.874 0.0899 0.807 0.0 0.0698 -3.973 0.177 109.945 4
303 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
304 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
305 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
306 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
307 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
308 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
309 Jogodo Jogodo Tekno afropop 2018 263026 47 0.74 0.379 0.771 0.0 0.0889 -4.7 0.122 100.019 4
310 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
311 Pana Pana Tekno afropop 2016 242893 60 0.553 0.305 0.553 0.0581 0.0715 -6.818 0.305 72.949 3
312 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
313 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
314 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
315 Risky Risky DaVido afropop 2019 270315 58 0.714 0.15 0.702 0.0 0.0993 -4.544 0.264 126.511 5
316 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
317 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
318 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
319 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
320 Osinachi Osinachi HumbleSmith afropop 2015 235773 2 0.845 0.228 0.79 0.0 0.0886 -5.42 0.301 114.941 4
321 Duro Duro Tekno afropop 2015 212000 20 0.74 0.282 0.84 0.000156 0.0955 -3.815 0.0859 89.816 3
322 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
323 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
324 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
325 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
326 Yawa Yawa Tekno afropop 2017 236355 46 0.92 0.223 0.584 0.000274 0.0422 -4.789 0.0629 107.965 4
327 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
328 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
329 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
330 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
331 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
332 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
333 Woman Woman Tekno afropop 2019 255220 31 0.673 0.344 0.642 0.0 0.157 -5.013 0.187 125.437 5
334 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
335 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
336 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
337 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
338 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
339 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
340 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
341 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
342 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
343 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
344 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
345 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
346 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
347 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
348 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
349 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
350 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
351 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
352 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
353 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
354 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
355 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
356 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
357 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
358 Igbotic Igbotic Anyidons Missing 2020 204146 19 0.512 0.346 0.842 0.0 0.356 -3.692 0.253 88.374 4
359 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
360 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
361 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
362 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
363 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
364 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
365 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
366 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
367 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
368 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
369 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
370 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
371 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
372 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
373 Wash Wash Tekno afropop 2015 194080 10 0.886 0.0763 0.803 0.0 0.187 -5.004 0.162 120.989 4
374 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
375 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
376 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
377 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
378 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
379 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
380 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
381 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
382 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
383 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
384 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
385 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
386 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
387 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
388 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
389 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
390 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
391 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
392 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
393 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
394 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
395 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
396 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
397 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
398 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
399 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
400 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
401 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
402 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
403 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
404 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
405 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
406 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
407 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
408 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
409 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
410 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
411 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
412 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
413 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
414 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
415 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
416 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
417 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
418 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
419 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
420 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
421 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
422 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
423 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
424 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
425 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
426 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
427 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
428 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
429 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
430 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
431 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
432 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
433 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
434 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
435 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
436 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
437 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
438 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
439 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
440 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
441 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
442 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
443 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
444 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
445 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
446 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
447 Myself Myself Basketmouth Missing 2020 203395 44 0.48 0.161 0.734 0.0 0.108 -6.978 0.287 95.735 4
448 Where Where Tekno afropop 2016 219080 34 0.887 0.0729 0.908 0.000192 0.0483 -3.346 0.0637 115.023 4
449 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
450 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
451 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
452 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
453 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
454 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
455 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
456 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
457 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
458 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
459 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
460 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
461 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
462 Angelina Angelina Baci Missing 2014 172866 0 0.78 0.13 0.92 0.0396 0.0415 -3.821 0.0629 125.996 4
463 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
464 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
465 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
466 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
467 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
468 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
469 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
470 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
471 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
472 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
473 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
474 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
475 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
476 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
477 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
478 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
479 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
480 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
481 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
482 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
483 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
484 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
485 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
486 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
487 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
488 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
489 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
490 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
491 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
492 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
493 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
494 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
495 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
496 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
497 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
498 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
499 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
500 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
501 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
502 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
503 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
504 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
505 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
506 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
507 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
508 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
509 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
510 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
511 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
512 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
513 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
514 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
515 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
516 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
517 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
518 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
519 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
520 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
521 Anything Anything Tekno afropop 2015 208852 2 0.879 0.224 0.916 0.0 0.0877 -4.602 0.157 126.031 4
522 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
523 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
524 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
525 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
526 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
527 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
528 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
529 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
530 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
531 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

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

@ -0,0 +1,56 @@
# Introduction to Machine Learning
Add a sketchnote if possible/appropriate
[![ML, AI, Deep Learning - What's the difference?](https://img.youtube.com/vi/lTd9RSxS9ZE/0.jpg)](https://youtu.be/lTd9RSxS9ZE "ML, AI, Deep Learning - What's the difference?")
> Click this image to watch a video discussing the difference between Machine Learning, AI, and Deep Learning.
## [Pre-lecture quiz](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/1/)
Describe what we will learn
### Introduction
Describe what will be covered
> Notes
### Prerequisite
What steps should have been covered before this lesson?
### Preparation
Preparatory steps to start this lesson
---
[Step through content in blocks]
## [Topic 1]
### Task:
Work together to progressively enhance your codebase to build the project with shared code:
```html
code blocks
```
✅ Knowledge Check - use this moment to stretch students' knowledge with open questions
## [Topic 2]
## [Topic 3]
## 🚀Challenge
Add a challenge for students to work on collaboratively in class to enhance the project
Optional: add a screenshot of the completed lesson's UI if appropriate
## [Post-lecture quiz](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/2/)
## Review & Self Study
**Assignment**: [Assignment Name](assignment.md)

@ -0,0 +1,9 @@
# Assignment Name
## Instructions
## Rubric
| Criteria | Exemplary | Adequate | Needs Improvement |
| -------- | --------- | -------- | ----------------- |
| | | | |

@ -0,0 +1,57 @@
# Introduction to Machine Learning
Add a sketchnote if possible/appropriate
![Embed a video here if available](video-url)
[Check out this podcast where Amy Boyd discusses the evolution of AI](http://runasradio.com/Shows/Show/739)
## [Pre-lecture quiz](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/3/)
Describe what we will learn
### Introduction
Describe what will be covered
> Notes
### Prerequisite
What steps should have been covered before this lesson?
### Preparation
Preparatory steps to start this lesson
---
[Step through content in blocks]
## [Topic 1]
### Task:
Work together to progressively enhance your codebase to build the project with shared code:
```html
code blocks
```
✅ Knowledge Check - use this moment to stretch students' knowledge with open questions
## [Topic 2]
## [Topic 3]
## 🚀Challenge
Add a challenge for students to work on collaboratively in class to enhance the project
Optional: add a screenshot of the completed lesson's UI if appropriate
## [Post-lecture quiz](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/4/)
## Review & Self Study
**Assignment**: [Assignment Name](assignment.md)

@ -0,0 +1,9 @@
# [Assignment Name]
## Instructions
## Rubric
| Criteria | Exemplary | Adequate | Needs Improvement |
| -------- | --------- | -------- | ----------------- |
| | | | |

@ -0,0 +1,61 @@
# The Ethics of Machine Learning
Add a sketchnote if possible/appropriate
> ✅ Learn more about Responsible AI by following this [Learning Path](https://docs.microsoft.com/en-us/learn/modules/responsible-ai-principles/?WT.mc_id=academic-15963-cxa)
[![Microsoft's Approach to Responsible AI](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Microsoft's Approach to Responsible AI")
> Video: Microsoft's Approach to Responsible AI
## [Pre-lecture quiz](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/5/)
Describe what we will learn
### Introduction
Describe what will be covered
> Notes
### Prerequisite
What steps should have been covered before this lesson?
### Preparation
Preparatory steps to start this lesson
---
[![Eric Horvitz discusses Ethical AI](https://img.youtube.com/vi/tL7t2O5Iu8E/0.jpg)](https://youtu.be/tL7t2O5Iu8E "Eric Horvitz, Technical Fellow and Director of Microsoft Research Labs, talks about some of the benefits AI and machine learning are bringing and why it is essential for companies to establish ethical principles to make sure AI is properly governed.")
> Video: Eric Horvitz, Technical Fellow and Director of Microsoft Research Labs, talks about some of the benefits AI and machine learning are bringing and why it is essential for companies to establish ethical principles to make sure AI is properly governed.
[Step through content in blocks]
## [Topic 1]
### Task:
Work together to progressively enhance your codebase to build the project with shared code:
```html
code blocks
```
✅ Knowledge Check - use this moment to stretch students' knowledge with open questions
## [Topic 2]
## [Topic 3]
## 🚀Challenge
Add a challenge for students to work on collaboratively in class to enhance the project
Optional: add a screenshot of the completed lesson's UI if appropriate
## [Post-lecture quiz](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/6/)
## Review & Self Study
**Assignment**: [Assignment Name](assignment.md)

@ -0,0 +1,17 @@
# Introduction to Machine Learning
In this section of the curriculum, you will be introduced to the base concepts underlying the field of machine learning, what is is, and learn about its history.
### Lessons
1. [Introduction to Machine Learning](1-intro-to-ML/README.md)
1. [The History of Machine Learning](2-history-of-ML/README.md)
1. [Ethics and Machine Learning](3-ethics/README.md)
### Credits
"Introduction to Machine Learning" was written with ♥️ by [Name](Twitter)
"The History of Machine Learning" was written with ♥️ by [Name](Twitter)
"Ethics and Machine Learning" was written with ♥️ by [Name](Twitter)

@ -0,0 +1,126 @@
# Introduction to Natural Language Processing
Add a sketchnote if possible/appropriate
[![NLP 101](https://img.youtube.com/vi/C75SiVhXjRM/0.jpg)](https://youtu.be/C75SiVhXjRM "NLP 101")
## [Pre-lecture quiz](link-to-quiz-app)
## Introduction
This lesson covers a brief history and important concepts of *Computational Linguistics* focusing on *Natural Language Processing*. NLP, as it is commonly known, is one of the best-known areas where machine learning has been applied and used in production software.
✅ Can you think of software that you use every day that probably has some NLP embedded? What about your word processing programs or mobile apps that you use regularly?
You will learn about how the ideas about languages developed and what the major areas of study have been. You will also learn definitions and concepts about how computers process text, including parsing, grammar, and identifying nouns and verbs. There are some coding tasks in this lesson, and several important concepts are introduced that you will learn to code later on in the next lessons.
Computational linguistics is an area of research and development over many decades that studies how computers can work with, and even understand, translate, and communicate with languages. Natural Language Processing (NLP) is a related field focused on how computers can process 'natural', or human, languages. If you have ever dictated to your phone instead of typing or asked a virtual assistant a question, your speech was converted into a text form and then processed or *parsed* from the language you spoke. The detected keywords were then processed into a format that the phone or assistant could understand and act on.
This is possible because someone wrote a computer program to do this. A few decades ago, some science fiction writers predicted that people would mostly speak to their computers, and the computers would always understand exactly what they meant. Sadly, it turned out to be a harder problem that many imagined, and while it is a much better understood problem today, there are significant challenges in achieving 'perfect' natural language processing when it comes to understanding the meaning of a sentence. This is a particularly hard problem when it comes to understanding humour or detecting emotions such as sarcasm in a sentence.
At this point, you may be remembering school classes where the teacher covered the parts of grammar in a sentence. In some countries, students are taught grammar and linguistics as a dedicated subject, but in many, these topics are included as part of learning a language: either your first language in primary school (learning to read and write) and perhaps a second language in post-primary, or high school. Don't worry if you are not an expert at differentiating nouns from verbs or adverbs from adjectives!
If you struggle with the difference between the *simple present* and *present progressive*, you are not alone. This is a challenging thing for many people, even native speakers of a language. The good news is that computers are really good at applying formal rules, and you will learn to write code that can *parse* a sentence as well as a human. The greater challenge you will examine later is understanding the *meaning*, and *sentiment*, of a sentence.
## Prerequisites
For this lesson, the main prerequisite is being able to read and understand the language of this lesson. There are no math problems or equations to solve. While the original author wrote this lesson in English, it is also translated into other languages, so you could be reading a translation. There are examples where a number of different languages are used (to compare the different grammar rules of different languages). These are *not* translated, but the explanatory text is, so the meaning should be clear.
For the coding tasks, you will use Python and the examples are using Python 3.8.
In this section, you will need:
* Python 3 programming language comprehension
* this lesson uses input, loops, file reading, arrays
* Visual Studio Code with its Python extension
* (*or the Python IDE of your choice*)
* [TextBlob](https://github.com/sloria/TextBlob) a simplified text processing library for Python
* Follow the instructions on the TextBlob site to install it on your system (install the corpora as well, as shown below)
```bash
pip install -U textblob
python -m textblob.download_corpora
```
> 💡 Tip: You can run Python directly in VS Code environments. Check the [docs](https://code.visualstudio.com/docs/languages/python?WT.mc_id=academic-15963-cxa) for more information.
## Conversing with Eliza
The history of trying to make computers understand human language goes back decades, and one of the earliest scientists to consider natural language processing was *Alan Turing*. When Turing was researching *Artificial Intelligence* in the 1950's, he considered if a conversational test could be given to a human and computer (via typed correspondence) where the human in the conversation was not sure if they were conversing with another human or a computer. If, after a certain length of conversation, the human could not determine that the answers were from a computer or not, then could the computer be said to be *thinking*?
[![Chatting with Eliza](https://img.youtube.com/vi/QD8mQXaUFG4/0.jpg)](https://youtu.be/QD8mQXaUFG4 "Chatting with Eliza")
The idea for this came from a party game called *The Imitation Game* where an interrogator is alone in a room and tasked with determining which of two people (in another room) are male and female respectively. The interrogator can send notes, and must try to think of questions where the written answers reveal the gender of the mystery person. Of course, the players in the other room are trying to trick the interrogator by answering questions in such as way as to mislead or confuse the interrogator, whilst also giving the appearance of answering honestly.
In the 1960's an MIT scientist called *Joseph Weizenbaum* developed [*Eliza*](https://en.wikipedia.org/wiki/ELIZA), a computer 'therapist' that would ask the human questions and give the appearance of understanding their answers. However, while Eliza could parse a sentence and identify certain grammatical constructs and keywords so as to give a reasonable answer, it could not be said to *understand* the sentence. If Eliza was presented with a sentence following the format "**I am** <u>sad</u>" it might rearrange and substitute words in the sentence to form the response "How long have **you been** <u>sad</u>". This gave the impression that Eliza understood the statement and was asking a follow-on question, whereas in reality, it was changing the tense and adding some words. If Eliza could not identify a keyword that it had a response for, it would instead give a random response that could be applicable to many different statements. Eliza could be easily tricked, for instance if a user wrote "**You are** a <u>bicycle</u>" it might respond with "How long have **I been** a <u>bicycle</u>?", instead of a more reasoned response.
> Note: You can read the original description of [Eliza](https://cacm.acm.org/magazines/1966/1/13317-elizaa-computer-program-for-the-study-of-natural-language-communication-between-man-and-machine/abstract) published in 1966 if you have an ACM account. Alternately, read about Eliza on [wikipedia](https://en.wikipedia.org/wiki/ELIZA)
### Task: Coding a basic conversational bot
A conversational bot, like Eliza, is a program that elicits user input and seems to understand and respond intelligently. Unlike Eliza, our bot will not have several rules giving it the appearance of having an intelligent conversation. Instead, out bot will have one ability only, to keep the conversation going with random responses that might work in almost any trivial conversation.
Your steps when building a conversational bot:
1. Print instructions advising the user how to interact with the bot
2. Start a loop
1. Accept user input
2. If user has asked to exit, then exit
3. Process user input and determine response (in this case, the response is a random choice from a list of possible generic responses)
4. Print response
3. loop back to step 2
Create this bot yourself in Python with the following random responses:
```python
random_responses = ["That is quite interesting, please tell me more.",
"I see. Do go on.",
"Why do you say that?",
"Funny weather we've been having, isn't it?",
"Let's change the subject.",
"Did you catch the game last night?"]
```
Here is some sample output to guide you (user input is on the lines starting with `>`):
```
Hello, I am Marvin, the simple robot.
You can end this conversation at any time by typing 'bye'
After typing each answer, press 'enter'
How are you today?
> I am good thanks
That is quite interesting, please tell me more.
> today I went for a walk
Did you catch the game last night?
> I did, but my team lost
Funny weather we've been having, isn't it?
> yes but I hope next week is better
Let's change the subject.
> ok, lets talk about music
Why do you say that?
> because I like music!
Why do you say that?
> bye
It was nice talking to you, goodbye!
```
One possible solution to the task is [here](solution/bot.py)
✅ Stop and consider
1. Do you think the random responses would 'trick' someone into thinking that the bot actually understood them?
2. What features would the bot need to be more effective?
3. If a bot could really 'understand' the meaning of a sentence, would it need to 'remember' the meaning of previous sentences in a conversation too?
## 🚀Challenge
Choose one of the "stop and consider" elements above and either try to implement them in code or write a solution on paper using pseudocode.
In the next lesson, you'll learn about a number of other approaches to parsing natural language and machine learning.
### [Post-lecture quiz](link-to-quiz-app)
## Review & Self Study
Take a look at the references below as further reading opportunities.
### References
1. Schubert, Lenhart, "Computational Linguistics", *The Stanford Encyclopedia of Philosophy* (Spring 2020 Edition), Edward N. Zalta (ed.), URL = <https://plato.stanford.edu/archives/spr2020/entries/computational-linguistics/>.
2. Princeton University "About WordNet." [WordNet](https://wordnet.princeton.edu/). Princeton University. 2010.
**Assignment**: [Make a Bot talk back](assignment.md)

@ -0,0 +1,11 @@
# Make a Bot talk back
## Instructions
In this lesson, you programmed a basic bot with whom to chat. This bot gives random answers until you say 'bye'. Can you make the answers a little less random, and trigger answers if you say specific things, like 'why' or 'how'? Think a bit how machine learning might make this type of work less manual as you extend your bot. You can use NLTK or TextBlob libraries to make your tasks easier.
## Rubric
| Criteria | Exemplary | Adequate | Needs Improvement |
| -------- | --------------------------------------------- | ------------------------------------------------ | ----------------------- |
| | A new bot.py file is presented and documented | A new bot file is presented but it contains bugs | A file is not presented |

@ -0,0 +1,26 @@
import random
# This list contains the random responses (you can add your own or translate them into your own language too)
random_responses = ["That is quite interesting, please tell me more.",
"I see. Do go on.",
"Why do you say that?",
"Funny weather we've been having, isn't it?",
"Let's change the subject.",
"Did you catch the game last night?"]
print("Hello, I am Marvin, the simple robot.")
print("You can end this conversation at any time by typing 'bye'")
print("After typing each answer, press 'enter'")
print("How are you today?")
while True:
# wait for the user to enter some text
user_input = input("> ")
if user_input.lower() == "bye":
# if they typed in 'bye' (or even BYE, ByE, byE etc.), break out of the loop
break
else:
response = random.choices(random_responses)[0]
print(response)
print("It was nice talking to you, goodbye!")

@ -0,0 +1,182 @@
# Common Natural Language Processing Tasks and Techniques
Add a sketchnote if possible/appropriate
![Embed a video here if available](video-url)
## [Pre-lecture quiz](link-to-quiz-app)
For most *Natural Language Processing* tasks, the text to be processed must be broken down, examined, and the results stored or cross referenced with rules and data sets. This allows the programmer to derive the meaning or intent or only the frequency of terms and words in a text.
Let's discover common techniques used in processing text. Combined with machine learning, these techniques help you to analyse large amounts of text efficiently. Before applying ML to these tasks, however, let's understand the problems encountered by an NLP specialist.
## Tasks common to NLP
> 🎓 **Tokenization**
> 
> Probably the first thing most NLP algorithms have to do is split the text into tokens, or words. While this sounds simple, having to account for punctuation and different language's word and sentence delimiters can make it tricky.
> 🎓 **Parsing & Part-of-speech Tagging**
>
> Every word that has been tokenized can be tagged as a part of speech - a noun, verb, or adjective etc. The sentence `the quick red fox jumped over the lazy brown dog` might be POS tagged as *fox* = noun, *jumped* = verb etc.
>
> Parsing is recognizing what words are related to each other in a sentence - for instance `the quick red fox jumped` is an adjective-noun-verb sequence that is is separate from `lazy brown dog` sequence.
> 🎓 **Word and Phrase Frequencies**
>
> A useful tool when analyzing a large body of text is to build a dictionary of every word or phrase of interest and how often it appears. The phrase `the quick red fox jumped over the lazy brown dog` has a word frequency of 2 for `the`.
### Example:
The Rudyard Kipling poem *The Winners* has a verse:
```
What the moral? Who rides may read.
When the night is thick and the tracks are blind
A friend at a pinch is a friend, indeed,
But a fool to wait for the laggard behind.
Down to Gehenna or up to the Throne,
He travels the fastest who travels alone.
```
As phrase frequencies can be case insensitive or case sensitive as required, the phrase `a friend` has a frequency of 2 and `the` has a frequency of 6, and `travels` is 2.
> 🎓 **N-grams**
>
> A text can be split into sequences of words of a set length, a single word (unigram), two words (bigrams), three words (trigrams) or any number of words (n-grams).
### Example
For instance `the quick red fox jumped over the lazy brown dog` with a n-gram score of 2 produces the following n-grams:
1. the quick
2. quick red
3. red fox
4. fox jumped
5. jumped over
6. over the
7. the lazy
8. lazy brown
9. brown dog
It might be easier to visualise it as a sliding box over the sentence. Here it is for n-grams of 3 words, the n-gram is in bold in each sentence:
1. <u>**the quick red**</u> fox jumped over the lazy brown dog
2. the **<u>quick red fox</u>** jumped over the lazy brown dog
3. the quick **<u>red fox jumped</u>** over the lazy brown dog
4. the quick red **<u>fox jumped over</u>** the lazy brown dog
5. the quick red fox **<u>jumped over the</u>** lazy brown dog
6. the quick red fox jumped **<u>over the lazy</u>** brown dog
7. the quick red fox jumped over <u>**the lazy brown**</u> dog
8. the quick red fox jumped over the **<u>lazy brown dog</u>**
> 🎓 **Noun phrase Extraction**
>
> In most sentences, there is a noun that is the subject, or object of the sentence. In English, it is often identifiable as having 'a' or 'an' or 'the' preceding it. Identifying the subject or object of a sentence by 'extracting the noun phrase' is a common task in NLP when attempting to understand the meaning of a sentence.
### Example
In the sentence `the quick red fox jumped over the lazy brown dog` there are 2 noun phrases: **quick red fox** and **lazy brown dog**.
> 🎓 **Sentiment analysis**
>
> A sentence or text can be analysed for sentiment, or how *positive* or *negative* it is. Sentiment is measured in *polarity* and *objectivity/subjectivity*. Polarity is measured from -1.0 to 1.0 (negative to positive) and 0.0 to 1.0 (most objective to most subjective).
✅ Later you'll learn that there are different ways to determine sentiment using machine learning, but one way is to have a list of words and phrases that are categorized as positive or negative by a human expert and apply that model to text to calculate a polarity score. Can you see how this would work in some circumstances and less well in others?
> 🎓 **Inflection**
>
> Inflection enables you to take a word and get the singular or plural of the word.
> 🎓 **Lemmatization**
>
> A *lemma* is the root or headword for a set of words, for instance *flew*, *flies*, *flying* have a lemma of the verb *fly*.
There are also useful databases available for the NLP researcher, notably:
> 🎓 **WordNet**
>
> [WordNet](https://wordnet.princeton.edu/) is a database of words, synonyms, antonyms and many other details for every word in many different languages. It is incredibly useful when attempting to build translations, spell checkers, or language tools of any type.
## NLP Libraries
Luckily, you don't have to build all of these techniques yourself, as there are excellent Python libraries available that make it much more accessible to developers who aren't specialized in natural language processing or machine learning. The next lessons include more examples of these, but here you will learn some useful examples to help you with the next task.
Let's use a library called TextBlob as it contains helpful APIs for tackling these types of tasks. TextBlob "stands on the giant shoulders of [NLTK](https://nltk.org) and [pattern](https://github.com/clips/pattern), and plays nicely with both." It has a considerable amount of ML embedded in its API.
> Note: A useful [Quick Start](https://textblob.readthedocs.io/en/dev/quickstart.html#quickstart) guide is available for TextBlob that is recommended for experienced Python developers
When attempting to identify *noun phrases*, TextBlob offers several options of extractors to find noun phrases. Take a look at `ConllExtractor`.
```python
from textblob import TextBlob
from textblob.np_extractors import ConllExtractor
# import and create a Conll extractor to use later
extractor = ConllExtractor()
# later when you need a noun phrase extractor:
user_input = input("> ")
user_input_blob = TextBlob(user_input, np_extractor=extractor) # note non-default extractor specified
np = user_input_blob.noun_phrases
```
> What's going on here? [ConllExtractor](https://textblob.readthedocs.io/en/dev/api_reference.html?highlight=Conll#textblob.en.np_extractors.ConllExtractor) is "A noun phrase extractor that uses chunk parsing trained with the ConLL-2000 training corpus." ConLL-2000 refers to the Conference on Computational Natural Language Learning (CoNLL-2000). Each year the conference hosted a workshop to tackle a thorny NLP problem, and in 2000 it was noun chunking. A model was trained on the Wall Street Journal, with "sections 15-18 as training data (211727 tokens) and section 20 as test data (47377 tokens)". You can look at the procedures used [here](https://www.clips.uantwerpen.be/conll2000/chunking/) and the [results](https://ifarm.nl/erikt/research/np-chunking.html).
## Task: Improving your bot with a little NLP
In the previous lesson you built a very simple Q&A bot. Now, you'll make Marvin a bit more sympathetic by analyzing your input for sentiment and printing out a response to match the sentiment. You'll also need to identify a `noun_phrase` and ask about it.
Your steps when building a better conversational bot:
1. Print instructions advising the user how to interact with the bot
2. Start loop
1. Accept user input
2. If user has asked to exit, then exit
3. Process user input and determine appropriate sentiment response
4. If a noun phrase is detected in the sentiment, pluralize it and ask for more input on that topic
5. Print response
3. loop back to step 2
Here is the code snippet to determine sentiment using TextBlob. Note there are only four *gradients* of sentiment response (you could have more if you like):
```python
if user_input_blob.polarity <= -0.5:
response = "Oh dear, that sounds bad. "
elif user_input_blob.polarity <= 0:
response = "Hmm, that's not great. "
elif user_input_blob.polarity <= 0.5:
response = "Well, that sounds positive. "
elif user_input_blob.polarity <= 1:
response = "Wow, that sounds great. "
```
Here is some sample output to guide you (user input is on the lines with starting with >):
```
Hello, I am Marvin, the friendly robot.
You can end this conversation at any time by typing 'bye'
After typing each answer, press 'enter'
How are you today?
> I am ok
Well, that sounds positive. Can you tell me more?
> I went for a walk and saw a lovely cat
Well, that sounds positive. Can you tell me more about lovely cats?
> cats are the best. But I also have a cool dog
Wow, that sounds great. Can you tell me more about cool dogs?
> I have an old hounddog but he is sick
Hmm, that's not great. Can you tell me more about old hounddogs?
> bye
It was nice talking to you, goodbye!
```
One possible solution to the task is [here](solution/bot.py)
✅ Knowledge Check
1. Do you think the sympathetic responses would 'trick' someone into thinking that the bot actually understood them?
2. Does identifying the noun phrase make the bot more 'believable'?
3. Why would extracting a 'noun phrase' from a sentence a useful thing to do?
## 🚀Challenge
Take a task in the prior knowledge check and try to implement it. Test the bot on a friend. Can it trick them? Can you make your bot more 'believable?'
## [Post-lecture quiz](link-to-quiz-app)
## Review & Self Study
In the next few lessons you will learn more about sentiment analysis. Research this interesting technique in articles such as these on [KDNuggets](https://www.kdnuggets.com/tag/nlp)
**Assignment**: [Search for a bot](assignment.md)

@ -0,0 +1,11 @@
# Search for a bot
## Instructions
Bots are everywhere. Your assignment: find one and adopt it! You can find them on web sites, in banking applications, and on the phone, for example when you call financial services companies for advice or account information. Analyze the bot and see if you can confuse it. If you can confuse the bot, why do you think that happened? Write a short paper about your experience.
## Rubric
| Criteria | Exemplary | Adequate | Needs Improvement |
| -------- | ------------------------------------------------------------------------------------------------------------- | -------------------------------------------- | --------------------- |
| | A full page paper is written, explaining the presumed bot architecture and outlining your experience with it | A paper is incomplete or not well researched | No paper is submitted |

@ -0,0 +1,44 @@
import random
from textblob import TextBlob
from textblob.np_extractors import ConllExtractor
extractor = ConllExtractor()
def main():
print("Hello, I am Marvin, the friendly robot.")
print("You can end this conversation at any time by typing 'bye'")
print("After typing each answer, press 'enter'")
print("How are you today?")
while True:
# wait for the user to enter some text
user_input = input("> ")
if user_input.lower() == "bye":
# if they typed in 'bye' (or even BYE, ByE, byE etc.), break out of the loop
break
else:
# Create a TextBlob based on the user input. Then extract the noun phrases
user_input_blob = TextBlob(user_input, np_extractor=extractor)
np = user_input_blob.noun_phrases
response = ""
if user_input_blob.polarity <= -0.5:
response = "Oh dear, that sounds bad. "
elif user_input_blob.polarity <= 0:
response = "Hmm, that's not great. "
elif user_input_blob.polarity <= 0.5:
response = "Well, that sounds positive. "
elif user_input_blob.polarity <= 1:
response = "Wow, that sounds great. "
if len(np) != 0:
# There was at least one noun phrase detected, so ask about that and pluralise it
# e.g. cat -> cats or mouse -> mice
response = response + "Can you tell me more about " + np[0].pluralize() + "?"
else:
response = response + "Can you tell me more?"
print(response)
print("It was nice talking to you, goodbye!")
# Start the program
main()

@ -0,0 +1,149 @@
# Translation and Sentiment Analysis with ML
Add a sketchnote if possible/appropriate
![Embed a video here if available](video-url)
## [Pre-lecture quiz](link-to-quiz-app)
In the previous lessons you learned how to build a basic bot using TextBlob, a library that embeds ML behind-the-scenes to perform basic NLP tasks such as noun phrase extraction. Another important challenge in computational linguistics is accurate *translation* of a sentence from one spoken or written language to another.
This is a very hard problem compounded by the fact that there are thousands of languages and each can have very different grammar rules. One approach is to convert the formal grammar rules for one language, such as English, into a non-language dependent structure, and then translate it by converting back to another language. This means that you would take the following steps:
1. Identify or tag the words in input language into nouns, verbs etc.
2. Produce a direct translation of each word in the target language format
> ☘️ **Example**: In **English**, the simple sentence `I feel happy` is 3 words in the order **subject** (I), **verb** (feel), **adjective** (happy). However, in the **Irish** language, the same sentence has a very different grammatical structure - emotions like "*happy*" or "*sad*" are expressed as being *upon* you. The English phrase `I feel happy` in Irish would be `Tá athas orm`. A *literal* translation would be `Happy is upon me`. Of course, an Irish speaker translating to English would say `I feel happy`, not `Happy is upon me`, because they understand the meaning of the sentence, even if the words and sentence structure are different. The formal order for the sentence in Irish are **verb** (Tá or is), **adjective** (athas, or happy), **subject** (orm, or upon me).
## Translation
A naive translation program might translate words only, ignoring the sentence structure.
✅ If you've learned a second (or third or more) language as an adult, you might have started by thinking in your native language, translating a concept word by word in your head to the second language, and then speaking out your translation. This is similar to what naive translation computer programs are doing. It's important to get past this phase to attain fluency!
Naive translation leads to bad (and sometimes hilarious) mistranslations: `I feel happy` translates literally to `Mise bhraitheann athas` in Irish. That means (literally) `me feel happy` and is not a valid Irish sentence. Even though English and Irish are languages spoken on two closely neighboring islands, they are very different languages with different grammar structures.
> You can watch some videos about Irish linguistic traditions such as [this one](https://www.youtube.com/watch?v=mRIaLSdRMMs)
### Machine learning approaches
So far, you've learned about the formal rules approach to natural language processing. Another approach is to ignore the meaning of the words, and _instead use machine learning to detect patterns_. This can work in translation if you have lots of text (a *corpus*) or texts (*corpora*) in both the origin and target languages. For instance, consider the case of *Pride and Prejudice*, a well-known English novel written by Jane Austen in 1813. If you consult the book in English and a human translation of the book in *French*, you could detect phrases in one that are idiomatically translated into the other. You'll do that in a minute.
For instance, when an English phrase such as `John looked at the cake with a wolfish grin` is translated literally, to, say French, it might become `John regarda le gâteau avec un sourire de loup`. A reader of both languages would understand that the direct translation of `wolfish grin` is not the French translation `wolf smile` but a synonym - in this case for being very hungry or voracious. A better translation that a human might make would be `John regarda le gâteau avec voracité`, because it better conveys the meaning. If a ML model has enough human translations to build a model on, it can improve the accuracy of translations by identifying common patterns in texts that have been previously translated by expert human speakers of both languages.
### Task: Translation
You can use TextBlob to translate sentences. Try the famous first line of **Pride and Prejudice**:
```python
from textblob import TextBlob
blob = TextBlob(
"It is a truth universally acknowledged, that a single man in possession of a good fortune, must be in want of a wife!"
)
print(blob.translate(to="fr"))
```
TextBlob does a pretty good job at the translation: "C'est une vérité universellement reconnue, qu'un homme célibataire en possession d'une bonne fortune doit avoir besoin d'une femme!".
I would argue that TextBlob's translation is far more exact, in fact, than the 1932 French translation of the book by V. Leconte and Ch. Pressoir:
"C'est une vérité universelle qu'un celibataire pourvu d'une belle fortune doit avoir envie de se marier, et, si peu que l'on sache de son sentiment à cet egard, lorsqu'il arrive dans une nouvelle residence, cette idee est si bien fixée dans l'esprit de ses voisins qu'ils le considèrent sur-le-champ comme la propriété légitime de l'une ou l'autre de leurs filles."
In this case, the translation informed by ML does a better job than the human translator who is unnecessarily putting words in the original author's mouth for 'clarity'.
> What's going on here? and why is TextBlob so good at translation? Well, behind the scenes, it's using Google translate, a sophisticated AI able to parse millions of phrases to predict the best strings for the task at hand. There's nothing manual going on here and you need an internet connection to use `blob.translate`.
✅ Try some more sentences. Which is better, ML or human translation? In which cases?
## Sentiment analysis
Another area where machine learning can work very well is sentiment analysis. A non-ML approach to sentiment is to identify words and phrases which are 'positive' and 'negative'. Then, given a new piece of text, calculate the total value of the positive, negative and neutral words to identify the overall sentiment.
This approach is easily tricked as you may have seen in the Marvin task - the sentence `Great, that was a wonderful waste of time, I'm glad we are lost on this dark road` is a sarcastic, negative sentiment sentence, but the simple algorithm detects 'great', 'wonderful', 'glad' as positive and 'waste', 'lost' and 'dark' as negative. The overall sentiment is swayed by these conflicting words.
✅ Stop a second and think about how we convey sarcasm as human speakers. Tone inflection plays a large role. Try to say the phrase "Well, that film was awesome" to discover how your voice conveys meaning.
### Machine learning approaches
The ML approach would be to hand gather negative and positive bodies of text - tweets, or movie reviews, or anything where the human has given a score *and* a written opinion. Then NLP techniques can be applied to opinions and scores, so that patterns emerge (e.g., positive movie reviews tend to have the phrase 'Oscar worthy' more than negative movie reviews, or positive restaurant reviews say 'gourmet' much more than 'disgusting').
> ⚖️ **Example**: If you worked in a politician's office and there was some new law being debated, constituents might write to the office with emails supporting or emails against the particular new law. Let's say you are tasked with reading the emails and sorting them in 2 piles, *for* and *against*. If there were a lot of emails, you might be overwhelmed attempting to read them all. Wouldn't it be nice if a bot could read them all for you, understand them and tell you in which pile each email belonged?
>
> One way to achieve that is to use Machine Learning. You would train the model with a portion of the *against* emails and a portion of the *for* emails. The model would tend to associate phrases and words with the against side and the for side, *but it would not understand any of the content*, only that certain words and patterns were more likely to appear in an *against* or a *for* email. You could test it with some emails that you had not used to train the model, and see if it came to the same conclusion as you did. Then, once you were happy with the accuracy of the model, you could process future emails without having to read each one.
✅ Does this process sound like processes you have used in previous lessons?
### Task: Sentimental Sentences
Sentiment is measured in with a *polarity* of -1 to 1, meaning -1 is the most negative sentiment, and 1 is the most positive. Sentiment is also measured with an 0 - 1 score for objectivity (0) and subjectivity (1).
Take another look at Jane Austen's *Pride and Prejudice*. The text is available here at [Project Gutenberg](https://www.gutenberg.org/files/1342/1342-h/1342-h.htm). The sample below shows a short program which analyses the sentiment of first and last sentences from the book and display its sentiment polarity and subjectivity/objectivity score. You should us the TextBlob library (described above) to determine sentiment (you do not have to write your own sentiment calculator) in the following task.
```python
from textblob import TextBlob
quote1 = """It is a truth universally acknowledged, that a single man in possession of a good fortune, must be in want of a wife."""
quote2 = """Darcy, as well as Elizabeth, really loved them; and they were both ever sensible of the warmest gratitude towards the persons who, by bringing her into Derbyshire, had been the means of uniting them."""
sentiment1 = TextBlob(quote1).sentiment
sentiment2 = TextBlob(quote2).sentiment
print(quote1 + " has a sentiment of " + str(sentiment1))
print(quote2 + " has a sentiment of " + str(sentiment2))
# outputs:
# It is a truth universally acknowledged, that a single man in possession of a good fortune, must be in want # of a wife. has a sentiment of Sentiment(polarity=0.20952380952380953, subjectivity=0.27142857142857146)
# Darcy, as well as Elizabeth, really loved them; and they were
# both ever sensible of the warmest gratitude towards the persons
# who, by bringing her into Derbyshire, had been the means of
# uniting them. has a sentiment of Sentiment(polarity=0.7, subjectivity=0.8)
```
Your task is to determine, using sentiment polarity, if *Pride and Prejudice* has more absolutely positive sentences than absolutely negative ones. For this task, you may assume that a polarity score of 1 or -1 is absolutely positive or negative respectively.
**Steps:**
1. Download a [copy of Pride and Prejudice](https://www.gutenberg.org/files/1342/1342-h/1342-h.htm) from Project Gutenberg as a .txt file. Remove the metadata at the start and end of the file, leaving only the original text
2. Open the file in Python and extract the contents as a string
3. Create a TextBlob using the book string
4. Analyse each sentence in the book in a loop
1. If the polarity is 1 or -1 store the sentence in an array or list of positive or negative messages
5. At the end, print out all the positive sentences and negative sentences (separately) and the number of each.
Here is a sample [solution](solutions/book.py).
✅ Knowledge Check
1. The sentiment is based on words used in the sentence, but does it code *understand* the words?
2. Do you think the sentiment polarity is accurate, or in other words, do you *agree* with the scores?
1. In particular, do you agree or disagree with the absolute **positive** polarity of the following sentences?
* “What an excellent father you have, girls!” said she, when the door was shut.
* “Your examination of Mr. Darcy is over, I presume,” said Miss Bingley; “and pray what is the result?” “I am perfectly convinced by it that Mr. Darcy has no defect.
* How wonderfully these sort of things occur!
* I have the greatest dislike in the world to that sort of thing.
* Charlotte is an excellent manager, I dare say.
* “This is delightful indeed!
* I am so happy!
* Your idea of the ponies is delightful.
2. The next 3 sentences were scored with an absolute positive sentiment, but on close reading, they are not positive sentences. Why did the sentiment analysis think they were positive sentences?
* Happy shall I be, when his stay at Netherfield is over!” “I wish I could say anything to comfort you,” replied Elizabeth; “but it is wholly out of my power.
* If I could but see you as happy!
* Our distress, my dear Lizzy, is very great.
3. Do you agree or disagree with the absolute **negative** polarity of the following sentences?
- Everybody is disgusted with his pride.
- “I should like to know how he behaves among strangers.” “You shall hear then—but prepare yourself for something very dreadful.
- The pause was to Elizabeths feelings dreadful.
- It would be dreadful!
✅ Any aficionado of Jane Austen will understand that she often uses her books to critique the more ridiculous aspects of English Regency society. Elizabeth Bennett, the main character in Pride and Prejudice, is a keen social observer (like the author) and her language is often heavily nuanced. Even Mr. Darcy (the love interest in the story) notes Elizabeth's playful and teasing use of language: "I have had the pleasure of your acquaintance long enough to know that you find great enjoyment in occasionally professing opinions which in fact are not your own."
## 🚀Challenge
Can you make Marvin even better by extracting other features from the user input?
## [Post-lecture quiz](link-to-quiz-app)
## Review & Self Study
There are many ways to extract sentiment from text. Think of the business applications that might make use of this technique. Think about how it can go awry. Read more about sophisticated enterprise-ready systems that analyze sentiment such as [Azure Text Analysis](https://docs.microsoft.com/en-us/azure/cognitive-services/Text-Analytics/how-tos/text-analytics-how-to-sentiment-analysis?tabs=version-3-1?WT.mc_id=academic-15963-cxa). Test some of the Pride and Prejudice sentences above and see if it can detect nuance.
**Assignment**: [Poetic License](assignment.md)

@ -0,0 +1,10 @@
# Poetic license
## Instructions
In [this notebook](https://www.kaggle.com/jenlooper/emily-dickinson-word-frequency) you can find over 500 Emily Dickinson poems previously analyzed for sentiment using Azure text analytics. Using this dataset, analyze it using the techniques described in the lesson. Does the suggested sentiment of a poem match the more sophistic Azure service's decision? Why or why not, in your opinion? Does anything surprise you?
## Rubric
| Criteria | Exemplary | Adequate | Needs Improvement |
| -------- | -------------------------------------------------------------------------- | ------------------------------------------------------- | ------------------------ |
| | A notebook is presented with a solid analysis of an author's sample output | The notebook is incomplete or does not perform analysis | No notebook is presented |

@ -0,0 +1,23 @@
from textblob import TextBlob
# You should download the book text, clean it, and import it here
with open("pride.txt", encoding="utf8") as f:
file_contents = f.read()
book_pride = TextBlob(file_contents)
positive_sentiment_sentences = []
negative_sentiment_sentences = []
for sentence in book_pride.sentences:
if sentence.sentiment.polarity == 1:
positive_sentiment_sentences.append(sentence)
if sentence.sentiment.polarity == -1:
negative_sentiment_sentences.append(sentence)
print("The " + str(len(positive_sentiment_sentences)) + " most positive sentences:")
for sentence in positive_sentiment_sentences:
print("+ " + str(sentence.replace("\n", "").replace(" ", " ")))
print("The " + str(len(negative_sentiment_sentences)) + " most negative sentences:")
for sentence in negative_sentiment_sentences:
print("- " + str(sentence.replace("\n", "").replace(" ", " ")))

@ -0,0 +1,55 @@
# [Lesson Topic]
Add a sketchnote if possible/appropriate
![Embed a video here if available](video-url)
## [Pre-lecture quiz](link-to-quiz-app)
Describe what we will learn
### Introduction
Describe what will be covered
> Notes
### Prerequisite
What steps should have been covered before this lesson?
### Preparation
Preparatory steps to start this lesson
---
[Step through content in blocks]
## [Topic 1]
### Task:
Work together to progressively enhance your codebase to build the project with shared code:
```html
code blocks
```
✅ Knowledge Check - use this moment to stretch students' knowledge with open questions
## [Topic 2]
## [Topic 3]
## 🚀Challenge
Add a challenge for students to work on collaboratively in class to enhance the project
Optional: add a screenshot of the completed lesson's UI if appropriate
## [Post-lecture quiz](link-to-quiz-app)
## Review & Self Study
**Assignment**: [Assignment Name](assignment.md)

@ -0,0 +1,9 @@
# [Assignment Name]
## Instructions
## Rubric
| Criteria | Exemplary | Adequate | Needs Improvement |
| -------- | --------- | -------- | ----------------- |
| | | | |

@ -0,0 +1,55 @@
# [Lesson Topic]
Add a sketchnote if possible/appropriate
![Embed a video here if available](video-url)
## [Pre-lecture quiz](link-to-quiz-app)
Describe what we will learn
### Introduction
Describe what will be covered
> Notes
### Prerequisite
What steps should have been covered before this lesson?
### Preparation
Preparatory steps to start this lesson
---
[Step through content in blocks]
## [Topic 1]
### Task:
Work together to progressively enhance your codebase to build the project with shared code:
```html
code blocks
```
✅ Knowledge Check - use this moment to stretch students' knowledge with open questions
## [Topic 2]
## [Topic 3]
## 🚀Challenge
Add a challenge for students to work on collaboratively in class to enhance the project
Optional: add a screenshot of the completed lesson's UI if appropriate
## [Post-lecture quiz](link-to-quiz-app)
## Review & Self Study
**Assignment**: [Assignment Name](assignment.md)

@ -0,0 +1,9 @@
# [Assignment Name]
## Instructions
## Rubric
| Criteria | Exemplary | Adequate | Needs Improvement |
| -------- | --------- | -------- | ----------------- |
| | | | |

@ -0,0 +1,20 @@
# Getting Started with Natural Language Processing
In this section of the curriculum, you will be introduced to one of the most widespread uses of machine learning: Natural Language Processing (NLP). Derived from Computational Linguistics, this category of Artificial Intelligence is the bridge between humans and machines via voice or textual communication.
In these lessons we'll learn the basics of NLP by building small conversational bots to learn how Machine Learning aids in making these conversations more and more 'smart'. You'll travel back in time, chatting with Elizabeth Bennett and Mr. Darcy from Jane Austen's classic novel, **Pride and Prejudice**, published in 1813. Then, you'll further your knowledge by learning about sentiment analysis via hotel reviews in Europe.
![Pride and Prejudice book and tea](images/p&p.jpg)
> Photo by <a href="https://unsplash.com/@elaineh?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Elaine Howlin</a> on <a href="https://unsplash.com/s/photos/pride-and-prejudice?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Unsplash</a>
## Lessons
1. [Introduction to Natural Language Processing](1-Introduction-to-NLP/README.md)
2. [Common NLP Tasks and Techniques](2-Tasks/README.md)
3. [Translation and Sentiment Analysis with Machine Learning](3-Translation-Sentiment/README.md)
4. TBD
5. TBD
## Credits
These Natural Language Processing lessons were written with ☕ by [Stephen Howell]([Twitter](https://twitter.com/Howell_MSFT))

Binary file not shown.

After

Width:  |  Height:  |  Size: 147 KiB

@ -1,33 +1,95 @@
# Project
[![GitHub license](https://img.shields.io/github/license/microsoft/ML-For-Beginners.svg)](https://github.com/microsoft/ML-For-Beginners/blob/master/LICENSE)
[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/graphs/contributors/)
[![GitHub issues](https://img.shields.io/github/issues/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/issues/)
[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/ML-For-Beginners.svg)](https://GitHub.com/microsoft/ML-For-Beginners/pulls/)
[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com)
> This repo has been populated by an initial template to help get you started. Please
> make sure to update the content to build a great experience for community-building.
[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/ML-For-Beginners.svg?style=social&label=Watch&maxAge=2592000)](https://GitHub.com/microsoft/ML-For-Beginners/watchers/)
[![GitHub forks](https://img.shields.io/github/forks/microsoft/ML-For-Beginners.svg?style=social&label=Fork&maxAge=2592000)](https://GitHub.com/microsoft/ML-For-Beginners/network/)
[![GitHub stars](https://img.shields.io/github/stars/microsoft/ML-For-Beginners.svg?style=social&label=Star&maxAge=2592000)](https://GitHub.com/microsoft/ML-For-Beginners/stargazers/)
As the maintainer of this project, please make a few updates:
# Machine Learning for Beginners - A Curriculum
- Improving this README.MD file to provide a great experience
- Updating SUPPORT.MD with content about this project's support experience
- Understanding the security reporting process in SECURITY.MD
- Remove this section from the README
> 🌍 Travel around the world as we explore Machine Learning by means of world cultures 🌍
## Contributing
Azure Cloud Advocates at Microsoft are pleased to offer a 12-week, 24-lesson curriculum all about traditional Machine Learning. In this lesson group, you will learn about what is sometimes called 'classic' ML, using primarily Scikit-Learn as a library and avoiding deep learning, which is covered in our forthcoming 'AI for Beginners' curriculum.
This project welcomes contributions and suggestions. Most contributions require you to agree to a
Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us
the rights to use your contribution. For details, visit https://cla.opensource.microsoft.com.
Travel with us around the world as we apply these classic techniques to data from many areas of the world. Each lesson includes pre- and post-lesson quizzes, written instructions to complete the lesson, a solution, an assignment and more. Our project-based pedagogy allows you to learn while building, a proven way for new skills to 'stick'.
When you submit a pull request, a CLA bot will automatically determine whether you need to provide
a CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions
provided by the bot. You will only need to do this once across all repos using our CLA.
**Hearty thanks to our authors (list all authors here)** Jen Looper, Stephen Howell, Francesca Lazzeri
This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/).
For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or
contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments.
**🙏Special thanks🙏 to our Microsoft Student Ambassador reviewers and content contributors**, notably Rishit Dagli, Rohan Raj, Muhammad Sakib Khan Inan, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila, and Snigdha Agarwal
**Teachers**, we have [included some suggestions](for-teachers.md) on how to use this curriculum. If you would like to create your own lessons, we have also included a [lesson template](lesson-template/README.md)
**Students**, to use this curriculum on your own, fork the entire repo and complete the exercises on your own:
- Start with a pre-lecture quiz
- Read the lecture and complete the activities, pausing and reflecting at each knowledge check.
- Try to create the projects by comprehending the lessons rather than running the solution code; however that code is available in the `/solution` folders in each project-oriented lesson.
- Take the post-lecture quiz
- Complete the challenge
- Complete the assignment
- Consider forming a study group with friends and go through the content together.
- For further study, we recommend following [Microsoft Learn](https://docs.microsoft.com?WT.mc_id=academic-15963-cxa) modules and learning paths.
> Future space for Promo Video
[![Promo video](screenshot.png)](https://youtube.com/watch?v=R1wrdtmBSII "Promo video")
> Click the image above for a video about the project and the folks who created it!
## Pedagogy
We have chosen two pedagogical tenets while building this curriculum: ensuring that it is hands-on **project-based** and that it includes **frequent quizzes**. In addition, this curriculum has a common **theme** to give it cohesion.
By ensuring that the content aligns with projects, the process is made more engaging for students and retention of concepts will be augmented. In addition, a low-stakes quiz before a class sets the intention of the student towards learning a topic, while a second quiz after class ensures further retention. This curriculum was designed to be flexible and fun and can be taken in whole or in part. The projects start small and become increasingly complex by the end of the 12 week cycle.
> Find our [Code of Conduct](CODE_OF_CONDUCT.md), [Contributing](CONTRIBUTING.md), and [Translation](TRANSLATIONS.md) guidelines. We welcome your constructive feedback!
>
## Each lesson includes:
- optional sketchnote
- optional supplemental video
- pre-lecture warmup quiz
- written lesson
- for project-based lessons, step-by-step guides on how to build the project
- knowledge checks
- a challenge
- supplemental reading
- assignment
- post-lecture quiz
> **A note about quizzes**: All quizzes are contained [in this app](https://jolly-sea-0a877260f.azurestaticapps.net), for 48 total quizzes of three questions each. They are linked from within the lessons but the quiz app can be run locally; follow the instruction in the `quiz-app` folder.
| Lesson Number | Section | Concepts Taught | Learning Objectives | Linked Lesson | Author |
| :-----------: | :--------------------------------------------------------: | :-----------------------------------------------: | --------------------------------------------------------------------------------------------------------- | :-------------------------------------------------: | :-------: |
| 01 | [Introduction](Introduction/README.md) | Introduction to Machine Learning | Learn the basic concepts behind Machine Learning | [lesson](Introduction/1-intro-to-ML/README.md) | Amy |
| 02 | [Introduction](Introduction/README.md) | The History of Machine Learning | Learn the history underlying this field | [lesson](Introduction/2-history-of-ML/README.md) | Amy |
| 03 | [Introduction](Introduction/README.md) | The Ethics of Machine Learning | What are the important ethical issues that students should consider when building and applying ML models? | [lesson](Introduction/3-ethics/README.md) | Tomomi |
| 04 | Introduction to Regression | [Regression](Regression/README.md) | Get started with Python and Scikit-Learn for Regression models | [lesson](Regression/1-Tools/README.md) | Jen |
| 05 | North American Pumpkin Prices 🎃 | [Regression](Regression/README.md) | Visualize and clean data in preparation for ML | [lesson](Regression/2-Data/README.md) | Jen |
| 06 | North American Pumpkin Prices 🎃 | [Regression](Regression/README.md) | Build Linear and Polynomial Regression models | [lesson](Regression/3-Linear/README.md) | Jen |
| 07 | North American Pumpkin Prices 🎃 | [Regression](Regression/README.md) | Build a Logistic Regression model | [lesson](Regression/4-Logistic/README.md) | Jen |
| 08 | A Web App 🔌 | [Web App](Web-App/README.md) | Build a Web app to use your trained model | [lesson](Web-App/README.md) | Jen |
| 09 | Introduction to Classification | [Classification](Classification/README.md) | Clean, Prep, and Visualize your Data; Introduction to Classification | [lesson](Classification/1-Data/README.md) | Cassie |
| 10 | Delicious Asian Recipes 🍜 | [Classification](Classification/README.md) | Build a Discriminative Model | [lesson](Classification/2-Descriminative/README.md) | Cassie |
| 11 | Delicious Asian Recipes 🍜 | [Classification](Classification/README.md) | Build a Generative Model | [lesson](Classification/3-Generative/README.md) | Cassie |
| 12 | Delicious Asian Recipes 🍜 | [Classification](Classification/README.md) | Build a Web App using your Model | [lesson](Classification/4-Applied/README.md) | Cassie |
| 13 | Introduction to Clustering | [Clustering](Clustering/README.md) | Clean, Prep, and Visualize your Data; Introduction to Clustering | [lesson](Clustering/1-Visualize/README.md) | Jen |
| 14 | Exploring Nigerian Musical Tastes 🎧 | [Clustering](Clustering/README.md) | Explore the K-Means Clustering Method | [lesson](Clustering/2-K-Means/README.md) | Jen |
| 15 | Introduction to Natural Language Processing ☕️ | [Natural Language Processing](NLP/README.md) | Learn the basics about NLP by building a simple bot | [lesson](NLP/1-Introduction-to-NLP/README.md) | Stephen |
| 16 | Common NLP Tasks ☕️ | [Natural Language Processing](NLP/README.md) | Deepen your NLP knowledge by understanding common tasks required when dealing with language structures | [lesson](NLP/2-Tasks/README.md) | Stephen |
| 17 | Translation and Sentiment Analysis ❤️ | [Natural Language Processing](NLP/README.md) | Translation and Sentiment analysis with Jane Austen | [lesson](NLP/3-Translation-Sentiment/README.md) | Stephen |
| 18 | Romantic Hotels of Europe ♥️ | [Natural Language Processing](NLP/README.md) | Sentiment analysis, continued | [lesson]() | Stephen |
| 19 | Romantic Hotels of Europe ♥️ | [Natural Language Processing](NLP/README.md) | Sentiment analysis, continued | [lesson]() | Stephen |
| 20 | Introduction to Time Series Forecasting | [Time Series](TimeSeries/README.md) | Introduction to Time Series Forecasting | [lesson](TimeSeries/1-Introduction/README.md) | Francesca |
| 21 | ⚡️ World Power Usage ⚡️ Time Series Forecasting with ARIMA ⚡️ | [Time Series](TimeSeries/README.md) | Time Series Forecasting with ARIMA | [lesson](TimeSeries/2-ARIMA/README.md) | Francesca |
| 22 | Introduction to Reinforcement Learning | [Reinforcement Learning](Reinforcement/README.md) | tbd | [lesson]() | Dmitry |
| 23 | Help Peter avoid the Wolf! 🐺 | [Reinforcement Learning](Reinforcement/README.md) | tbd | [lesson]() | Dmitry |
| 24 | Real-World ML Scenarios and Applications | ML in the Wild | Interesting and Revealing real-world applications of classical ML | [lesson](Real-World/1-Applications/README.md) | Ornella |
## Offline access
You can run this documentation offline by using [Docsify](https://docsify.js.org/#/). Fork this repo, [install Docsify](https://docsify.js.org/#/quickstart) on your local machine, and then in the root folder of this repo, type `docsify serve`. The website will be served on port 3000 on your localhost: `localhost:3000`.
## Trademarks
This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft
trademarks or logos is subject to and must follow
[Microsoft's Trademark & Brand Guidelines](https://www.microsoft.com/en-us/legal/intellectualproperty/trademarks/usage/general).
Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship.
Any use of third-party trademarks or logos are subject to those third-party's policies.

@ -0,0 +1,83 @@
# Machine Learning in the Real World
In this curriculum, you have learned many ways to prepare data for training and create machine learning models. You built a series of classic Regression, Clustering, Classification, Natural Language Processing, and Time Series models. Congratulations! Now, you might be wondering what it's all for...what are the real world applications for these models?
While a lot of interest in industry has been garnered by AI, which usually leverages Deep Learning, there are still valuable applications for classical machine learning models, some of which you use today, although you might not be aware of it. In this lesson, you'll explore how ten different industries and subject-matter domains use these types of models to make their applications more performant, reliable, intelligent, and thus more valuable to users.
## [Pre-lecture quiz](link-to-quiz-app)
## Finance
One of the major consumers of classical machine learning models is the finance industry.
### Credit card fraud detection
We learned about [k-means clustering](Clustering/2-K-Means/README.md) earlier in the course, but how can it be used to solve problems related to credit card fraud?
https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.680.1195&rep=rep1&type=pdf
### Wealth management
## Education
### Predicting student behavior
### Preventing plagiarism
### Course recommendations
## Retail
### Personalizing the customer journey
### Inventory management
## Health Care
### Optimizing drug delivery
### Hospital re-entry management
### Disease management
## Ecology and Green Tech
### Forest management
### Motion sensing of animals
### Energy Management
This article discusses in detail how clustering and time series forecasting help predict future energy use in Ireland, based off of smart metering: https://www-cdn.knime.com/sites/default/files/inline-images/knime_bigdata_energy_timeseries_whitepaper.pdf
## Insurance
### Actuarial tasks
## Consumer Electronics
### Motion sensing
## Software
### UI regression
### Document search
### Recommendation engines
## Arts, Culture, and Literature
### Fake news detection
### Classifying artifacts
## Marketing
### 'Ad words'
### Customer segmentation
✅ Knowledge Check - use this moment to stretch students' knowledge with open questions
## 🚀Challenge
Add a challenge for students to work on collaboratively in class to enhance the project
## [Post-lecture quiz](link-to-quiz-app)
## Review & Self Study
**Assignment**: [Assignment Name](assignment.md)

@ -0,0 +1,11 @@
# Getting Started with
In this section of the curriculum, you will be introduced to ...
## Lessons
1. [Real-World Applications for ML](1-Applications/README.md)
## Credits
"Real-World Applications" was written with ♥️ by [Name](Twitter)

@ -0,0 +1,190 @@
# Get started with Python and Scikit-Learn for Regression models
![Logistic vs. Linear Regression Infographic](./images/logistic-linear.png)
> Infographic by [Dasani Madipalli](https://twitter.com/dasani_decoded)
## [Pre-lecture quiz](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/7/)
## Introduction
The lessons in this section cover types of Regression in the context of machine learning. Regression models can help determine the relationship between variables. This type of model can predict values such as length, temperature, or age, thus uncovering relationships between variables as it analyzes datapoints.
In this series of lessons, you'll discover the difference between Linear vs. Logistic Regression, and when you should use one or the other.
But before you do anything, make sure you have the right tools in place!
In this lesson, you will learn:
- How to configure your computer for local machine learning tasks
- Getting used to working with Jupyter notebooks
- An introduction to Scikit-Learn, including installation
- An introduction to Linear Regression with a hands-on exercise
## Installations and Configurations
[![Using Python with Visual Studio Code](https://img.youtube.com/vi/7EXd4_ttIuw/0.jpg)](https://youtu.be/7EXd4_ttIuw "Using Python with Visual Studio Code")
> Click this image to watch a video on using Python within VS Code.
1. Ensure that [Python](https://www.python.org/downloads/) is installed on your computer. You will use Python for many data science and machine learning tasks. Most computer systems already include a Python installation. There are useful [Python Coding Packs](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-15963-cxa) available as well to ease the setup for some users. Some usages of Python, however, require one version of the software, whereas others require a different version. For this reason, it's useful to work within a virtual environment.
2. Make sure you have Visual Studio Code installed on your computer. Follow [these instructions](https://code.visualstudio.com/) for the basic installation. You are going to use Python in Visual Studio Code in this course, so you might want to brush up on how to [configure](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-15963-cxa) VS Code for Python development.
> Get comfortable with Python by working through this collection of [Learn modules](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-15963-cxa)
3. Install Scikit-Learn by following [these instructions](https://scikit-learn.org/stable/install.html). Since you need to ensure that you use Python 3, it's recommended that you use a virtual environment. Note, if you are installing this library on a M1 Mac, there are special instructions on the page linked above.
## Your ML Authoring Environment
You are going to use **notebooks** to develop your Python code and create machine learning models. This type of file is a common tool for data scientists, and they can be identified by their suffix or extension `.ipynb`.
Notebooks are an interactive environment that allow the developer to both code and add notes and write documentation around the code which is quite helpful for experimental or research-oriented projects.
### Working with A Notebook
In this folder, you will find the file `notebook.ipynb`. If you open it in VS Code, assuming VS Code is properly configured, a Jupyter server will start with Python 3+ started. You will find areas of the notebook that can be 'run' by pressing arrows next to code blocks, and other areas that contain text.
In your notebook, add a comment. To do this, click the 'md' icon and add a bit of markdown, like `# Welcome to your notebook`.
Next, add some Python code: Type `print('hello notebook')` and click the arrow to run the code. You should see the printed statement, 'hello notebook'.
![VS Code with a notebook open](images/notebook.png)
You can interleaf your code with comments to self-document the notebook.
✅ Think for a minute how different a web developer's working environment is versus that of a data scientist.
## Up and Running with Scikit-Learn
Now that Python is set up in your local environment and you are comfortable with Jupyter notebooks, let's get equally comfortable with Scikit-Learn (pronounce it `sci` as in `science`). Scikit-Learn provides an [extensive API](https://scikit-learn.org/stable/modules/classes.html#api-ref) to help you perform ML tasks.
According to their [website](https://scikit-learn.org/stable/getting_started.html), "Scikit-learn is an open source machine learning library that supports supervised and unsupervised learning. It also provides various tools for model fitting, data preprocessing, model selection and evaluation, and many other utilities."
### Let's unpack some of this jargon:
> 🎓 A machine learning **model** is a mathematical model that generates predictions given data to which it has not been exposed. It builds these predictions based on its analysis of data and extrapolating patterns.
> 🎓 **[Supervised Learning](https://wikipedia.org/wiki/Supervised_learning)** works by mapping an input to an output based on example pairs. It uses **labeled** training data to build a function to make predictions. [Download a printable Zine about Supervised Learning](https://zines.jenlooper.com/zines/supervisedlearning.html). Regression, which is covered in this group of lessons, is a type of supervised learning.
> 🎓 **[Unsupervised Learning](https://wikipedia.org/wiki/Unsupervised_learning)** works similarly but it maps pairs using **unlabeled data**. [Download a printable Zine about Unsupervised Learning](https://zines.jenlooper.com/zines/unsupervisedlearning.html)
> 🎓 **[Model Fitting](https://scikit-learn.org/stable/auto_examples/model_selection/plot_underfitting_overfitting.html#sphx-glr-auto-examples-model-selection-plot-underfitting-overfitting-py)** in the context of machine learning refers to the accuracy of the model's underlying function as it attempts to analyze data with which it is not familiar. **Underfitting** and **overfitting** are common problems that degrade the quality of the model as the model fits either not well enough or too well. This causes the model to make predictions either too closely aligned or too loosely aligned with its training data. An overfit model predicts training data too well because it has learned the data's details and noise too well. An underfit model is not accurate as it can neither accurately analyze its training data nor data it has not yet 'seen'.
![overfitting vs. correct model](images/overfitting.png)
> Infographic by [Jen Looper](https://twitter.com/jenlooper)
> 🎓 **Data Preprocessing** is the process whereby data scientists clean and convert data for use in the machine learning lifecycle.
> 🎓 **Model Selection and Evaluation** is the process whereby data scientists evaluate the performance of a model or any other relevant metric of a model by feeding it unseen data, selecting the most appropriate model for the task at hand.
> 🎓 **Feature Variable** A [feature](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) is a measurable property of your data. In many datasets it is expressed as a column heading like 'date' 'size' or 'color'.
> 🎓 **[Training and Testing](https://wikipedia.org/wiki/Training,_validation,_and_test_sets) datasets** Throughout this curriculum, you will divide up a dataset into at least two parts, one large group of data for 'training' and a smaller part for 'testing'. Sometimes you'll also find a 'validation' set. A training set is the group of examples you use to train a model. A validation set is a smaller independent group of examples that you use to tune the model's hyperparameters, or architecture, to improve the model. A test dataset is another independent group of data, often gathered from the original data, that you use to confirm the performance of the built model.
> 🎓 **Feature Selection and Feature Extraction** How do you know which variable to choose when building a model? You'll probably go through a process of feature selection or feature extraction to choose the right variables for the most performant model. They're not the same thing, however: "Feature extraction creates new features from functions of the original features, whereas feature selection returns a subset of the features." [source](https://wikipedia.org/wiki/Feature_selection)
In this course, you will use Scikit-Learn and other tools to build machine learning models to perform what we call 'traditional machine learning' tasks. We have deliberately avoided neural networks and deep learning, as they are better covered in our forthcoming 'AI for Beginners' curriculum.
Scikit-Learn makes it straightforward to build models and evaluate them for use. It is primarily focused on using numeric data and contains several ready-made datasets for use as learning tools. It also includes pre-built models for students to try. Let's explore the process of loading prepackaged data and using a built in estimator first ML model with Scikit-Learn with some basic data.
## Your First Scikit-Learn Notebook
> This tutorial was inspired by the [Linear Regression example](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) on Scikit-Learn's web site.
In the `notebook.ipynb` file associated to this lesson, clear out all the cells by pressing the 'trash can' icon.
In this section, you will work with a small dataset about diabetes that is built into Scikit-Learn for learning purposes. Imagine that you wanted to test a treatment for diabetic patients. Machine Learning models might help you determine which patients would respond better to the treatment, based on combinations of variables. Even a very basic Regression model, when visualized, might show information about variables that would help you organize your theoretical clinical trials.
> ✅ There are many types of Regression methods, and which one you pick depends on the answer you're looking for. If you want to predict the probable height for a person of a given age, you'd use Linear Regression, as you're seeking a **numeric value**. If you're interested in discovering whether a type of recipe should be considered vegan or not, you're looking for a **category assignment** so you would use Logistic Regression. You'll learn more about Logistic Regression later. Think a bit about some questions you can ask of data, and which of these methods would be more appropriate.
Let's get started on this task.
1. Import some libraries to help with your tasks. First, import `matplotlib`, a useful [graphing tool](https://matplotlib.org/). We will use it to create a line plot. Also import [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html), a useful library for handling numeric data in Python. Load up `datasets` and the `linear_model` from the Scikit-Learn library. Load `model_selection` for splitting data into training and test sets.
```python
import matplotlib.pyplot as plt
import numpy as np
from sklearn import datasets, linear_model, model_selection
```
2. Print out a bit of the built-in [diabetes housing dataset](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset). It includes 442 samples of data around diabetes, with 10 feature variables, some of which include:
age: age in years
bmi: body mass index
bp: average blood pressure
s1 tc: T-Cells (a type of white blood cells)
✅ This dataset includes the concept of 'sex' as a feature variable important to research around diabetes. Many medical datasets include this type of binary classification. Think a bit about how categorizations such as this might exclude certain parts of a population from treatments.
Now, load up the X and y data.
> 🎓 Remember, this is supervised learning, and we need a named 'y' target.
3. In a new cell, load the diabetes dataset as data and target (X and y, loaded as a tuple). X will be a data matrix, and y will be the regression target. Add some print commands to show the shape of the data matrix and its first element:
> 🎓 A **tuple** is an [ordered list of elements](https://wikipedia.org/wiki/Tuple).
✅ Think a bit about the relationship between the data and the regression target. Linear regression predicts relationships between feature X and target variable y. Can you find the [target](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) for the diabetes dataset in the documentation? What is this dataset demonstrating, given that target?
```python
X, y = datasets.load_diabetes(return_X_y=True)
print(X.shape)
print(X[0])
```
You can see that this data has 442 items shaped in arrays of 10 elements:
```text
(442, 10)
[ 0.03807591 0.05068012 0.06169621 0.02187235 -0.0442235 -0.03482076
-0.04340085 -0.00259226 0.01990842 -0.01764613]
```
4. Next, select a portion of this dataset to plot by arranging it into a new array using numpy's newaxis function. We are going to use Linear Regression to generate a line between values in this data, according to a pattern it determines.
```python
X = X[:, np.newaxis, 2]
```
✅ At any time, print out the data to check its shape
5. Now that you have data ready to be plotted, you can see if a machine can help determine a logical split between the numbers in this dataset. To do this, you need to split both the data (X) and the target (y) into test and training sets. Scikit-Learn has a straightforward way to do this; you can split your test data at a given point.
```python
X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33)
```
6. Now you are ready to train your model! Load up the Linear Regression model and train it with your X and y training sets:
`model.fit` is a command you'll see in many ML libraries such as TensorFlow
```python
model = linear_model.LinearRegression()
model.fit(X_train, y_train)
```
7. Then, create a prediction using test data. This will be used to draw the line between data groups
```python
y_pred = model.predict(X_test)
```
8. Now it's time to show the data in a plot. Matplotlib is a very useful tool for this task. Create a scatterplot of all the X and y test data, and use the prediction to draw a line in the most appropriate place, between the model's data groupings.
```python
plt.scatter(X_test, y_test, color='black')
plt.plot(X_test, y_pred, color='blue', linewidth=3)
plt.show()
```
![a scatterplot showing datapoints around diabetes](./images/scatterplot.png)
✅ Think a bit about what's going on here. A straight line is running through many small dots of data, but what is it doing exactly? Can you see how you should be able to use this line to predict where a new, unseen data point should fit in relationship to the plot's y axis? Try to put into words the practical use of this model.
Congratulations, you just built your first Linear Regression model, created a prediction with it, and displayed it in a plot!
---
## 🚀Challenge
Plot a different variable from this dataset. Hint: edit this line: `X = X[:, np.newaxis, 2]`. Given this dataset's target, what are you able to discover about the progression of diabetes as a disease?
## [Post-lecture quiz](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/8/)
## Review & Self Study
In this tutorial, you worked with simple linear regression, rather than univariate or multiple linear regression. Read a little about the differences between these methods, or take a look at [this video](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef)
Read more about the concept of Regression and think about what kinds of questions can be answered by this technique. Take this [tutorial](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-15963-cxa) to deepen your understanding.
**Assignment**: [A different dataset](assignment.md)

@ -0,0 +1,13 @@
# Regression with Scikit-Learn
## Instructions
Take a look at the [Linnerud dataset](https://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_linnerud.html#sklearn.datasets.load_linnerud) in Scikit-Learn. This dataset has multiple [targets](https://scikit-learn.org/stable/datasets/toy_dataset.html#linnerrud-dataset): 'It consists of three excercise (data) and three physiological (target) variables collected from twenty middle-aged men in a fitness club'.
In your own words, describe how to create a Regression model that would plot the relationship between the waistline and how many situps are accomplished. Do the same for the other datapoints in this dataset.
## Rubric
| Criteria | Exemplary | Adequate | Needs Improvement |
| -------- | --------- | -------- | ----------------- |
| Submit a descriptive paragraph | Well-written paragraph is submitted | A few sentences are submitted | No description is supplied |

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 148 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 219 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 283 KiB

File diff suppressed because one or more lines are too long

@ -0,0 +1,152 @@
# Build a Regression Model using Scikit-Learn: Prepare and Visualize Data
> ![Data Vizualization Infographic](./images/data-visualization.png)
> Infographic by [Dasani Madipalli](https://twitter.com/dasani_decoded)
## [Pre-lecture quiz](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/9/)
### Introduction
Now that you are set up with the tools you need to start tackling machine learning model-building with Scikit-Learn, you are ready to start asking questions of your data. As you work with data and apply ML solutions, it's very important to understand how to ask the right question to properly unlock the potentials of your dataset.
In this lesson, you will learn:
- Preparing your data for model-building
- Using Matplotlib for data visualization
### Asking the Right Question
The question you need answered will determine what type of ML algorithms you will leverage. For example, do you need to determine the differences between cars and trucks as they cruise down a highway via a video feed? You will need some kind of highly performant classification model to make that differentiation. It will need to be able to perform object detection, probably by showing bounding boxes around detected cars and trucks.
What if you are trying to correlate two points of data - like age to height? You can use a linear regression model, as shown in the previous lesson, to draw the classical straight line through the scatterplot of points to show how, with age, height tends to increase. Thus you can predict, for a given group of people, their height given their age.
But it's not very common to be gifted a dataset that is completely ready to use to create a ML model. In this lesson, you will learn how to prepare a raw dataset using standard Python libraries. You will also learn various techniques to visualize the data.
### Preparation
In this folder you will find a .csv file in the root `data` folder called [US-pumpkins.csv](../data/US-pumpkins.csv) which includes 1757 lines of data about the pumpkin market, sorted into groupings by city. This is raw data extracted from the [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) distributed by the United States Department of Agriculture.
This data is in the public domain. It can be downloaded in many separate files, per city, from the USDA web site. To avoid too many separate files we have concatenated all the city data into one spreadsheet. Take a look at this file.
## The Pumpkin data
What do you notice about this data? First, you see that it is a mix of text and numeric data. There are also dates. Second, you see that there's a considerable amount of missing and mixed data. To build a good model, you will need to handle that.
What question can you ask of this data, using a Regression technique? What about "Predict the price of a pumpkin for sale during a given month". Looking again at the data, there are some changes you need to make to create the data structure necessary for the task.
### Analyze the Pumpkin Data
Let's use [Pandas](https://pandas.pydata.org/), (the name stands for `Python Data Analysis`) a tool very useful for shaping data, to analyze and prepare this pumpkin data. First, check for missing dates and then convert the dates to a month format (these are US dates, so the format is currently `MM/DD/YYYY`). Extract the month to a new column.
Open the `notebook.ipynb` file in VS Code and import the spreadsheet in to a new Pandas dataframe. Use the `head()` function to view the first five rows.
```python
import pandas as pd
pumpkins = pd.read_csv('../../data/US-pumpkins.csv')
pumpkins.head()
```
✅ What function would you use to view the last five rows?
Check if there is missing data in the current dataframe:
```python
pumpkins.isnull().sum()
```
There is missing data, but maybe it won't matter for the task at hand.
To make your dataframe easier to work with, drop several of its columns, keeping only the ones you need:
```python
new_columns = ['Package', 'Month', 'Low Price', 'High Price', 'Date']
pumpkins = pumpkins.drop([c for c in pumpkins.columns if c not in new_columns], axis=1)
```
Second, think about how to determine the average price of a pumpkin in a given month. What columns would you pick for this task? Hint: you'll need 3 columns.
Solution: take the average of the Low Price and High Price columns to populate the new Price column, and convert the Date column to only show the month. Fortunately, according to the check above, there is no missing data for dates or prices.
```python
price = (pumpkins['Low Price'] + pumpkins['High Price']) / 2
month = pd.DatetimeIndex(pumpkins['Date']).month
```
✅ Feel free to print any data you'd like to check: `print(month)` for example.
Now, append your converted data into a fresh Pandas dataframe:
```python
new_pumpkins = pd.DataFrame({'Month': month, 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price})
```
Printing out your dataframe will show you a clean, tidy dataset on which you can build your new regression model.
But wait! There's something odd here. If you look at the `Package` column, pumpkins are sold in many different configurations. Some are sold in '1 1/9 bushel' measures, and some in '1/2 bushel' measures, some per pumpkin, some per pound, and some in big boxes with varying widths.
Digging into the original data, it's interesting that anything with `Unit of Sale` equalling 'EACH' or 'PER BIN' also have the `Package` type per inch, per bin, or 'each'. Pumpkins seem to be very hard to weigh consistently, so let's filter them out by selecting only pumpkins with the string 'bushel' in their `Package` column. Add a filter at the top of the file, under the initial .csv import:
```python
pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]
```
If you print the data now, you can see that you are only getting the 415 or so rows of data containing pumpkins by the bushel. But wait! there's one more thing to do. Did you notice that the bushel amount varies per row? You need to normalize the pricing so that you show the pricing per bushel, so do some math to standardize it. Add these lines after the block creating the new_pumpkins dataframe:
```python
new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/(1 + 1/9)
new_pumpkins.loc[new_pumpkins['Package'].str.contains('1/2'), 'Price'] = price/(1/2)
```
✅ According to [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308), a bushel's weight depends on the type of produce, as it's a volume measurement. "A bushel of tomatoes, for example, is supposed to weigh 56 pounds... Leaves and greens take up more space with less weight, so a bushel of spinach is only 20 pounds." It's all pretty complicated! Let's not bother with making a bushel-to-pound conversion, and instead price by the bushel. All this study of bushels of pumpkins, however, goes to show how very important it is to understand the nature of your data!
Now, you can analyze the pricing per unit based on their bushel measurement. If you print out the data one more time, you can see how it's standardized.
✅ Did you notice that pumpkins sold by the half-bushel are very expensive? Can you figure out why? Hint: little pumpkins are way pricier than big ones, probably because there are so many more of them per bushel, given the unused space taken by one big hollow pie pumpkin.
## Visualization Strategies
Part of the data scientist's role is to demonstrate the quality and nature of the data they are working with. To do this, they often create interesting visualizations, or plots, graphs, and charts, showing different aspects of data. In this way, they are able to visually show relationships and gaps that are otherwise hard to uncover. Visualizations can also help determine the machine learning technique most appropriate for the data. A scatterplot that seems to follow a line, for example, indicates that the data is a good candidate for a linear regression exercise.
One data visualization libary that works well in Jupyter notebooks is [Matplotlib](https://matplotlib.org/) (which you also saw in the previous lesson).
> Get more experience with data visualization in [these tutorials](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-15963-cxa).
## Experiment with Matplotlib
Try to create some basic plots to display the new dataframe you just created. What would a basic line plot show?
Import Matplotlib at the top of the file, under the Pandas import:
```python
import matplotlib.pyplot as plt
```
Rerun the entire notebook to refresh. Then at the bottom of the notebook, add a cell to plot the data as a box:
```python
price = new_pumpkins.Price
month = new_pumpkins.Month
plt.scatter(price, month)
plt.show()
```
![A scatterplot showing price to month relationship](./images/scatterplot.png)
Is this a useful plot? Does anything about it surprise you?
It's not particularly useful as all it does is display in your data as a spread of points in a given month. To get charts to display useful data, you usually need to group the data somehow. Let's try creating a plot where the y axis shows the months and the data demonstrates the distribution of data.
Add a cell to create a grouped bar chart:
```python
new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar')
plt.ylabel("Pumpkin Price")
```
![A bar chart showing price to month relationship](./images/barchart.png)
This is a more useful data visualization! It seems to indicate that the highest price for pumpkins occurs in September and October. Does that meet your expectation? Why or why not?
---
## 🚀Challenge
Explore the different types of visualization that matplotlib offers. Which types are most appropriate for regression problems?
## [Post-lecture quiz](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/10/)
## Review & Self Study
Take a look at the many ways to visualize data. Make a list of the various libraries available and note which are best for given types of tasks, for example 2D visualizations vs. 3D visualizations. What do you discover?
**Assignment**: [Exploring visualization](assignment.md)

@ -0,0 +1,8 @@
# Exploring Visualizations
There are several different libraries that are available for data visualization. Create some visualizations using the Pumpkin data in this lesson with matplotlib and seaborn in a sample notebook. Which libraries are easier to work with?
## Rubric
| Criteria | Exemplary | Adequate | Needs Improvement |
| -------- | --------- | -------- | ----------------- |
| | A notebook is submitted with two explorations/visualizations | A notebook is submitted with one explorations/visualizations | A notebook is not submitted |

Binary file not shown.

After

Width:  |  Height:  |  Size: 128 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 172 KiB

@ -0,0 +1,33 @@
{
"metadata": {
"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.3-final"
},
"orig_nbformat": 2,
"kernelspec": {
"name": "python3",
"display_name": "Python 3",
"language": "python"
}
},
"nbformat": 4,
"nbformat_minor": 2,
"cells": [
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
]
}

File diff suppressed because one or more lines are too long

@ -0,0 +1,258 @@
# Build a Regression Model using Scikit-Learn: Regression Two Ways
![Linear vs Polynomial Regression Infographic](./images/linear-polynomial.png)
> Infographic by [Dasani Madipalli](https://twitter.com/dasani_decoded)
## [Pre-lecture quiz](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/11/)
### Introduction
So far you have explored what regression is with sample data gathered from the pumpkin pricing dataset that we will use throughout this unit. You have also visualized it using Matplotlib. Now you are ready to dive deeper into regression for ML. In this lesson, you will learn more about two types of regression: basic linear regression and polynomial regression, along with some of the math underlying these techniques.
> Throughout this curriculum, we assume minimal knowledge of math, and seek to make it accessible for students coming from other fields, so watch for notes, callouts, diagrams, and other learning tools to aid in comprehension.
### Prerequisite
You should be familiar by now with the structure of the pumpkin data that we are examining. You can find it preloaded and pre-cleaned in this lesson's notebook.ipynb files, with the pumpkin price displayed per bushel in a new dataframe. Make sure you can run these notebooks in kernels in VS Code.
### Preparation
As a reminder, you are loading this data so as to ask questions of it. When is the best time to buy pumpkins? What price can I expect of a case of miniature pumpkins? Should I buy them in half-bushel baskets or by the 1 1/9 bushel box? Let's keep digging into this data.
In the previous lesson, you created a Pandas dataframe and populated it with part of the original dataset, standardizing the pricing by the bushel. By doing that, however, you were only able to gather about 400 datapoints and only for the fall months.
Take a look at the data that we preloaded in this lesson's accompanying notebook. The data is preloaded and an initial scatterplot is charted to show month data. Maybe we can get a little more detail about the nature of the data by cleaning it more.
## A Linear Regression Line
As you learned in Lesson 1, the goal of a linear regression exercise is to be able to plot a line to show the relationship between variables and make accurate predictions on where a new datapoint would fall in relationship to that line.
> **🧮 Show me the math**
>
> This line has an equation: `Y = a + bX`. It is typical of **Least-Squares Regression** to draw this type of line.
>
> `X` is the 'explanatory variable'. `Y` is the 'dependent variable'. The slope of the line is `b` and `a` is the y-intercept, which refers to the value of `Y` when `X = 0`.
>
> In other words, and referring to our pumpkin data's original question: "predict the price of a pumpkin per bushel by month", `X` would refer to the price and `Y` would refer to the month of sale. The math that calculates the line must demonstrate the slope of the line, which is also dependent on the intercept, or where `Y` is situated when `X = 0`.
>
> You can observe the method of calculation for these values on the [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) web site.
>
> A common method of regression is **Least-Squares Regression** which means that all the datapoints surounding the regression line are squared and then added up. Ideally, that final sum is as small as possible, because we want a low number of errors, or `least-squares`. We do so since we want to model a line that has the least cumulative distance from all of our data points. We also square the terms before adding them since we are concerned with its magnitude rather than its direction.
>
> One more term to understand is the **Correlation Coefficient** between given X and Y variables. For a scatterplot, you can quickly visualize this coefficient. A plot with datapoints scattered in a neat line have high correlation, but a plot with datapoints scattered everywhere between X and Y have a low correlation.
>
> A good linear regression model will be one that has a high (nearer to 1 than 0) Correlation Coefficient using the Least-Squares Regression method with a line of regression.
✅ Run the notebook accompanying this lesson and look at the City to Price scatterplot. Does the data associating City to Price for pumpkin sales seem to have high or low correlation, according to your visual interpretation of the scatterplot?
## Create a Linear Regression Model correlating Pumpkin Datapoints
Now that you have an understanding of the math behind this exercise, create a Regression model to see if you can predict which package of pumpkins will have the best pumpkin prices. Someone buying pumpkins for a holiday pumpkin patch might want this information to be able to optimize their purchases of pumpkin packages for the patch.
Since you'll use Scikit-Learn, there's no reason to do this by hand (although you could!). In the main data-processing block of your lesson notebook, add a library from Scikit-Learn to automatically convert all string data to numbers:
```python
from sklearn.preprocessing import LabelEncoder
new_pumpkins.iloc[:, 0:-1] = new_pumpkins.iloc[:, 0:-1].apply(LabelEncoder().fit_transform)
new_pumpkins.iloc[:, 0:-1] = new_pumpkins.iloc[:, 0:-1].apply(LabelEncoder().fit_transform)
```
If you look at the new_pumpkins dataframe now, you see that all the strings are now numeric. This makes it harder for you to read but much more intelligible for Scikit-Learn!
Now you can make more educated decisions (not just based on eyeballing a scatterplot) about the data that is best suited to regression.
Try to find a good correlation between two points of your data to potentially build a good predictive model. As it turns out, there's only weak correlation between the City and Price:
```python
print(new_pumpkins['City'].corr(new_pumpkins['Price']))
0.32363971816089226
```
However there's a bit better correlation between the Package and its Price. That makes sense, right? Normally, the bigger the produce box, the higher the price.
```python
print(new_pumpkins['Package'].corr(new_pumpkins['Price']))
0.6061712937226021
```
A good question to ask of this data will be: 'What price can I expect of a given pumpkin package?'
Let's build this regression model
## Building A Linear Model
Before building your model, do one more tidy-up of your data. Drop any null data and check once more what the data looks like.
```python
new_pumpkins.dropna(inplace=True)
new_pumpkins.info()
```
Then, create a new dataframe from this minimal set and print it out:
```python
new_columns = ['Package', 'Price']
lin_pumpkins = new_pumpkins.drop([c for c in new_pumpkins.columns if c not in new_columns], axis='columns')
lin_pumpkins
```
Now you can assign your X and y coordinate data:
```python
X = lin_pumpkins.values[:, :1]
y = lin_pumpkins.values[:, 1:2]
```
> What's going on here? You're using [Python slice notation](https://stackoverflow.com/questions/509211/understanding-slice-notation/509295#509295) to create arrays to populate `X` and `y`.
Next, start the regression model-building routines:
```python
from sklearn.linear_model import LinearRegression
from sklearn.metrics import r2_score, mean_squared_error, mean_absolute_error
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
lin_reg = LinearRegression()
lin_reg.fit(X_train,y_train)
pred = lin_reg.predict(X_test)
accuracy_score = lin_reg.score(X_train,y_train)
print('Model Accuracy: ', accuracy_score)
```
Because the correlation isn't particularly good, the model produced isn't terribly accurate.
```
Model Accuracy: 0.3315342327998987
```
You can visualize the line that's drawn in the process:
```python
plt.scatter(X_test, y_test, color='black')
plt.plot(X_test, pred, color='blue', linewidth=3)
plt.xlabel('Package')
plt.ylabel('Price')
plt.show()
```
![A scatterplot showing package to price relationship](./images/linear.png)
And you can test the model against a hypothetical variety:
```python
lin_reg.predict( np.array([ [2.75] ]) )
```
The returned price for this mythological Variety is:
```
array([[33.15655975]])
```
That number makes sense, if the logic of the regression line holds true.
Congratulations, you just created a model that can help predict the price of a few varieties of pumpkins. Your holiday pumpkin patch will be beautiful. But you can probably create a better model!
## Polynomial Regression
Another type of Linear Regression is Polynomial Regression. While sometimes there's a linear relationship between variables - the bigger the pumpkin in volume, the higher the price - sometimes these relationships can't be plotted as a plane or straight line.
✅ Here are [some more examples](https://online.stat.psu.edu/stat501/lesson/9/9.8) of data that could use Polynomial Regression
Take another look at the relationship between Variety to Price in the previous plot. Does this scatterplot seem like it should necessarily be analyzed by a straight line? Perhaps not. In this case, you can try Polynomial Regression.
✅ Polynomials are mathematical expressions that might consist of one or more variables and coefficients
Polynomial regression creates a curved line to better fit nonlinear data. Let's recreate a dataframe populated with a segment of the original pumpkin data:
```python
new_columns = ['Variety', 'Package', 'City', 'Month', 'Price']
poly_pumpkins = new_pumpkins.drop([c for c in new_pumpkins.columns if c not in new_columns], axis='columns')
poly_pumpkins
```
A good way to visualize the correlations between data in dataframes is to display it in a 'coolwarm' chart:
```python
corr = poly_pumpkins.corr()
corr.style.background_gradient(cmap='coolwarm')
```
![A heatmap showing data correlation](./images/heatmap.png)
Looking at this chart, you can visualize the good correlation between Package and Price. So you should be able to create a somewhat better model than the last one.
Build out the X and y columns:
```python
X=poly_pumpkins.iloc[:,3:4].values
y=poly_pumpkins.iloc[:,4:5].values
```
Scikit-Learn includes a helpful API for building polynomial regression models - the `make_pipeline` [API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline). A 'pipeline' is created which is a chain of estimators. In this case, the pipeline includes Polynomial Features, or predictions that form a nonlinear path.
```python
from sklearn.preprocessing import PolynomialFeatures
from sklearn.pipeline import make_pipeline
pipeline = make_pipeline(PolynomialFeatures(4), LinearRegression())
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
pipeline.fit(np.array(X_train), y_train)
y_pred=pipeline.predict(X_test)
```
At this point, you need to create a new dataframe with sorted data so that the pipeline can create a sequence:
```python
df = pd.DataFrame({'x': X_test[:,0], 'y': y_pred[:,0]})
df.sort_values(by='x',inplace = True)
points = pd.DataFrame(df).to_numpy()
plt.plot(points[:, 0], points[:, 1],color="blue", linewidth=3)
plt.xlabel('Package')
plt.ylabel('Price')
plt.scatter(X,y, color="black")
plt.show()
```
![A polynomial plot showing package to price relationship](./images/polynomial.png)
You can see a curved line that fits your data better. Let's check the model's accuracy:
```python
accuracy_score = pipeline.score(X_train,y_train)
print('Model Accuracy: ', accuracy_score)
```
And voila!
```
Model Accuracy: 0.8537946517073784
```
That's better! Try to predict a price:
```python
pipeline.predict( np.array([ [2.75] ]) )
```
You are given this prediction:
```
array([[46.34509342]])
```
It does make sense! And, if this is a better model than the previous one, looking at the same data, you need to budget for these more expensive pumpkins!
🏆 Well done! You created two Regression models in one lesson. In the final section on Regression, you will learn about Logistic Regression to determine categories.
---
## 🚀Challenge
Test several different variables in this notebook to see how correlation corresponds to model accuracy.
## [Post-lecture quiz](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/12/)
## Review & Self Study
In this lesson we learned about Linear Regression. There are other important types of Regression. Read about Stepwise, Ridge, Lasso and Elasticnet techniques. A good course to study to learn more is the [Stanford Statistical Learning course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning)
**Assignment**: [Build a Model](assignment.md)

@ -0,0 +1,11 @@
# Create a Regression Model
## Instructions
In this lesson you were shown how to build a model using both Linear and Polynomial Regression. Using this knowledge, find a dataset or use one of Scikit-Learn's built-in sets to build a fresh model. Explain in your notebook why you chose the technique you did, and demonstrate your model's accuracy. If it is not accurate, explain why.
## Rubric
| Criteria | Exemplary | Adequate | Needs Improvement |
| -------- | ------------------------------------------------------------ | -------------------------- | ------------------------------- |
| | presents a complete notebook with a well-documented solution | the solution is incomplete | the solution is flawed or buggy |

Binary file not shown.

After

Width:  |  Height:  |  Size: 204 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 167 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 209 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -0,0 +1,261 @@
# Logistic Regression to Predict Categories
## [Pre-lecture quiz](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/13/)
### Introduction
In this final lesson on Regression, one of the basic 'classic' ML techniques, we will take a look at Logistic Regression. You would use this technique to discover patterns to predict binary categories. Is this candy chocolate or not? Is this disease contagious or not? Will this customer choose this product or not?
In this lesson, you will learn:
- A new library for data visualization
- Techniques for Logistic Regression
Deepen your understanding of working with this type of Regression in this [Learn module](https://docs.microsoft.com/learn/modules/train-evaluate-classification-models?WT.mc_id=academic-15963-cxa)
## Prerequisite
Having worked with the pumpkin data, we are now familiar enough with it to realize that there's one small category that we can work with: Color. Let's build a Logistic Regression model to predict that, given some variables, what color a given pumpkin will be (orange 🎃 or white 👻).
For our purposes, we will express this as a binary: 'Orange' or 'Not Orange'. There is also a 'striped' category in our dataset but there are few instances of it, so we will not use it. It disappears once we remove null values from the dataset, anyway.
> 🎃 Fun fact, we sometimes call white pumpkins 'ghost' pumpkins. They aren't very easy to carve, so they aren't as popular as the orange ones but they are cool looking!
## About Logistic Regression
Logistic Regression differs from Linear Regression, which you learned about previously, in a few important ways.
### Binary Classification
Logistic Regression does not offer the same features as Linear Regression. The former offers a prediction about a binary category ("orange or not orange") whereas the latter is capable of predicting continual values, for example given the origin of a pumpkin and the time of harvest, how much its price will rise.
![Pumpkin Classification Model](./images/pumpkin-classifier.png)
> Infographic by [Dasani Madipalli](https://twitter.com/dasani_decoded)
### Other Classifications
There are other types of Logistic Regression, including Multinomial and Ordinal. Multinomial involves having more than one categories - "Orange, White, and Striped". Ordinal involves ordered categories, useful if we wanted to order our outcomes logically, like our pumpkins that are ordered by a finite number of sizes (mini,sm,med,lg,xl,xxl).
![Multinomial vs Ordinal Regression](./images/multinomial-ordinal.png)
> Infographic by [Dasani Madipalli](https://twitter.com/dasani_decoded)
### It's Still Linear
Even though this type of Regression is all about category predictions, it still works best when there is a clear linear relationship between the dependent variable (color) and the other independent variables (the rest of the dataset, like city name and size). It's good to get an idea of whether there is any linearity dividing these variables or not.
### Variables DO NOT have to correlate
Remember how Linear Regression worked better with more correlated variables? Logistic Regression is the opposite - the variables don't have to align. That works for this data which has somewhat weak correlations.
### You Need a Lot of Clean Data
Logistic Regression will give more accurate results if you use more data; our small dataset is not optimal for this task, so keep that in mind.
✅ Think about the types of data that would lend themselves well to Logistic Regression
## Tidy the Data
First, clean the data a bit, dropping null values and selecting only some of the columns:
```python
from sklearn.preprocessing import LabelEncoder
new_columns = ['Color','Origin','Item Size','Variety','City Name','Package']
new_pumpkins = pumpkins.drop([c for c in pumpkins.columns if c not in new_columns], axis=1)
new_pumpkins.dropna(inplace=True)
new_pumpkins = new_pumpkins.apply(LabelEncoder().fit_transform)
```
You can always take a peek at your new dataframe:
```python
new_pumpkins.info
```
### Visualization
By now you have loaded up the [starter notebook](./notebook.ipynb) with pumpkin data once again and cleaned it so as to preserve a dataset containing a few variables, including Color. Let's visualize the dataframe in the notebook using a different library: [Seaborn](https://seaborn.pydata.org/index.html), which is built on Matplotlib which we used earlier. Seaborn offers some neat ways to visualize your data. For example, you can compare distributions of the data for each point in a side-by side grid.
```python
import seaborn as sns
g = sns.PairGrid(new_pumpkins)
g.map(sns.scatterplot)
```
![A grid of visualized data](images/grid.png)
By observing data side-by-side, you can see how the Color data relates to the other columns.
✅ Given this scatterplot grid, what are some interesting explorations you can envision?
Since Color is a binary category (Orange or Not), it's called 'categorical data' and needs 'a more [specialized approach](https://seaborn.pydata.org/tutorial/categorical.html?highlight=bar) to visualization'. There are other ways to visualize the relationship of this category with other variables. You can visualize variables side-by-side with Seaborn plots. Try a 'swarm' plot to show the distribution of values:
```python
sns.swarmplot(x="Color", y="Item Size", data=new_pumpkins)
```
![A swarm of visualized data](images/swarm.png)
A 'violin' type plot is useful as you can easily visualize the way that data in the two categories is distributed. Violin plots don't work so well with smaller datasets as the distribution is displayed more 'smoothly'.
```python
sns.catplot(x="Color", y="Item Size",
kind="violin", data=new_pumpkins)
```
![a violin type chart](images/violin.png)
✅ Try creating this plot, and other Seaborn plots, using other variables.
Now that we have an idea of the relationship between the binary categories of color and the larger group of sizes, let's explore Logistic Regression to determine a given pumpkin's likely color.
> infographic here (an image of logistic regression's sigmoid flow, like this: https://wikipedia.org/wiki/Logistic_regression#/media/File:Exam_pass_logistic_curve.jpeg)
> **🧮 Show Me The Math**
>
> Remember how Linear Regression often used ordinary least squares to arrive at a value? Logistic Regression relies on the concept of 'maximum likelihood' using [sigmoid functions](https://wikipedia.org/wiki/Sigmoid_function). A 'Sigmoid Function' on a plot looks like an 'S' shape. It takes a value and maps it to somewhere between 0 and 1. Its curve is also called a 'logistic curve'. Its formula looks like thus:
>
> ![logistic function](images/sigmoid.png)
>
> where the sigmoid's midpoint finds itself at x's 0 point, L is the curve's maximum value, and k is the curve's steepness. If the outcome of the function is more than 0.5, the label in question will be given the class '1' of the binary choice. If not, it will be classified as '0'.
## Build your model
Building a model to find these binary classification is surprisingly straightforward in Scikit-Learn.
Select the variables you want to use in your classification model and split the training and test sets:
```python
from sklearn.model_selection import train_test_split
Selected_features = ['Origin','Item Size','Variety','City Name','Package']
X = new_pumpkins[Selected_features]
y = new_pumpkins['Color']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
```
Now you can train your model and print out its result:
```python
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, classification_report
from sklearn.linear_model import LogisticRegression
model = LogisticRegression()
model.fit(X_train, y_train)
predictions = model.predict(X_test)
print(classification_report(y_test, predictions))
print('Predicted labels: ', predictions)
print('Accuracy: ', accuracy_score(y_test, predictions))
```
Take a look at your model's scoreboard. It's not too bad, considering you have only about 1000 rows of data:
```
precision recall f1-score support
0 0.85 0.95 0.90 166
1 0.38 0.15 0.22 33
accuracy 0.82 199
macro avg 0.62 0.55 0.56 199
weighted avg 0.77 0.82 0.78 199
Predicted labels: [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0
0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 1 0 1 0 0 1 0 0 0 1 0]
```
## Better comprehension via a confusion matrix
While you can get a scoreboard report [terms](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.classification_report.html?highlight=classification_report#sklearn.metrics.classification_report) by printing out the items above, you might be able to understand your model more easily by using a [confusion matrix](https://scikit-learn.org/stable/modules/model_evaluation.html#confusion-matrix) to help us understand how the model is performing.
> 🎓 A '[confusion matrix](https://en.wikipedia.org/wiki/Confusion_matrix)' (or 'error matrix') is a table that expresses your model's true vs. false positives and negatives, thus gauging the accuracy of predictions.
```python
from sklearn.metrics import confusion_matrix
confusion_matrix(y_test, predictions)
```
Take a look at your model's confusion matrix:
```
array([[162, 4],
[ 33, 0]])
```
What's going on here? Let's say our model is asked to classify items between two binary categories, category 'pumpkin' and category 'not-a-pumpkin'.
- If your model predicts something as a pumpkin and it belongs to category 'pumpkin' in reality we call it a true positive, shown by the top left number.
- If your model predicts something as not a pumpkin and it belongs to category 'pumpkin' in reality we call it a false positive, shown by the top right number.
- If your model predicts something as a pumpkin and it belongs to category 'not-a-pumpkin' in reality we call it a false negative, shown by the bottom left number.
- If your model predicts something as not a pumpkin and it belongs to category 'not-a-pumpkin' in reality we call it a true negative, shown by the bottom right number.
![Confusion Matrix](images/confusion-matrix.png)
> Infographic by [Jen Looper](https://twitter.com/jenlooper)
As you might have guessed it's preferable to have a larger number of true positives and true negatives and a lower number of false positives and false negatives, which implies that the model performs better.
✅ Q: According to the confusion matrix, how did the model do? A: Not too bad; there are a good number of true positives but also several false negatives.
Let's revisit the terms we saw earlier with the help of the confusion matrix's mapping of TP/TN and FP/FN:
🎓 Precision: TP/(TP + FN) The fraction of relevant instances among the retrieved instances (e.g. which labels were well-labeled)
🎓 Recall: TP/(TP + FP) The fraction of relevant instances that were retrieved, whether well-labeled or not
🎓 f1-score: (2 * precision * recall)/(precision + recall) A weighted average of the precision and recall, with best being 1 and worst being 0
🎓 Support: The number of occurrences of each label retrieved
🎓 Accuracy: (TP + TN)/(TP + TN + FP + FN) The percentage of labels predicted accurately for a sample.
🎓 Macro Avg: The calculation of the unweighted mean metrics for each label, not taking label imbalance into account.
🎓 Weighted Avg: The calculation of the mean metrics for each label, taking label imbalance into account by weighting them by their support (the number of true instances for each label).
✅ Can you think which metric you should watch if you want your model to reduce the number of false negatives?
## Visualize the ROC Curve of this Model
This is not a bad model; its accuracy is in the 80% range so ideally you could use it to predict the color of a pumpkin given a set of variables.
Let's do one more visualization to see the so-called 'ROC' score:
```python
from sklearn.metrics import roc_curve, roc_auc_score
y_scores = model.predict_proba(X_test)
# calculate ROC curve
fpr, tpr, thresholds = roc_curve(y_test, y_scores[:,1])
sns.lineplot([0, 1], [0, 1])
sns.lineplot(fpr, tpr)
```
Using Seaborn again, plot the model's [Receiving Operating Characteristic](https://scikit-learn.org/stable/auto_examples/model_selection/plot_roc.html?highlight=roc) or ROC. ROC curves are often used to get a view of the output of a classifier in terms of its true vs. false positives. "ROC curves typically feature true positive rate on the Y axis, and false positive rate on the X axis." Thus, the steepness of the curve and the space between the midpoint line and the curve matter: you want a curve that quickly heads up and over the line. In our case, there are false positives to start with, and then the line heads up and over properly:
![ROC](./images/ROC.png)
Finally, use Scikit-Learn's [`roc_auc_score` API](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.roc_auc_score.html?highlight=roc_auc#sklearn.metrics.roc_auc_score) to compute the actual 'Area Under the Curve' (AUC):
```python
auc = roc_auc_score(y_test,y_scores[:,1])
print(auc)
```
The result is `0.6976998904709748`. Given that the AUC ranges from 0 to 1, you want a big score, since a model that is 100% correct in its predictions will have an AUC of 1; in this case, the model is _pretty good_.
In future lessons on classifications, you will learn how to iterate to improve your model's scores. But for now, congratulations! You've completed these regression lessons!
---
## 🚀Challenge
There's a lot more to unpack regarding Logistic Regression! But the best way to learn is to experiment. Find a dataset that lends itself to this type of analysis and build a model with it. What do you learn? tip: try [Kaggle](https://kaggle.com) for interesting datasets.
## [Post-lecture quiz](https://jolly-sea-0a877260f.azurestaticapps.net/quiz/14/)
## Review & Self Study
Read the first few pages of [this paper from Stanford](https://web.stanford.edu/~jurafsky/slp3/5.pdf) on some practical uses for Logistic Regression. Think about tasks that are better suited for one or the other type of Regression tasks that we have studied up to this point. What would work best?
**Assignment**: [Retrying this Regression](assignment.md)

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save