This repository has been archived on 2026-03-24. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
TP-ML/solutions/Lab3_solutions.ipynb
2022-06-05 15:43:42 +02:00

1030 lines
169 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"name": "Lab3_solutions.ipynb",
"provenance": []
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
},
"language_info": {
"name": "python"
}
},
"cells": [
{
"cell_type": "markdown",
"source": [
"This notebook is an introduction to the library scikit-learn (https://scikit-learn.org/stable/), which provides numerous tools to easily perform machine learning tasks. \n",
"\n",
"In this lab, we'll experiment with two of the most frequently encountered tasks in machine learning : \n",
" - Regression : predicting a continuous variable given a set of predictors. \n",
" - Classification : predicting the class of a sample given a set of predictors.\n",
"\n",
"In order for you to first have a good feeling of the general pipeline of a machine learning task, we'll experiment with two simple models : a linear regression, and a K-nearest neighbors classifier. "
],
"metadata": {
"id": "4bV7mOa9W1Eu",
"pycharm": {
"name": "#%% md\n"
}
}
},
{
"cell_type": "markdown",
"source": [
"**Import necessary libraries**"
],
"metadata": {
"id": "jBfdU_joaqrm",
"pycharm": {
"name": "#%% md\n"
}
}
},
{
"cell_type": "code",
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import os\n",
"from sklearn.linear_model import LinearRegression\n",
"from sklearn.model_selection import train_test_split\n",
"from sklearn.neighbors import KNeighborsClassifier\n",
"from sklearn.metrics import mean_squared_error, precision_score, recall_score, accuracy_score, confusion_matrix, \\\n",
" roc_auc_score, roc_curve, f1_score\n",
"import matplotlib.pyplot as plt\n",
"from mpl_toolkits.mplot3d import Axes3D\n",
"from mpl_toolkits import mplot3d"
],
"metadata": {
"id": "y90MCHqMa1j5",
"pycharm": {
"name": "#%%\n"
}
},
"execution_count": 5,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"**Load the 'Pokemon.csv' dataset as a pandas dataframe, change the Type 1 and Type 2 variables to categorical and replace 'Type 2' missing values (replace by the value of 'Type 1').**"
],
"metadata": {
"id": "zx1zL4ura5ze",
"pycharm": {
"name": "#%% md\n"
}
}
},
{
"cell_type": "code",
"source": [
"file = 'data/Pokemon.csv'\n",
"\n",
"##Read dataframe##\n",
"\n",
"df = pd.read_csv(file)\n",
"print(df.head())"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "LuZ28dR_bsXi",
"outputId": "953949cf-64d3-4c54-e218-15b2cba75dbe",
"pycharm": {
"name": "#%%\n"
}
},
"execution_count": 9,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" # Name Type 1 Type 2 Total HP Attack Defense \\\n",
"0 1 Bulbasaur Grass Poison 318 45 49 49 \n",
"1 2 Ivysaur Grass Poison 405 60 62 63 \n",
"2 3 Venusaur Grass Poison 525 80 82 83 \n",
"3 3 VenusaurMega Venusaur Grass Poison 625 80 100 123 \n",
"4 4 Charmander Fire NaN 309 39 52 43 \n",
"\n",
" Sp. Atk Sp. Def Speed Generation Legendary \n",
"0 65 65 45 1 False \n",
"1 80 80 60 1 False \n",
"2 100 100 80 1 False \n",
"3 122 120 80 1 False \n",
"4 60 50 65 1 False \n"
]
}
]
},
{
"cell_type": "code",
"source": [
"##Change variables types##\n",
"\n",
"print(df.dtypes)\n",
"df.astype({'Type 1': 'category', 'Type 2': 'category'})"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 667
},
"id": "BRPoZ4YhbuLr",
"outputId": "7f4450fa-b7c8-4ea6-f53b-c3cd360882cb",
"pycharm": {
"name": "#%%\n"
}
},
"execution_count": 10,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"# int64\n",
"Name object\n",
"Type 1 object\n",
"Type 2 object\n",
"Total int64\n",
"HP int64\n",
"Attack int64\n",
"Defense int64\n",
"Sp. Atk int64\n",
"Sp. Def int64\n",
"Speed int64\n",
"Generation int64\n",
"Legendary bool\n",
"dtype: object\n"
]
},
{
"data": {
"text/plain": " # Name Type 1 Type 2 Total HP Attack Defense \\\n0 1 Bulbasaur Grass Poison 318 45 49 49 \n1 2 Ivysaur Grass Poison 405 60 62 63 \n2 3 Venusaur Grass Poison 525 80 82 83 \n3 3 VenusaurMega Venusaur Grass Poison 625 80 100 123 \n4 4 Charmander Fire NaN 309 39 52 43 \n.. ... ... ... ... ... .. ... ... \n795 719 Diancie Rock Fairy 600 50 100 150 \n796 719 DiancieMega Diancie Rock Fairy 700 50 160 110 \n797 720 HoopaHoopa Confined Psychic Ghost 600 80 110 60 \n798 720 HoopaHoopa Unbound Psychic Dark 680 80 160 60 \n799 721 Volcanion Fire Water 600 80 110 120 \n\n Sp. Atk Sp. Def Speed Generation Legendary \n0 65 65 45 1 False \n1 80 80 60 1 False \n2 100 100 80 1 False \n3 122 120 80 1 False \n4 60 50 65 1 False \n.. ... ... ... ... ... \n795 100 150 50 6 True \n796 160 110 110 6 True \n797 150 130 70 6 True \n798 170 130 80 6 True \n799 130 90 70 6 True \n\n[800 rows x 13 columns]",
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>#</th>\n <th>Name</th>\n <th>Type 1</th>\n <th>Type 2</th>\n <th>Total</th>\n <th>HP</th>\n <th>Attack</th>\n <th>Defense</th>\n <th>Sp. Atk</th>\n <th>Sp. Def</th>\n <th>Speed</th>\n <th>Generation</th>\n <th>Legendary</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>1</td>\n <td>Bulbasaur</td>\n <td>Grass</td>\n <td>Poison</td>\n <td>318</td>\n <td>45</td>\n <td>49</td>\n <td>49</td>\n <td>65</td>\n <td>65</td>\n <td>45</td>\n <td>1</td>\n <td>False</td>\n </tr>\n <tr>\n <th>1</th>\n <td>2</td>\n <td>Ivysaur</td>\n <td>Grass</td>\n <td>Poison</td>\n <td>405</td>\n <td>60</td>\n <td>62</td>\n <td>63</td>\n <td>80</td>\n <td>80</td>\n <td>60</td>\n <td>1</td>\n <td>False</td>\n </tr>\n <tr>\n <th>2</th>\n <td>3</td>\n <td>Venusaur</td>\n <td>Grass</td>\n <td>Poison</td>\n <td>525</td>\n <td>80</td>\n <td>82</td>\n <td>83</td>\n <td>100</td>\n <td>100</td>\n <td>80</td>\n <td>1</td>\n <td>False</td>\n </tr>\n <tr>\n <th>3</th>\n <td>3</td>\n <td>VenusaurMega Venusaur</td>\n <td>Grass</td>\n <td>Poison</td>\n <td>625</td>\n <td>80</td>\n <td>100</td>\n <td>123</td>\n <td>122</td>\n <td>120</td>\n <td>80</td>\n <td>1</td>\n <td>False</td>\n </tr>\n <tr>\n <th>4</th>\n <td>4</td>\n <td>Charmander</td>\n <td>Fire</td>\n <td>NaN</td>\n <td>309</td>\n <td>39</td>\n <td>52</td>\n <td>43</td>\n <td>60</td>\n <td>50</td>\n <td>65</td>\n <td>1</td>\n <td>False</td>\n </tr>\n <tr>\n <th>...</th>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n </tr>\n <tr>\n <th>795</th>\n <td>719</td>\n <td>Diancie</td>\n <td>Rock</td>\n <td>Fairy</td>\n <td>600</td>\n <td>50</td>\n <td>100</td>\n <td>150</td>\n <td>100</td>\n <td>150</td>\n <td>50</td>\n <td>6</td>\n <td>True</td>\n </tr>\n <tr>\n <th>796</th>\n <td>719</td>\n <td>DiancieMega Diancie</td>\n <td>Rock</td>\n <td>Fairy</td>\n <td>700</td>\n <td>50</td>\n <td>160</td>\n <td>110</td>\n <td>160</td>\n <td>110</td>\n <td>110</td>\n <td>6</td>\n <td>True</td>\n </tr>\n <tr>\n <th>797</th>\n <td>720</td>\n <td>HoopaHoopa Confined</td>\n <td>Psychic</td>\n <td>Ghost</td>\n <td>600</td>\n <td>80</td>\n <td>110</td>\n <td>60</td>\n <td>150</td>\n <td>130</td>\n <td>70</td>\n <td>6</td>\n <td>True</td>\n </tr>\n <tr>\n <th>798</th>\n <td>720</td>\n <td>HoopaHoopa Unbound</td>\n <td>Psychic</td>\n <td>Dark</td>\n <td>680</td>\n <td>80</td>\n <td>160</td>\n <td>60</td>\n <td>170</td>\n <td>130</td>\n <td>80</td>\n <td>6</td>\n <td>True</td>\n </tr>\n <tr>\n <th>799</th>\n <td>721</td>\n <td>Volcanion</td>\n <td>Fire</td>\n <td>Water</td>\n <td>600</td>\n <td>80</td>\n <td>110</td>\n <td>120</td>\n <td>130</td>\n <td>90</td>\n <td>70</td>\n <td>6</td>\n <td>True</td>\n </tr>\n </tbody>\n</table>\n<p>800 rows × 13 columns</p>\n</div>"
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
]
},
{
"cell_type": "code",
"source": [
"##Check for any missing values, replace them accordingly or remove the associated rows###\n",
"\n",
"print(df.isna().sum())\n",
"df['Type 2'].fillna(df['Type 1'], inplace=True)"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "SGYJzwQsb6Le",
"outputId": "1a104426-90ec-405a-c0d9-23716c69091f",
"pycharm": {
"name": "#%%\n"
}
},
"execution_count": 11,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"# 0\n",
"Name 0\n",
"Type 1 0\n",
"Type 2 386\n",
"Total 0\n",
"HP 0\n",
"Attack 0\n",
"Defense 0\n",
"Sp. Atk 0\n",
"Sp. Def 0\n",
"Speed 0\n",
"Generation 0\n",
"Legendary 0\n",
"dtype: int64\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"print(df.isna().sum())"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "PaFw_zDvbinl",
"outputId": "2d669f8a-79d6-4443-9780-4116a182ac1d",
"pycharm": {
"name": "#%%\n"
}
},
"execution_count": 12,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"# 0\n",
"Name 0\n",
"Type 1 0\n",
"Type 2 0\n",
"Total 0\n",
"HP 0\n",
"Attack 0\n",
"Defense 0\n",
"Sp. Atk 0\n",
"Sp. Def 0\n",
"Speed 0\n",
"Generation 0\n",
"Legendary 0\n",
"dtype: int64\n"
]
}
]
},
{
"cell_type": "markdown",
"source": [
"**Select the target variable y as 'HP' and the predictor as 'Attack', split the dataset in a train and a test set with a 0.8/0.2 ratio.**"
],
"metadata": {
"id": "ZiupbAY9b-H2",
"pycharm": {
"name": "#%% md\n"
}
}
},
{
"cell_type": "code",
"source": [
"##Select a target variable y and a predictor x. Reshape the data x to [num_samples, 1]##\n",
"\n",
"y = df['HP'].values\n",
"x = df['Attack'].values\n",
"X = x[:, np.newaxis]\n",
"fig, ax = plt.subplots()\n",
"\n",
"ax.scatter(x,y)\n",
"ax.set_xlabel('Attack')\n",
"ax.set_ylabel('HP')\n",
"plt.show()\n",
"\n",
"##Define a training set and a validation set##\n",
"\n",
"X_train, X_test, y_train, y_test = train_test_split(X, y, train_size=0.8, test_size=0.2, shuffle=True)\n",
"print((X_train.shape, y_train.shape), (X_test.shape, y_test.shape))"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 296
},
"id": "sbGfkAWmcbRN",
"outputId": "6e304cdf-ea3e-4fbf-ca96-32cb9f845a34",
"pycharm": {
"name": "#%%\n"
}
},
"execution_count": 13,
"outputs": [
{
"data": {
"text/plain": "<Figure size 432x288 with 1 Axes>",
"image/png": "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\n"
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"((640, 1), (640,)) ((160, 1), (160,))\n"
]
}
]
},
{
"cell_type": "markdown",
"source": [
"**Build a linear regression model and fit it to the training data.**"
],
"metadata": {
"id": "QRsWArmDcj_Z",
"pycharm": {
"name": "#%% md\n"
}
}
},
{
"cell_type": "code",
"source": [
"##Define the linear regression model, and reshape the data x to [num_samples, 1]##\n",
"\n",
"model = LinearRegression(fit_intercept=True)\n",
"\n",
"##Fit the model to the training data##\n",
"\n",
"model.fit(X_train,y_train)"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "wofvXKaicjJB",
"outputId": "abb5bc94-acbd-4a93-bea8-9ebcd078bc45",
"pycharm": {
"name": "#%%\n"
}
},
"execution_count": 14,
"outputs": [
{
"data": {
"text/plain": "LinearRegression()"
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
]
},
{
"cell_type": "markdown",
"source": [
"**Get the model's parameters, and compute the coefficient of determination and the mean square error on both the training and test sets.**"
],
"metadata": {
"id": "HZtL8vxjc8yb",
"pycharm": {
"name": "#%% md\n"
}
}
},
{
"cell_type": "code",
"source": [
"##Get the model's parameters##\n",
"\n",
"print('Model\\'s coefficients : {}'.format(model.coef_))\n",
"print('Model\\'s intercept : {}'.format(model.intercept_))"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "FyO_-2aGeJCw",
"outputId": "7b91220e-cbfe-4bfc-c64e-ff99d1dbbb37",
"pycharm": {
"name": "#%%\n"
}
},
"execution_count": 15,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Model's coefficients : [0.31932734]\n",
"Model's intercept : 43.51095517799887\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"##Make predictions for both the training and the test sets##\n",
"\n",
"y_pred_train = model.predict(X_train)\n",
"y_pred_test = model.predict(X_test)\n",
"\n",
"##Compute th coefficient of determination and the mean square error on both sets##\n",
"\n",
"MSE_train = mean_squared_error(y_train, y_pred_train)\n",
"MSE_test = mean_squared_error(y_test, y_pred_test)\n",
"R2_train = model.score(X_train, y_train)\n",
"R2_test = model.score(X_test, y_test)\n",
"\n",
"print('MSE on training set : {}'.format(MSE_train))\n",
"print('R2 on training set : {}'.format(R2_train))\n",
"print('MSE on test set : {}'.format(MSE_train))\n",
"print('R2 on test set : {}'.format(R2_test))"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "EF08yODueNB9",
"outputId": "c0f7b0e1-c431-4013-ea61-9d132b9155f4",
"pycharm": {
"name": "#%%\n"
}
},
"execution_count": 16,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"MSE on training set : 550.8030528827619\n",
"R2 on training set : 0.15915140602739009\n",
"MSE on test set : 550.8030528827619\n",
"R2 on test set : 0.24710697152011885\n"
]
}
]
},
{
"cell_type": "markdown",
"source": [
"**Plot the regression line**"
],
"metadata": {
"id": "MAjY7FyheSwV",
"pycharm": {
"name": "#%% md\n"
}
}
},
{
"cell_type": "code",
"source": [
"##Generate predictions out of the fitted model##\n",
"\n",
"xfit = np.linspace(0,200)\n",
"xfit = xfit[:, np.newaxis]\n",
"yfit = model.predict(xfit)\n",
"\n",
"##Plot the regression line##\n",
"\n",
"fig, ax = plt.subplots()\n",
"ax.scatter(x,y)\n",
"ax.set_xlabel('Attack')\n",
"ax.set_ylabel('HP')\n",
"ax.plot(xfit, yfit, label='Regression line', color='red')\n",
"ax.legend()\n",
"plt.show()"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 279
},
"id": "PIZ5v8MDem9w",
"outputId": "3dd4d060-cf1e-4cbe-c603-daaee7439d44",
"pycharm": {
"name": "#%%\n"
}
},
"execution_count": 17,
"outputs": [
{
"data": {
"text/plain": "<Figure size 432x288 with 1 Axes>",
"image/png": "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\n"
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
]
},
{
"cell_type": "markdown",
"source": [
"**Your turn !**"
],
"metadata": {
"id": "J3OzPndKsEsA",
"pycharm": {
"name": "#%% md\n"
}
}
},
{
"cell_type": "markdown",
"source": [
"**1) Do the same as above, but now include 'Defense' as a second predictor.**"
],
"metadata": {
"id": "PLEEhDHje0Zm",
"pycharm": {
"name": "#%% md\n"
}
}
},
{
"cell_type": "code",
"source": [
"##1##\n",
"\n",
"##Extract the 'Attack' and 'Defense' as predictors and 'HP' as the targt variable##\n",
"\n",
"X = df[['Attack', 'Defense']].values \n",
"y = df['HP'].values \n",
"x = df['Attack'].values\n",
"\n",
"##Split the dataset in a train and test split##\n",
"\n",
"X_train, X_test, y_train, y_test = train_test_split(X,y,train_size=0.8,test_size=0.2, shuffle=True)"
],
"metadata": {
"id": "YkbDiZxafwpD",
"pycharm": {
"name": "#%%\n"
}
},
"execution_count": 18,
"outputs": []
},
{
"cell_type": "code",
"source": [
"##Fit the model to the training data##\n",
"\n",
"model.fit(X_train,y_train)\n",
"\n",
"##Get the model's coefficients##\n",
"\n",
"coef = model.coef_\n",
"intercept = model.intercept_\n",
"\n",
"print('Model\\'s coefficients : {}'.format(coef))\n",
"print('Model\\'s intercept : {}'.format(intercept))"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "Q9Z0y3gxf2QS",
"outputId": "69ffa580-2d41-47bc-cc5b-a0442f8fa6bd",
"pycharm": {
"name": "#%%\n"
}
},
"execution_count": 19,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Model's coefficients : [0.31200735 0.0505385 ]\n",
"Model's intercept : 40.432815767458536\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"##Plot the regression plane##\n",
"\n",
"z = df['Defense']\n",
"xf = np.linspace(0,200)\n",
"zf = np.linspace(0,200)\n",
"xx, zz = np.meshgrid(xf, zf)\n",
"\n",
"xx_new = xx.flatten()[:,np.newaxis]\n",
"zz_new = zz.flatten()[:,np.newaxis]\n",
"\n",
"Xfit = np.concatenate((xx_new,zz_new), axis=-1)\n",
"yfit = model.predict(Xfit)\n",
"yfit = yfit[:,np.newaxis].reshape(xx.shape[0], xx.shape[1])\n",
"\n",
"fig = plt.figure()\n",
"ax = plt.axes(projection='3d')\n",
"ax.scatter3D(x,z,y)\n",
"ax.plot_surface(xx,zz,yfit, color='red')\n",
"ax.set_xlabel('Attack')\n",
"ax.set_ylabel('Defense')\n",
"ax.set_zlabel('HP')\n",
"\n",
"plt.show()"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 248
},
"id": "EWTI84PBV5TB",
"outputId": "b5335c11-f01b-422b-cec2-14e8632dec3f",
"pycharm": {
"name": "#%%\n"
}
},
"execution_count": 20,
"outputs": [
{
"data": {
"text/plain": "<Figure size 432x288 with 1 Axes>",
"image/png": "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\n"
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
]
},
{
"cell_type": "code",
"source": [
"##Predict on the training and test sets##\n",
"\n",
"y_pred_train = model.predict(X_train)\n",
"y_pred_test = model.predict(X_test)\n",
"\n",
"##Compute the coefficient of determination and the means square error on both training and test sets##\n",
"\n",
"MSE_train = mean_squared_error(y_train, y_pred_train)\n",
"MSE_test = mean_squared_error(y_test, y_pred_test)\n",
"R2_train = model.score(X_train, y_train)\n",
"R2_test = model.score(X_test, y_test)\n",
"\n",
"\n",
"print('R2 on training set : {}'.format(R2_train))\n",
"print('R2 on test set : {}'.format(R2_test))\n",
"print('MSE on training set : {}'.format(MSE_train))\n",
"print('MSE on test set : {}'.format(MSE_test))"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "qCTnZI0vgrw4",
"outputId": "9ff030de-b4e0-4425-d4f5-586d733e3ec9",
"pycharm": {
"name": "#%%\n"
}
},
"execution_count": 21,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"R2 on training set : 0.1795411465327006\n",
"R2 on test set : 0.17387505508052736\n",
"MSE on training set : 539.6294869442388\n",
"MSE on test set : 505.77382807523355\n"
]
}
]
},
{
"cell_type": "markdown",
"source": [
"**Let's now experiment with classification. Select the variables 'HP', 'Attack' and 'Defense' as predictors, and 'Legendary' as the target variable.**"
],
"metadata": {
"id": "Zciw48DXgzuX",
"pycharm": {
"name": "#%% md\n"
}
}
},
{
"cell_type": "markdown",
"source": [
"**2) Apply the same methodology as above, but this time use the KNeighborsClassifier of the sklearn library to predict whether a Pokemon is legendary or not. Set the number of neighbors to 5.**"
],
"metadata": {
"id": "lw9udYmhhX49",
"pycharm": {
"name": "#%% md\n"
}
}
},
{
"cell_type": "markdown",
"source": [
"**3) Create functions that, given arrays of true class labels and predicted labels, compute :**\n",
"\n",
"* **a) The accuracy**\n",
"* **b) The recall score**\n",
"* **c) The precision score**\n",
"* **d) The confusion matrix**\n",
"* **e) The F1-score**\n",
"\n",
"**Compare the result of your implementation of these metrics on predictions for the training and test sets to the methods of the sklearn library.**\n",
"\n"
],
"metadata": {
"id": "WbwwdoxDjFeQ",
"pycharm": {
"name": "#%% md\n"
}
}
},
{
"cell_type": "code",
"source": [
"###2###\n",
"\n",
"##Select 'HP', 'Defense' and 'Attack' as predictors, and 'Legendary' as the target variables## \n",
"\n",
"X = df[['HP', 'Defense', 'Attack']].values\n",
"y = df['Legendary'].astype(int).values"
],
"metadata": {
"id": "oyaDNpPInZ-V",
"pycharm": {
"name": "#%%\n"
}
},
"execution_count": 22,
"outputs": []
},
{
"cell_type": "code",
"source": [
"##Plot the data per class##\n",
"\n",
"data = df[['Attack', 'Defense', 'HP', 'Legendary']]\n",
"groups = df.groupby('Legendary')\n",
"\n",
"fig = plt.figure()\n",
"ax = plt.axes(projection='3d')\n",
"\n",
"for name, group in groups:\n",
" ax.plot(group.Attack, group.Defense, group.HP , marker='o', linestyle='', ms=4, label=name)\n",
"ax.legend()\n",
"ax.set_xlabel('Attack')\n",
"ax.set_ylabel('Defense')\n",
"ax.set_zlabel('HP')\n",
"plt.show()"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 248
},
"id": "5SbdHrTjTWcO",
"outputId": "69219616-8472-456a-c5d9-80c8db27f2a4",
"pycharm": {
"name": "#%%\n"
}
},
"execution_count": 23,
"outputs": [
{
"data": {
"text/plain": "<Figure size 432x288 with 1 Axes>",
"image/png": "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71jXECzrsLKykssvv5znn3+egoLA1q6A/T04//zzufTSS/nRj34EQHp6Og0NDarroRB7ZmYmNTU16rG1tbXjyjL0BUF3PbxBb28vH3zwAevXr2fv3r2ccsopLF++nCVLlri1HJSKvKamJlpbW4mIiCA9Pd0nH1npJfGmqjHQGKq2w2AwsHv3biIiIhBCDNu4NlpQSCInJ8cvC0eJazQ3N6uqV4G2Dmtqarjooot45plnWLJkSUDO6QghBFdccQVJSUk89thj6uO33norycnJajDTYDDwpz/9iY0bN/Lkk0+qwcybbrqJLVu2uDv1uDdBxgVROMJkMvHRRx+xfv16duzYwYknnsiKFSs4/vjjPVoOio+s6E+kp6cPWT1ZU1NDc3MzBQUF4yr4plg4ypQs5Y7c0tJCX1+f2rg22pkhZTZpXl5eQAriHK3DtrY2wsPDSUtL86ri1RPq6+u54IILePLJJznhhBNGvEZ32LRpEyeddJKTq/zHP/6RY445hgsvvJDq6mpycnJYt24dSUlJCCG44YYb+Pe//01UVBTPP/+8u/gEhIhiZOjv7+ezzz5j/fr1bN68meOOO44VK1Zw0kknedzgfX19NDc309zcjFarJS0tTRWtUZqVTCaT2xbxsURrayulpaXMmzfPrSaCUmnomBlKS0sbcQflcOjv72fnzp1MTwtnwn9uHqSZGQgoLeUtLS0ATs1r3qCxsZELLriARx99lJNPPjkgaxplhIgiULBYLHz55ZesX7+e//3vfyxatIjly5dzyimneBQ2MZlMKmkoBV/x8fGj0ofgCxobG6murvZatl6WZTXI297eTkxMDGlpaaSkpARUGcpkMrFz506mTZvGxLfPQzKUIomRN44Nhf7+frX9v7+/f9jitebmZs4//3weeughTjvttICvZ5Qwfr6MHnDYEIUjrFYrmzZtYv369XzxxRcUFBSwYsUKli1b5vZurPjX4eHhWCwWbDabamkEYnzdSFBbW0tTUxPz5s3zKyjrKF6rxGsUM34kbpUyN3b69OkkJia6nethvLXW7/N7A8dKXkUqz7H9v62tjfPPP597772XM888M6hrCTJCRBFs2Gw2vv32W9avX89nn33G9OnTWbFiBWeccQbR0dF0dHRw4MAB8vLy1CCcq9KV0qcxmgpHQggqKyvp7Oxk7ty5AU33Njc309LSorpevtY09PX1sWvXLmbOnKkKukSs/d6oWBSeoFhRSup17dq1tLW1qTU5hzlCRDGakGWZbdu28cYbb/Dxxx+TmppKeXk569ev91iZpwQMm5qaMJlMpKSkODWtBQOKZoPVamXmzJlBizEorldLS4sqJzdc41pvby+7du1i9uzZTjUCnuZ6jAU6Ojq49NJLSU9Pp6qqijPOOIN77713TNYSIISIYqzwySefcNNNN7Fs2TK+/vprMjIyWL58OWeffbaTHJ8jlH6GpqYmNcuQnp4e0OYupdMyLCyMqVOnjlqsxGw2q76/QohpaWnExsaqa+jp6aG4uHjU60p8QU9PDxdccAE///nPufjiiwH7a/M3W3LllVeyYcMG0tLS2L3brmh+zz338Oyzz6oZnj/+8Y+cddZZADzwwAOsXbsWrVbL448/zve///0AvKoQUYwZPv/8c2bNmkV6erqqlbB+/Xo2bNhAUlISy5cv55xzzvEoXuLqH3ujqTkclKKq+Ph4cnNzxyygqhBic3MzPT09JCUlERMTQ1VVFQUFBWMpMjskent7ueiii1i1ahWXX355QM753//+l5iYGC6//HInooiJieGWW25xeu7evXtZuXIlW7Zsob6+ntNOO42DBw8Gwm0c90QxqpPCRhOnnHKoPVySJGbPns3s2bO5++67KSkpYf369Vx44YVERUVx7rnncu6555Kenu40lUwJeCrFQg0NDezfv9+v1KRS+pyenk5WVlZQXrO3cJXJr62t5eDBg4SFhVFVVaUGDEd7tsZQMBqNXHLJJVx66aUBIwmApUuXUllZ6dVz3333XS6++GLCw8PJy8tjypQpbNmyheOOOy5g6xmvOGKJwhMkSWLatGnceeed3HHHHVRUVPDmm2/yk5/8BK1Wyw9/+ENWrFjBxIkTVdLQaDSkpKSQkpLilJo8ePCg2hGanJzskTSUgqWcnBzS09NH8+UOi66uLurr6zn22GOJiIhQG9dKS0uJjo5W064jVdIaCfr7+7nsssv40Y9+xJVXXjkq13zyySd56aWXWLRoEY8++iiJiYnU1dVx7LHHqs/Jysqirq5uVNYz1hg/FUdjAEmSmDx5MrfeeiubNm3ilVdeQa/Xc/XVV3PGGWfw17/+lcrKSqdxdxqNhqSkJGbMmMGxxx5LZmYmBoOBzZs3U1xcrCpeKTAajWzfvp38/PxxRxLt7e3s379fLfJSGtemTZvGscceS15enjo1fseOHdTW1joNnh4NmM1mrrjiCn7wgx/ws5/9bFTctZ///OeUlZWxc+dOMjIy+PWvfx30a453HHUWhSdIkkR2dja/+MUvuPnmm2lsbOStt97ixhtvpKenR9XUcNSDdOwIdde0Fh8fT11dHbNmzSIhIWFsX6ALDAYDJSUlFBYWuk2dOgrX5ufnqxWvRUVFqkReWlpaUCdrWSwWrrrqKk466SRuuummUYvpOBL6NddcwznnnAMcWU1evuKIDWYGEi0tLaqmRltbG2eeeSbnnnuuR0k6IQSNjY0cOHCAsLAwoqKiAlIEFSi0trZSVlZGYWGhX+P6FIm85uZmrFarU9o1UJvZarVyzTXXUFBQwJ133hlUkqisrOScc85Rg5lKJyjAX/7yFzZv3szrr7/Onj17uOSSS9Rg5rJlyygpKTkqgpkBJYp///vf3HzzzdhsNq6++mpuv/32ka1uHMJgMPDee+/x5ptvUltby/e//31WrFjhJHZrMBg4ePCgatI7FkHpdDo1SDoWE7NbWlqoqKjwulx8OCh1KM3NzRiNxoDohdpsNlavXk1eXh733ntvUEli5cqVfPHFF7S2tpKens69997LF198wc6dO5Ek+xzXp59+WiWO+++/n+eeew6dTsdjjz02ZEWoLMveBruPHqKw2WxMmzaNTz75hKysLBYvXsxrr70WFOGQ8YLOzk42bNjAm2++SVlZGaeffjpxcXF0dXVx1113ub1bKyZ8S0sLGo3GqWkt2GhqalJ7SoJh2Sgp5ZaWFr8b12RZ5uabbyYlJYUHHnhgXDXu+QKFJHbv3s0333xDVFQUZ555pid9kaOHKL755hvuuecePvroI8BemAJwxx13jGR9hw16enq49dZbee+990hPT+ekk05i+fLlLF682KNp6tq0ppBGMPz+hoYG6urqKCwsHJUMhmvjmjf6E7Isc8sttxAZGcmjjz562JKEguLiYq666iquuuoq3n77bfLy8lizZo07C2ncE0XAvjF1dXVOMzmzsrI8KQ4fkbBarRiNRkpKSpAkiY8++ojnn3+em266iZNOOokVK1Zw3HHHOW3SiIgIVQ1K8fv37duH1WolNTWV9PT0gDSt1dfX09DQMGokAYeyQ4oug2OgNzIyUm0lVywbWZa588470Wq1RwRJADz33HM88cQTaDQann76af70pz8hSRL9/f2jYkEGEqGsR4CQkJDACy+8oP6+YsUKVqxYQX9/P59++imvv/46v/rVrzj++ONZsWIFJ554opP5Hx4eTlZWFllZWeqckAMHDmA2m9X+E3+ChbW1tTQ3N1NYWDhmBVSSJBEfH098fDxTp05V54Xu2LEDi8XCpk2bMBgMmEwmnn766cOWJBR3w2azodVqiYyM5I033uDrr7/mscceo6CggK+++oq6ujp+/OMfH1avM2ArPZpTR0MhPDycs88+m+eff56dO3dy4YUX8t5773H88cezevVqPvroI/r7+52OUeaEzp8/n4ULFxIVFUVZWRmbN2+mtLSUrq4uhnEZAfvowZaWFubNmzeuqixjYmLIy8tjyZIlTJs2jeLiYt5++2327t3rRLaHE2w2GxqNhrq6Op599lksFgs/+MEPeOWVVzjnnHNYunQpZWVlXHfddej1+sOKJCCARLF48WJKSkqoqKjAbDbz+uuvc+655wbq9EcE9Ho9p59+Ok8//TRFRUWsWrWKTz/9lJNOOolrrrmGDRs2YDQanY7R6XRkZGQwb948Fi9eTGxsLFVVVXz77bccPHiQjo4Ot6RRWVlJe3v7uCMJRwgheOGFF4iIiKCyspJ33nmH2bNn+32+K6+8krS0NObMmaM+ZjAYOP3005k6dSqnn3467e3t6rVvuukmpkyZQkFBAdu3bx/Ra9FqtTQ2NqrNY3q9nqVLl7JmzRpef/11rr32Wi688EJuvPFGzjvvvBFdaywQ0PToBx98wC9+8QtsNhtXXnkld91118hWd5TAZrPxzTffqJoaM2fOZPny5aqmhqdjDAYDTU1NThPJEhMTqaiooKenJ6DzSQMNIQSPP/4427dv59VXXw1IFsZdg9dvfvObkU7x8uq1CCG4+uqrmTp1KnfccQc7d+7km2++ISsri2OOOYaSkhI0Go2nvpBxH8wMFVyNM8iyzHfffadqauTn53Puuedy5plnemz9VoYmNTU10dzcjF6vZ/r06UEdmjQSCCF46qmn+N///se6desCWk/iWjzlOJ3LzyleHuFaJ/HCCy/w/vvvq8FoSZIwGAw89dRTw4kSj3uiCAUzxxk0Gg1LlixhyZIlPPTQQxQVFbF+/Xoef/xxJk6cqGpqOJaEKxmGtrY2UlNTmTBhAi0tLZSUlHjVtDaaEEKwdu1a/vOf//DWW28FveisqalJ3fwTJkygqakJcJ+lq6ur85oolICl0Whkx44dzJw5Uw1Q6nQ6LrnkEhobG7n00kvp7e0NiHr5WOKwI4rc3FxiY2PRarXodDq+++47j9OkD3doNBrmz5/P/Pnzue+++9izZw/r169n+fLlJCUlsWLFCs4++2ySkpL4z3/+Q1ZWFrNmzUKSJHXSmmM3aLBEeH3BP//5TzZu3Mg777wz6inCQE3xkmUZrVaLyWRi6dKlJCUlsXv3bt566y21Bb65uZmLL76YU045ZdzMjB0Jxv4W4wc+//xzdu7cyXfffQfAgw8+qNbdL1u2jAcffHCMVxh4SJLEnDlzuOeee9iyZQuPP/44BoOBCy64gCVLlrB27dpBjWeu3aA5OTl0dXWxdetWioqKaGhowGq1jtprePXVV3njjTd4++23g9pM5ghlihcQsCleGo0GWZb54x//yIoVK/joo4+47bbbuP766/nyyy8xGo289957LFu2jN///veBf1FjgMPOonCHd999ly+++AKAK664gpNPPpmHHnpobBcVREiSxPTp07nzzjspKysjPDyc3NxcfvKTn6DT6VRNjYyMDKdO17i4OOLi4pgyZQq9vb00NTWxbds2wsLC1KFJwWpaW79+vWpNjKby+bnnnsuLL77I7bffzosvvsjy5cvVx5988kkuvvhiNm/eTHx8vE/xiVdffZVPP/2U733vewDcdNNNREZGcvPNN/PQQw9x2WWXjemQ5kDjsAtm5uXlkZiYiCRJXHfddVx77bUkJCS4nSZ9NODbb7/lmGOOQZIkhBDU1tayfv163nnnHaxWK+eccw7nnXce2dnZHs3uYDetvffee/ztb39jw4YNqqp3MOCuwWvFihUjneIFHIpJKDAajTz33HPs2LFDVUgDu+CN0Wjk1ltv9WXp4z6YedgRRV1dHZmZmTQ3N3P66afzxBNPcO655zoRQ2JiopovP1ohhKChoYG33nqLt99+m56eHs455xyWL19Ofn6+R9IwGo1q/4lGo1F1J/y9O3744Yc8+uijbNy48bCNGzlmN6688kpSU1OJjY3lN7/5DU888QT19fUcf/zxnH/++f5eIkQUwYQigvrss8+6TYGFcAjNzc2qpobBYOCss87i3HPPHXJqmslkUnUnZFlW+0+8jS988skn/PGPf2Tjxo0eRYzH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\n"
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
]
},
{
"cell_type": "code",
"source": [
"##Split the dataset in a training and test set##\n",
"\n",
"X_train, X_test, y_train, y_test = train_test_split(X, y, train_size=0.8, test_size=0.2, shuffle=True)\n",
"\n",
"##Build the KNeighbors classifier and set the number of neighbors to 5##\n",
"\n",
"n_neighbors = 5\n",
"model = KNeighborsClassifier(n_neighbors=n_neighbors)\n",
"\n",
"##Fit the model to the training data##\n",
"\n",
"model.fit(X_train, y_train)\n",
"\n",
"##Predict the target variable for the training and test sets##\n",
"\n",
"y_train_pred = model.predict(X_train)\n",
"y_test_pred = model.predict(X_test)"
],
"metadata": {
"id": "_jU-UmU0Wk-j",
"pycharm": {
"name": "#%%\n"
}
},
"execution_count": 24,
"outputs": []
},
{
"cell_type": "code",
"source": [
"###3###\n",
"\n",
"#The accuracy is defined as (tp + tn)/(tp + tn + fp + fn) \n",
"#The precision is defined as tp/(tp + fp)\n",
"#The recall is defined as tp/(tp + fn)\n",
"#The F1 score is defined as (2 * precision * recall)/(precision + recall)\n",
"#The confusion matrix is a 2x2 matrix containing tn, fp, fn, tp\n",
"\n",
"#tn is number of true negatives (when the model predicts 0 when it is indeed 0)\n",
"#tp is the number of true positives (when the model predicts 1 when it is indeed 1)\n",
"#fn is the number of false negatives (when the model predicts 0, but it should have predicted 1)\n",
"#fp is the number of false positives (when the model predictes 1, but it should have predicted 0)\n",
"\n",
"def accuracy(y_true, y_pred):\n",
" score = 0\n",
" for i, elem in enumerate(y_true):\n",
" if elem == y_pred[i] :\n",
" score += 1\n",
" return score/len(y_true)\n",
"\n",
"\n",
"def precision(y_true, y_pred):\n",
" tp = 0\n",
" fp = 0\n",
" for i, elem in enumerate(y_true):\n",
" if elem == 1 and elem == y_pred[i]:\n",
" tp +=1\n",
" elif elem == 0 and elem != y_pred[i]:\n",
" fp +=1\n",
" return tp/(tp+fp)\n",
"\n",
"def recall(y_true, y_pred):\n",
" tp = 0\n",
" fn = 0\n",
" for i, elem in enumerate(y_true):\n",
" if elem == 1 and elem == y_pred[i]:\n",
" tp += 1\n",
" elif elem == 1 and elem != y_pred[i]:\n",
" fn += 1\n",
" return tp/(tp + fn)\n",
"\n",
"def conf_matrix(y_true, y_pred):\n",
" tp, tn, fp, fn = 0, 0, 0, 0\n",
" for i, elem in enumerate(y_true):\n",
" if elem == 1 and elem == y_pred[i]:\n",
" tp += 1\n",
" elif elem == 0 and elem != y_pred[i]:\n",
" fp += 1\n",
" elif elem == 0 and elem == y_pred[i]:\n",
" tn += 1\n",
" else:\n",
" fn += 1\n",
" return tn, fp, fn, tp\n",
"\n",
"def f1(y_true, y_pred):\n",
" prec = precision(y_true, y_pred)\n",
" rec = recall(y_true, y_pred)\n",
" return 2 * rec * prec/(rec + prec)\n",
"\n",
"##Compute metrics for the training set##\n",
"\n",
"acc_train_1 = accuracy(y_train_true, y_train_pred)\n",
"precision_train_1 = precision(y_train_true, y_train_pred)\n",
"recall_train_1 = recall(y_train_true, y_train_pred)\n",
"confusion_m_train_1 = conf_matrix(y_train_true, y_train_pred)\n",
"f1_train_1 = f1(y_train_true, y_train_pred)\n",
"\n",
"acc_train_2 = accuracy_score(y_train_true, y_train_pred)\n",
"precision_train_2 = precision_score(y_train_true, y_train_pred)\n",
"recall_train_2 = recall_score(y_train_true, y_train_pred)\n",
"confusion_m_train_2 = confusion_matrix(y_train_true, y_train_pred).ravel()\n",
"f1_train_2 = f1_score(y_train_true, y_train_pred)\n",
"\n",
"print('Train Accuracy : {}'.format(acc_train_2))\n",
"print('Train Precision : {}'.format(precision_train_2))\n",
"print('Train Recall : {}'.format(recall_train_2))\n",
"print('Train confusion matrix : {}'.format(confusion_m_train_2))\n",
"print('Train F1 : {}'.format(f1_train_2))\n",
"\n",
"\n",
"##Compute metrics for the test set##\n",
"\n",
"acc_test_1 = accuracy(y_test_true, y_test_pred)\n",
"precision_test_1 = precision(y_test_true, y_test_pred)\n",
"recall_test_1 = recall(y_test_true, y_test_pred)\n",
"confusion_m_test_1 = conf_matrix(y_test_true, y_test_pred)\n",
"f1_test_1 = f1(y_test_true, y_test_pred)\n",
"\n",
"acc_test_2 = accuracy_score(y_test_true, y_test_pred)\n",
"precision_test_2 = precision_score(y_test_true, y_test_pred)\n",
"recall_test_2 = recall_score(y_test_true, y_test_pred)\n",
"confusion_m_test_2 = confusion_matrix(y_test_true, y_test_pred).ravel()\n",
"f1_test_2 = f1_score(y_test_true, y_test_pred)\n",
"\n",
"print('\\nTest Accuracy : {}'.format(acc_test_2))\n",
"print('Test Precision : {}'.format(precision_test_2))\n",
"print('Test Recall : {}'.format(recall_test_2))\n",
"print('Test confusion matrix : {}'.format(confusion_m_test_2))\n",
"print('Test F1 : {}'.format(f1_test_2))"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "g8Uj7kRondQ7",
"outputId": "4e86d796-eb72-4ba7-bfb5-505b3e0caf92",
"pycharm": {
"name": "#%%\n"
}
},
"execution_count": 25,
"outputs": [
{
"ename": "NameError",
"evalue": "name 'y_train_true' is not defined",
"output_type": "error",
"traceback": [
"\u001B[0;31m---------------------------------------------------------------------------\u001B[0m",
"\u001B[0;31mNameError\u001B[0m Traceback (most recent call last)",
"Input \u001B[0;32mIn [25]\u001B[0m, in \u001B[0;36m<module>\u001B[0;34m\u001B[0m\n\u001B[1;32m 58\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[38;5;241m2\u001B[39m \u001B[38;5;241m*\u001B[39m rec \u001B[38;5;241m*\u001B[39m prec\u001B[38;5;241m/\u001B[39m(rec \u001B[38;5;241m+\u001B[39m prec)\n\u001B[1;32m 60\u001B[0m \u001B[38;5;66;03m##Compute metrics for the training set##\u001B[39;00m\n\u001B[0;32m---> 62\u001B[0m acc_train_1 \u001B[38;5;241m=\u001B[39m accuracy(\u001B[43my_train_true\u001B[49m, y_train_pred)\n\u001B[1;32m 63\u001B[0m precision_train_1 \u001B[38;5;241m=\u001B[39m precision(y_train_true, y_train_pred)\n\u001B[1;32m 64\u001B[0m recall_train_1 \u001B[38;5;241m=\u001B[39m recall(y_train_true, y_train_pred)\n",
"\u001B[0;31mNameError\u001B[0m: name 'y_train_true' is not defined"
]
}
]
},
{
"cell_type": "markdown",
"source": [
"Lets look at the distribution of the target variable \"Legendary\". "
],
"metadata": {
"id": "KefhsgtLNeFG",
"pycharm": {
"name": "#%% md\n"
}
}
},
{
"cell_type": "code",
"source": [
"df['Legendary'].astype(int).value_counts().plot(kind='bar')\n",
"print(df['Legendary'].astype(int).value_counts())"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 314
},
"id": "M0ddv0AoNmeJ",
"outputId": "830383fa-924d-42df-dac1-a1ca3ad20337",
"pycharm": {
"name": "#%%\n"
}
},
"execution_count": 26,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0 735\n",
"1 65\n",
"Name: Legendary, dtype: int64\n"
]
},
{
"data": {
"text/plain": "<Figure size 432x288 with 1 Axes>",
"image/png": "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\n"
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
]
},
{
"cell_type": "markdown",
"source": [
"As you can see, the two classes are highly imbalanced, with a vast majority of Pokemons belonging to the non-legendary class. \n",
"\n",
"When dealing with imbalanced datasets, the accuracy can be very misleading. Indeed, suppose that we have a dataset which contains 90 samples belonging to the category '0' and 10 samples belonging to the category '1'. Even if my model always predicts '0' whatever the input, the accuracy would still reach 90%, even though it wrongly classified all the samples belonging to the '1' category. \n",
"\n",
"The precision and recall metrics specifically focus on the minority class (the class '1'), and are to be preferred when dealing with imbalanced datasets. Finally, the F1-score can be seen as an 'average' of the precision and the recall. \n",
"\n",
"But in the end, all these metrics are merely 'summaries' of the behavior of a classifier, and as a result, they do not always allow to grasp what is really happening. In this sense, computing the confusion matrix always remains the best way to get real insight on the behavior of a binary classifier."
],
"metadata": {
"id": "zJEIIjy4PHtl",
"pycharm": {
"name": "#%% md\n"
}
}
}
]
}