{ "cells": [ { "cell_type": "markdown", "metadata": { "toc": true }, "source": [ "

Table of Contents

\n", "
" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "scrolled": true }, "outputs": [], "source": [ "from dataset import Dataset\n", "import numpy as np\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Dataset introduction" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The idea with Dataset is that you simplify most of the tasks that you normally do with pandas DataFrame. This normally applies when you're starting in Python. You will have access at any time, to the underlying `pandas DataFrame` that holds the data, in case you need to use the `numpy` representation of the values, or access specific locations of your data.\n", "\n", "## Data loading\n", "\n", "To start with Dataset, you must load your data the same way it is done with `pandas`, by passing the URL or file location to the constructor (`Dataset()`). If you need to add more `pandas` parameters to this call, specifying what is the separator, or whether to use headers, etc., simply add them after the file location.\n", "\n", "I'm using the location of the CSV from U.Arizona." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "URL=\"https://www2.cs.arizona.edu/classes/cs120/fall17/ASSIGNMENTS/assg02/Pokemon.csv\"\n", "pokemon = Dataset(URL, delimiter=',', header=0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "From this point, you have access to the methods provided by Dataset to describe the dataset, clean up your data, perform feature selection or plot some interesting feature engineering related plots.\n", "\n", "If you already have a DataFrame and want to use inside a Dataset class, you can also import it, using the method:\n", "\n", " >>> my_dataset = Dataset.from_dataframe(my_dataframe)\n", "\n", "### Access to internal DataFrame\n", "\n", "If you want access your `DataFrame` you simply have to call the property `features` at the end of the `Dataset` name:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
#NameType 1Type 2TotalHPAttackDefenseSp. AtkSp. DefSpeedGenerationLegendary
01.0BulbasaurGrassPoison318.045.049.049.065.065.045.01.0False
12.0IvysaurGrassPoison405.060.062.063.080.080.060.01.0False
23.0VenusaurGrassPoison525.080.082.083.0100.0100.080.01.0False
33.0VenusaurMega VenusaurGrassPoison625.080.0100.0123.0122.0120.080.01.0False
44.0CharmanderFireNaN309.039.052.043.060.050.065.01.0False
..........................................
795719.0DiancieRockFairy600.050.0100.0150.0100.0150.050.06.0True
796719.0DiancieMega DiancieRockFairy700.050.0160.0110.0160.0110.0110.06.0True
797720.0HoopaHoopa ConfinedPsychicGhost600.080.0110.060.0150.0130.070.06.0True
798720.0HoopaHoopa UnboundPsychicDark680.080.0160.060.0170.0130.080.06.0True
799721.0VolcanionFireWater600.080.0110.0120.0130.090.070.06.0True
\n", "

800 rows × 13 columns

\n", "
" ], "text/plain": [ " # Name Type 1 Type 2 Total HP Attack \\\n", "0 1.0 Bulbasaur Grass Poison 318.0 45.0 49.0 \n", "1 2.0 Ivysaur Grass Poison 405.0 60.0 62.0 \n", "2 3.0 Venusaur Grass Poison 525.0 80.0 82.0 \n", "3 3.0 VenusaurMega Venusaur Grass Poison 625.0 80.0 100.0 \n", "4 4.0 Charmander Fire NaN 309.0 39.0 52.0 \n", ".. ... ... ... ... ... ... ... \n", "795 719.0 Diancie Rock Fairy 600.0 50.0 100.0 \n", "796 719.0 DiancieMega Diancie Rock Fairy 700.0 50.0 160.0 \n", "797 720.0 HoopaHoopa Confined Psychic Ghost 600.0 80.0 110.0 \n", "798 720.0 HoopaHoopa Unbound Psychic Dark 680.0 80.0 160.0 \n", "799 721.0 Volcanion Fire Water 600.0 80.0 110.0 \n", "\n", " Defense Sp. Atk Sp. Def Speed Generation Legendary \n", "0 49.0 65.0 65.0 45.0 1.0 False \n", "1 63.0 80.0 80.0 60.0 1.0 False \n", "2 83.0 100.0 100.0 80.0 1.0 False \n", "3 123.0 122.0 120.0 80.0 1.0 False \n", "4 43.0 60.0 50.0 65.0 1.0 False \n", ".. ... ... ... ... ... ... \n", "795 150.0 100.0 150.0 50.0 6.0 True \n", "796 110.0 160.0 110.0 110.0 6.0 True \n", "797 60.0 150.0 130.0 70.0 6.0 True \n", "798 60.0 170.0 130.0 80.0 6.0 True \n", "799 120.0 130.0 90.0 70.0 6.0 True \n", "\n", "[800 rows x 13 columns]" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pokemon.features" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If, instead of displaying the entire pandas `DataFrame` we want to see a special feature, we can refer to that feature using its name, right after the `features` property. In this case, let's have a look to the feature called `Name` holding the pokemon name." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 Bulbasaur\n", "1 Ivysaur\n", "2 Venusaur\n", "3 VenusaurMega Venusaur\n", "4 Charmander\n", " ... \n", "795 Diancie\n", "796 DiancieMega Diancie\n", "797 HoopaHoopa Confined\n", "798 HoopaHoopa Unbound\n", "799 Volcanion\n", "Name: Name, Length: 800, dtype: object" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pokemon.features.Name" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The result from this call is pandas `Series`.\n", "\n", "or (to show only the first 5 lines from the dataframe):" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
#NameType 1Type 2TotalHPAttackDefenseSp. AtkSp. DefSpeedGenerationLegendary
01.0BulbasaurGrassPoison318.045.049.049.065.065.045.01.0False
12.0IvysaurGrassPoison405.060.062.063.080.080.060.01.0False
23.0VenusaurGrassPoison525.080.082.083.0100.0100.080.01.0False
\n", "
" ], "text/plain": [ " # Name Type 1 Type 2 Total HP Attack Defense Sp. Atk \\\n", "0 1.0 Bulbasaur Grass Poison 318.0 45.0 49.0 49.0 65.0 \n", "1 2.0 Ivysaur Grass Poison 405.0 60.0 62.0 63.0 80.0 \n", "2 3.0 Venusaur Grass Poison 525.0 80.0 82.0 83.0 100.0 \n", "\n", " Sp. Def Speed Generation Legendary \n", "0 65.0 45.0 1.0 False \n", "1 80.0 60.0 1.0 False \n", "2 100.0 80.0 1.0 False " ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pokemon.features.head(3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Number of features and number of samples in the dataset are accessible through the following properties:" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Nr of features: 13\n", "Nr of samples: 800\n" ] } ], "source": [ "print('Nr of features:', pokemon.num_features)\n", "print('Nr of samples:', pokemon.num_samples)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Access to numerical/categorical variables\n", "\n", "It is also possible to work only with the numerical or categorical variables in the dataset. To do that you just have to use the properties: `.categorical` or `.numerical` to access those portions of the dataframe that only contain those feature subtypes.\n", "\n", "If we want to access only the categorical, we type:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
NameType 1Type 2Legendary
0BulbasaurGrassPoisonFalse
1IvysaurGrassPoisonFalse
2VenusaurGrassPoisonFalse
\n", "
" ], "text/plain": [ " Name Type 1 Type 2 Legendary\n", "0 Bulbasaur Grass Poison False\n", "1 Ivysaur Grass Poison False\n", "2 Venusaur Grass Poison False" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pokemon.categorical.head(3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If we want to access the numerical ones:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
#TotalHPAttackDefenseSp. AtkSp. DefSpeedGeneration
01.0318.045.049.049.065.065.045.01.0
12.0405.060.062.063.080.080.060.01.0
23.0525.080.082.083.0100.0100.080.01.0
\n", "
" ], "text/plain": [ " # Total HP Attack Defense Sp. Atk Sp. Def Speed Generation\n", "0 1.0 318.0 45.0 49.0 49.0 65.0 65.0 45.0 1.0\n", "1 2.0 405.0 60.0 62.0 63.0 80.0 80.0 60.0 1.0\n", "2 3.0 525.0 80.0 82.0 83.0 100.0 100.0 80.0 1.0" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pokemon.numerical.head(3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In case we want only the names of the variables that are numerical or categorical, we can either use:" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['Name', 'Type 1', 'Type 2', 'Legendary']" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pokemon.categorical_features" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "or" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['Name', 'Type 1', 'Type 2', 'Legendary']" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pokemon.names('categorical')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "which, of course, also applies to numerical." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Set the target variable\n", "\n", "At this point, we can make something very interesting when working with datasets, which is to select what feature will be the target variable. By doing so, `Dataset` will separate that feature from the rest, allowing to use special feature engineering methods that we will se afterwards:" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "pokemon.set_target('Legendary');" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "When we select the target, that feature dissapears from the `features` property, as you can see when we call the `head` method again:" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
#NameType 1Type 2TotalHPAttackDefenseSp. AtkSp. DefSpeedGeneration
01.0BulbasaurGrassPoison318.045.049.049.065.065.045.01.0
12.0IvysaurGrassPoison405.060.062.063.080.080.060.01.0
23.0VenusaurGrassPoison525.080.082.083.0100.0100.080.01.0
\n", "
" ], "text/plain": [ " # Name Type 1 Type 2 Total HP Attack Defense Sp. Atk \\\n", "0 1.0 Bulbasaur Grass Poison 318.0 45.0 49.0 49.0 65.0 \n", "1 2.0 Ivysaur Grass Poison 405.0 60.0 62.0 63.0 80.0 \n", "2 3.0 Venusaur Grass Poison 525.0 80.0 82.0 83.0 100.0 \n", "\n", " Sp. Def Speed Generation \n", "0 65.0 45.0 1.0 \n", "1 80.0 60.0 1.0 \n", "2 100.0 80.0 1.0 " ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pokemon.features.head(3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Our feature is now in a new property called `target`. We cann access it, by calling it from our Dataset, which will return a `pandas Series` object to work with." ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 False\n", "1 False\n", "2 False\n", "3 False\n", "4 False\n", " ... \n", "795 True\n", "796 True\n", "797 True\n", "798 True\n", "799 True\n", "Name: Legendary, Length: 800, dtype: bool" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pokemon.target" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If at any point during your work you want to unset the target variable, and make it part of the dataset again as a normal feature, you just have to call\n", "\n", " >>> pokemon.unset_target()\n", " \n", "From that point, no target variable is defined within the dataset and all features are considered normal features.\n", "\n", "### Access to features\n", "\n", "From this point, if we want to access a DataFrame that will contain all features, including the target variable, we must use the property `all`, because, as you can see, `features` no longer contains the target variable:" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
#NameType 1Type 2TotalHPAttackDefenseSp. AtkSp. DefSpeedGenerationLegendary
01.0BulbasaurGrassPoison318.045.049.049.065.065.045.01.0False
12.0IvysaurGrassPoison405.060.062.063.080.080.060.01.0False
23.0VenusaurGrassPoison525.080.082.083.0100.0100.080.01.0False
\n", "
" ], "text/plain": [ " # Name Type 1 Type 2 Total HP Attack Defense Sp. Atk \\\n", "0 1.0 Bulbasaur Grass Poison 318.0 45.0 49.0 49.0 65.0 \n", "1 2.0 Ivysaur Grass Poison 405.0 60.0 62.0 63.0 80.0 \n", "2 3.0 Venusaur Grass Poison 525.0 80.0 82.0 83.0 100.0 \n", "\n", " Sp. Def Speed Generation Legendary \n", "0 65.0 45.0 1.0 False \n", "1 80.0 60.0 1.0 False \n", "2 100.0 80.0 1.0 False " ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pokemon.all.head(3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Data description\n", "\n", "First thing we can do with our dataset is to describe it, just to know the types of the variables, and whether we have NA'a or incomplete features." ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "12 Features. 800 Samples\n", "Available types: [dtype('float64') dtype('O')]\n", " · 3 categorical features\n", " · 9 numerical features\n", " · 1 categorical features with NAs\n", " · 0 numerical features with NAs\n", " · 12 Complete features\n", "--\n", "Target: Legendary (bool)\n", "'Legendary'\n", " · Min.: 0.0000\n", " · 1stQ: 0.0000\n", " · Med.: 0.0000\n", " · Mean: 0.0813\n", " · 3rdQ: 0.0000\n", " · Max.: 1.0000\n" ] } ], "source": [ "pokemon.describe()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In case you want more information about the values, each feature is taking, then you can use the `summary()` method:" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Features Summary (all):\n", "'#' : float64 Min.(1.0) 1stQ(184.) Med.(364.) Mean(362.) 3rdQ(539.) Max.(721.)\n", "'Name' : object 800 categs. 'Bulbasaur'(1, 0.0013) 'Ivysaur'(1, 0.0013) 'Venusaur'(1, 0.0013) 'VenusaurMega Venusaur'(1, 0.0013) ...\n", "'Type 1' : object 18 categs. 'Grass'(112, 0.1400) 'Fire'(98, 0.1225) 'Water'(70, 0.0875) 'Bug'(69, 0.0862) ...\n", "'Type 2' : object 18 categs. 'Poison'(97, 0.2343) 'nan'(35, 0.0845) 'Flying'(34, 0.0821) 'Dragon'(33, 0.0797) ...\n", "'Total' : float64 Min.(180.) 1stQ(330.) Med.(450.) Mean(435.) 3rdQ(515.) Max.(780.)\n", "'HP' : float64 Min.(1.0) 1stQ(50.0) Med.(65.0) Mean(69.2) 3rdQ(80.0) Max.(255.)\n", "'Attack' : float64 Min.(5.0) 1stQ(55.0) Med.(75.0) Mean(79.0) 3rdQ(100.) Max.(190.)\n", "'Defense' : float64 Min.(5.0) 1stQ(50.0) Med.(70.0) Mean(73.8) 3rdQ(90.0) Max.(230.)\n", "'Sp. Atk' : float64 Min.(10.0) 1stQ(49.7) Med.(65.0) Mean(72.8) 3rdQ(95.0) Max.(194.)\n", "'Sp. Def' : float64 Min.(20.0) 1stQ(50.0) Med.(70.0) Mean(71.9) 3rdQ(90.0) Max.(230.)\n", "'Speed' : float64 Min.(5.0) 1stQ(45.0) Med.(65.0) Mean(68.2) 3rdQ(90.0) Max.(180.)\n", "'Generation': float64 Min.(1.0) 1stQ(2.0) Med.(3.0) Mean(3.32) 3rdQ(5.0) Max.(6.0)\n", "'Legendary' : bool 2 categs. 'False'(735, 0.9187) 'True'(65, 0.0813) \n" ] } ], "source": [ "pokemon.summary()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Data Maniuplation\n", "\n", "### Remove columns\n", "\n", "You can easily remove columns from data by using the method `drop_columns()`. You can pass a single column/feature name or a list of features, and they will dissapear from the dataset." ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pokemon.drop_columns('#')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can also remove all the columns that are not in a list. To do that, you use `keep_columns()` and what you must pass to the function is a feature name or a list of feature names you want to keep in your dataset. For example, if we might want to keep only the numerical features:\n", "\n", " pokemon.keep_columns(pokemon.numerical_features)\n", " \n", "or if we might want to keep only a couple of well known features:\n", "\n", " pokemon.keep_columns(['Total', 'Attack'])\n", " \n", "### Add columns\n", "\n", "You can also add columns or entire dataframes to your existing dataset. If you want to simply add a pandas `Series` to the existing dataset, call:\n", "\n", " pokemon.add_colums(my_data_series)\n", " \n", "If what you want is to add an entire dataframe, the mechanism is exactly the same:\n", "\n", " pokemon.add_columns(my_dataframe)\n", "\n", "In the following cells, all features are shown, then categoricals are extracted to variable `categoricals`, and removed from the dataset. Then `categoricals` is added to the original dataset, resulting in a dataset which is equivalent to the one we stsarted with." ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
NameType 1Type 2TotalHPAttackDefenseSp. AtkSp. DefSpeedGeneration
0BulbasaurGrassPoison318.045.049.049.065.065.045.01.0
1IvysaurGrassPoison405.060.062.063.080.080.060.01.0
2VenusaurGrassPoison525.080.082.083.0100.0100.080.01.0
\n", "
" ], "text/plain": [ " Name Type 1 Type 2 Total HP Attack Defense Sp. Atk Sp. Def \\\n", "0 Bulbasaur Grass Poison 318.0 45.0 49.0 49.0 65.0 65.0 \n", "1 Ivysaur Grass Poison 405.0 60.0 62.0 63.0 80.0 80.0 \n", "2 Venusaur Grass Poison 525.0 80.0 82.0 83.0 100.0 100.0 \n", "\n", " Speed Generation \n", "0 45.0 1.0 \n", "1 60.0 1.0 \n", "2 80.0 1.0 " ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Original dataset\n", "pokemon.features.head(3)" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
TotalHPAttackDefenseSp. AtkSp. DefSpeedGeneration
0318.045.049.049.065.065.045.01.0
1405.060.062.063.080.080.060.01.0
2525.080.082.083.0100.0100.080.01.0
\n", "
" ], "text/plain": [ " Total HP Attack Defense Sp. Atk Sp. Def Speed Generation\n", "0 318.0 45.0 49.0 49.0 65.0 65.0 45.0 1.0\n", "1 405.0 60.0 62.0 63.0 80.0 80.0 60.0 1.0\n", "2 525.0 80.0 82.0 83.0 100.0 100.0 80.0 1.0" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "categoricals = pokemon.categorical\n", "\n", "pokemon.drop_columns(pokemon.categorical_features)\n", "pokemon.features.head(3)" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
TotalHPAttackDefenseSp. AtkSp. DefSpeedGenerationNameType 1Type 2
0318.045.049.049.065.065.045.01.0BulbasaurGrassPoison
1405.060.062.063.080.080.060.01.0IvysaurGrassPoison
2525.080.082.083.0100.0100.080.01.0VenusaurGrassPoison
\n", "
" ], "text/plain": [ " Total HP Attack Defense Sp. Atk Sp. Def Speed Generation \\\n", "0 318.0 45.0 49.0 49.0 65.0 65.0 45.0 1.0 \n", "1 405.0 60.0 62.0 63.0 80.0 80.0 60.0 1.0 \n", "2 525.0 80.0 82.0 83.0 100.0 100.0 80.0 1.0 \n", "\n", " Name Type 1 Type 2 \n", "0 Bulbasaur Grass Poison \n", "1 Ivysaur Grass Poison \n", "2 Venusaur Grass Poison " ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pokemon.add_columns(categoricals)\n", "pokemon.features.head(3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Remove samples\n", "\n", "If what you want is to remove some samples (rows) from the dataset, you simply call the method `drop_samples()` passing the list of indices you want to remove. For example:\n", "\n", " pokemon.drop_samples([34, 56, 78])\n", " \n", "### Samples Matching criteria\n", "\n", "If you want to select samples for which one of the features fulfills a certain criteria, you can get the list of indices of those samples by calling:" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "There are 70 samples for which 'Type 1' is valued 'Grass'\n" ] } ], "source": [ "print('There are', len(pokemon.samples_matching('Grass', 'Type 1')),\n", " 'samples for which \\'Type 1\\' is valued \\'Grass\\'')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Data Conversion\n", "\n", "Conversion of data in Dataset is primarily between types for numerical features (`int` <-> `float`), and between categorical and numerical, and viceversa.\n", "\n", "### Type conversion (int, float)\n", "\n", "To convert between float and int:\n", "\n", " pokemon.to_int('this_is_a_float_feature')\n", "\n", "or\n", "\n", " pokemon.to_float(['int_feature_1', 'int_feature_2'])\n", "\n", "Again, you can pass a single name or a list of names between brackets.\n", "\n", "### Categorical <-> Numerical\n", "\n", "We can also convert numerical features to categorical and viceversa (when it makes sense), using:\n", "\n", " pokemon.to_categorical('my_numerical_feature')\n", " \n", "or\n", "\n", " pokemon.to_numerical('my_categorical_feature')\n", " \n", "In our case, it seems that the feature `Generation` could be considered as **categorical**. So, to convert it as a category, we better convert it first to `int`, to later convert it to a category. We can call both methods in the same line. We should also convert the target variable to the categorical type, since `bool` is often interpreted as a number (0/1)." ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Features Summary (all):\n", "'Total' : float64 Min.(180.) 1stQ(330.) Med.(450.) Mean(435.) 3rdQ(515.) Max.(780.)\n", "'HP' : float64 Min.(1.0) 1stQ(50.0) Med.(65.0) Mean(69.2) 3rdQ(80.0) Max.(255.)\n", "'Attack' : float64 Min.(5.0) 1stQ(55.0) Med.(75.0) Mean(79.0) 3rdQ(100.) Max.(190.)\n", "'Defense' : float64 Min.(5.0) 1stQ(50.0) Med.(70.0) Mean(73.8) 3rdQ(90.0) Max.(230.)\n", "'Sp. Atk' : float64 Min.(10.0) 1stQ(49.7) Med.(65.0) Mean(72.8) 3rdQ(95.0) Max.(194.)\n", "'Sp. Def' : float64 Min.(20.0) 1stQ(50.0) Med.(70.0) Mean(71.9) 3rdQ(90.0) Max.(230.)\n", "'Speed' : float64 Min.(5.0) 1stQ(45.0) Med.(65.0) Mean(68.2) 3rdQ(90.0) Max.(180.)\n", "'Generation': object 6 categs. '1'(166, 0.2075) '2'(165, 0.2062) '3'(160, 0.2000) '4'(121, 0.1512) ...\n", "'Name' : object 800 categs. 'Bulbasaur'(1, 0.0013) 'Ivysaur'(1, 0.0013) 'Venusaur'(1, 0.0013) 'VenusaurMega Venusaur'(1, 0.0013) ...\n", "'Type 1' : object 18 categs. 'Grass'(112, 0.1400) 'Fire'(98, 0.1225) 'Water'(70, 0.0875) 'Bug'(69, 0.0862) ...\n", "'Type 2' : object 18 categs. 'Poison'(97, 0.2343) 'nan'(35, 0.0845) 'Flying'(34, 0.0821) 'Dragon'(33, 0.0797) ...\n", "'Legendary' : bool 2 categs. 'False'(735, 0.9187) 'True'(65, 0.0813) \n" ] } ], "source": [ "pokemon.to_int('Generation').to_categorical(['Generation'])\n", "pokemon.summary()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Histograms and density plots\n", "\n", "## Histograms\n", "\n", "This function helps you to plot double histograms to compare feature-distributions for all possible target values. So, you **must set the target variable** before calling this method, or provide the name of the variable you want to compare your distribution against.\n", "\n", "You can plot the histogram of any of the numerical variables with respect to the target variable to see what is its distribution, using (in this case we're plotting a feature called `Total` against the target variable –a binomial boolean feature previsouly set):" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "pokemon.plot_histogram('Total')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Or if you want, plot every numerical feature histogram):" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmkAAADTCAYAAADav4ToAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8li6FKAAAeZUlEQVR4nO3dfbRddXng8e+TAIYCbXgJmUhIE5GxRIqBufJSq3UMKGYYg1QRYQ1RcWJHMVjLEhhnVdZUl1A7UlqpGhQIiiQUZWBVHcVUli2W4A1E3sJLgACXCSQGpHYE5OWZP85OOLk5995z73nZ+9zz/ax11t1nn33Oec7JfrKf8/vt/ftFZiJJkqRqmVJ2AJIkSdqZRZokSVIFWaRJkiRVkEWaJElSBVmkSZIkVZBFmiRJUgVZpEltFBGXRcTmiLirbt0XIuLeiLgjIq6LiOl1j50XERsi4r6IeEc5UUuSqsgiTWqvK4Djh627ETg0Mw8D7gfOA4iI+cApwOuL5/xdREztXqiSpCqzSJPaKDN/Ajw1bN0PM/PF4u4twOxieTGwMjOfz8yHgQ3AkV0LVpJUabuMtUFEXAacAGzOzEOLdV8A/jPwG+BB4IOZ+cvisfOAM4CXgGWZ+YOx3mO//fbLuXPnTvQzSF2xdu3aX2TmjBZf5kPAqmL5AGpF2zZDxbpRmS/qBW3Kl5aZL+oFI+XLmEUate6bLwFX1q27ETgvM1+MiAupdd+cM6z75tXAjyLi32fmS6O9wdy5cxkcHGzuk0gliYhHWnz+p4EXgasm8NylwFKAOXPmmC+qvFbzpV08vqgXjJQvY3Z32n0jtS4iPkCtRfq0fGXC3MeBA+s2m12s20lmLs/MgcwcmDGj9MYJSVIXtOOctA8B3y+WDwAeq3usqe4baTKLiOOBTwHvysxf1z10A3BKRLwqIuYBBwO3lhGjJKl6munuHFE7u2+kySAirgbeCuwXEUPAZ6idDvAq4MaIALglM/8kM++OiGuAe6jl0cfGOjVAktQ/Jlyk1XXfLJxo9w2wHGBgYCAbbaPyvfDCCwwNDfHcc8+VHUrXTJs2jdmzZ7PrrruO+7mZ+f4Gq78+yvafAz437jdSJZkvUnP6MVdg/PkyoSKtrvvmjxp033wrIr5I7cIBu2963NDQEHvttRdz586laAWa1DKTrVu3MjQ0xLx588oORz3GfJGa02+5AhPLl2aG4LD7ZphvrXl01MdPPWrydN8+99xzfZVEEcG+++7Lli1byg6lchrt95NpX28H80XdMBmOQf2WKzCxfBmzSLP7Rv2URNB/n1ft1W/7T799XrVPP+474/3Mzjigyps6dSoLFizYftu4ceOI227cuJFDDz20e8FJFWO+SM3phVxp6epO9Z+xmtnHq5lm+d13351169a19X2lbjBfRjfCjDb7UJuVYy6wETg5M5+OWhPExcAi4NfABzLztjLiVvuZK43ZkqaetHHjRt785jdzxBFHcMQRR/DTn/50p23uvvtujjzySBYsWMBhhx3GAw88AMA3v/nN7es/8pGP8NJLk+60SWkHFc6XK4Djh607F1idmQcDq4v7AO+kdjHawdSGb/pyOwORoHq5YpGmynv22We3N0e/+93vBmD//ffnxhtv5LbbbmPVqlUsW7Zsp+d95Stf4ayzzmLdunUMDg4ye/Zs1q9fz6pVq7j55ptZt24dU6dO5aqrxj3Mn1RZvZQvjWa0oTZzzYpieQVwYt36K7PmFmB6RMxqWzDqO72QK3Z3qvIaNUm/8MILnHnmmduT4f7779/peccccwyf+9znGBoa4qSTTuLggw9m9erVrF27lje+8Y1ALUn333//rnwOqRsmQb7MzMxNxfITwMxieaQZbTYxjIOlqxm9kCsWaepJF110ETNnzuTnP/85L7/8MtOmTdtpm1NPPZWjjjqK7373uyxatIivfvWrZCZLlizh85//fAlRS+Xo1XzJzIyIcQ927mDpmqiq5YrdnepJzzzzDLNmzWLKlCl84xvfaNj3/9BDD/Ga17yGZcuWsXjxYu644w4WLlzItddey+bNmwF46qmneOSRR7odvtRVPZYvT27rxiz+bi7WNz2jjTRRVcsVizT1pI9+9KOsWLGCN7zhDdx7773sscceO21zzTXXcOihh7JgwQLuuusuTj/9dObPn89nP/tZ3v72t3PYYYdx3HHHsWnTTr0l0qTSY/lyA7CkWF4CXF+3/vSoORp4pq5bVGqLquVKvDLtZnkGBgZycHCw7DCaNhlGe27W+vXrOeSQQ8oOo+safe6IWJuZAyWFtF1Z+eKMA2MzX17RTL7Uz2gDPEltRpv/DVwDzAEeoTYEx1PFEBxfonY16K+BD2bmmInQa8eXZkyGY1C/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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "pokemon.plot_histogram(pokemon.numerical_features)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Density plots\n", "\n", "Same applies to density plots (if no arguments are passed, all numerical features are considered)" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "scrolled": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "pokemon.plot_density()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Features importance\n", "\n", "To extract features importance, Dataset uses the ReliefF algorithm. By calling the method `features_importance()` you obtain a Python dictionary with the name of every feature and its relative importance to predict the target variable." ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'HP': 0.05809940944881894,\n", " 'Defense': 0.0918786111111111,\n", " 'Attack': 0.10025405405405405,\n", " 'Sp. Def': 0.10831636904761896,\n", " 'Speed': 0.12509607142857132,\n", " 'Sp. Atk': 0.14393648097826098,\n", " 'Total': 0.23443208333333318}" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pokemon.features_importance()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If you want to plot features importance, call `plot_importance()`:" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "pokemon.plot_importance()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Covariance Matrix\n", "\n", "Another useful plot is the covariance matrix. This time, Dataset library adds an interesting and convenient functionality, which is, grouping features with similar covariance together in the same plot. To do so, it uses a hierarchical dendogram to determine what is the best possible order to reflect affinities between features.\n", "\n", "To use it, simply type the following:" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "pokemon.plot_covariance()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Native pandas plots\n", "\n", "In case you want to access native pandas plotting functions, remeber that you can access the entire dataframe by simply accessing the property `.features`, and from there, you can reference individual variables by its names. From that point, in order to access native pandas `hist()` for the feature `Total`, we use:" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "pokemon.features.Total.hist()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Data cleaning\n", "\n", "## NA's\n", "\n", "Identify and remove NA's is one of the basic capabilities in pandas. To ease that step, Dataset gives you info about features that contain NA's in the `describe()` method. If any, you can ask what features are presenting empty values by:" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['Type 2']" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pokemon.nas()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "and remove them, to check that everything worked fine (no need to say what features to fix)." ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pokemon.drop_na()\n", "pokemon.nas() # <- this should return an empty array" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Replace NA\n", "\n", "If you want to replace NA instead of removing, use `replace_na()`." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Outliers\n", "\n", "To identify outliers, you can use the method `outliers()`. You can specify how many neighbours to consider when evaluating if a sample is an outlier (default value is 20). The method will tell you what indices in the dataset contain samples that might be outliers. From this point is your decision to remove them or not, and properly evaluate the effect of that eventual removal." ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 11, 20, 42, 49, 54, 105, 106, 110, 377])" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pokemon.outliers()" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pokemon.drop_samples(pokemon.outliers())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Correlation\n", "\n", "Besides all the correlogram capabilities provided by scikit-learn and many other libraries, Dataset simply allows you to compute what is the correlation between features. No plot added, but all the relevant information is returned in a single call. The relevant parameter here is the threshold used to determine whether two features are correlated or not." ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[('Total', 'Sp. Atk', 0.7448157606316953),\n", " ('Total', 'Sp. Def', 0.7409062430885279),\n", " ('Total', 'Attack', 0.7370599898479868),\n", " ('Total', 'HP', 0.7224040324193493)]" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pokemon.correlated(threshold=0.7)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If you want to consider correlation with the target variable, you should unset the target variable (returning it back to the list of features) to compute its correlation with the remaining features (of the same type)." ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[('Generation', 'Type 2', 0.2806336628669287),\n", " ('Type 2', 'Legendary', 0.26714501722584993),\n", " ('Type 1', 'Type 2', 0.24543264607050674),\n", " ('Generation', 'Type 1', 0.23603346946402512),\n", " ('Type 1', 'Legendary', 0.19440503723011787),\n", " ('Generation', 'Legendary', 0.1889106739606925)]" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pokemon.unset_target().to_categorical('Legendary').categorical_correlated(threshold=0.1)" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [], "source": [ "pokemon.set_target('Legendary');" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Under represented features\n", "\n", "Dataset has a method to see if the values of some of the features are under represented. This situation occurs when one or several possible values from a feature are only present in a residual number of samples.\n", "\n", "To discover if your dataset presents this anomaly, simply type:" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pokemon.under_represented_features()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "which in our case returns an empty array." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Merge categories\n", "\n", "In our case we don't have that situation. If that would be the case we can merge all under-represented categories together to have a balanced representation of all of them. To do so, we use\n", "\n", " my_data.merge_categories(column='color', old_values=['grey', 'black'], new_value='dark')\n", " \n", "to fusion values `grey` and `black` into a new category `dark`.\n", "\n", "### Merge values\n", "\n", "If we want to fusion values from numerical features, we should use:\n", "\n", " my_data.merge_values(column='years', old_values=['2001', '2002'], new_value='2000')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Data transformation\n", "\n", "## One-hot encoding\n", "\n", "Some categorical features are better transformed into numerical by performing a one-hot encoding. To do so, we call the method `onehot_encode()` specifying the list of features we want to convert. If no name is given, then all categorical variables are _onehot-encoded_.\n", "\n", "In this case, the feature called `Generation` has been previously converted from numerical to categorical, but now we're transforming it into a dummified version, which will produce 6 new variables called `Generation_1` to `Generation_6`." ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Features Summary (all):\n", "'Attack' : float64 Min.(20.0) 1stQ(60.0) Med.(80.0) Mean(83.0) 3rdQ(103.) Max.(190.)\n", "'Defense' : float64 Min.(15.0) 1stQ(55.0) Med.(75.0) Mean(78.2) 3rdQ(100.) Max.(180.)\n", "'HP' : float64 Min.(1.0) 1stQ(55.0) Med.(70.0) Mean(70.7) 3rdQ(85.0) Max.(150.)\n", "'Name' : object 405 categs. 'Bulbasaur'(1, 0.0025) 'Ivysaur'(1, 0.0025) 'Venusaur'(1, 0.0025) 'VenusaurMega Venusaur'(1, 0.0025) ...\n", "'Sp. Atk' : float64 Min.(20.0) 1stQ(50.0) Med.(70.0) Mean(77.3) 3rdQ(100.) Max.(180.)\n", "'Sp. Def' : float64 Min.(20.0) 1stQ(55.0) Med.(75.0) Mean(75.4) 3rdQ(95.0) Max.(154.)\n", "'Speed' : float64 Min.(10.0) 1stQ(50.0) Med.(70.0) Mean(70.9) 3rdQ(92.0) Max.(160.)\n", "'Total' : float64 Min.(190.) 1stQ(352.) Med.(474.) Mean(455.) 3rdQ(530.) Max.(780.)\n", "'Type 1' : object 18 categs. 'Grass'(51, 0.1259) 'Fire'(50, 0.1235) 'Bug'(37, 0.0914) 'Normal'(36, 0.0889) ...\n", "'Type 2' : object 18 categs. 'Poison'(97, 0.2395) 'Flying'(33, 0.0815) 'Dragon'(32, 0.0790) 'Ground'(32, 0.0790) ...\n", "'Generation_1': float64 Min.(0.0) 1stQ(0.0) Med.(0.0) Mean(0.18) 3rdQ(0.0) Max.(1.0)\n", "'Generation_2': float64 Min.(0.0) 1stQ(0.0) Med.(0.0) Mean(0.12) 3rdQ(0.0) Max.(1.0)\n", "'Generation_3': float64 Min.(0.0) 1stQ(0.0) Med.(0.0) Mean(0.20) 3rdQ(0.0) Max.(1.0)\n", "'Generation_4': float64 Min.(0.0) 1stQ(0.0) Med.(0.0) Mean(0.16) 3rdQ(0.0) Max.(1.0)\n", "'Generation_5': float64 Min.(0.0) 1stQ(0.0) Med.(0.0) Mean(0.20) 3rdQ(0.0) Max.(1.0)\n", "'Generation_6': float64 Min.(0.0) 1stQ(0.0) Med.(0.0) Mean(0.12) 3rdQ(0.0) Max.(1.0)\n", "'Legendary' : object 2 categs. 'False'(394, 0.9728) 'True'(11, 0.0272) \n" ] } ], "source": [ "pokemon.onehot_encode('Generation').summary()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Discretize\n", "\n", "In some other ocassions what we need is to transform a numerical variable into a category by discretizing it, o binning. To illustrate this we will transform a numerical variable into a category by specifying ranges of values or bins to consider.\n", "\n", "For example, the feature `Speed` (ranges between 10 and 160) could be discretized by considering only ranges, as follows:" ] }, { "cell_type": "code", "execution_count": 38, "metadata": { "scrolled": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Features Summary (all):\n", "'Attack' : float64 Min.(20.0) 1stQ(60.0) Med.(80.0) Mean(83.0) 3rdQ(103.) Max.(190.)\n", "'Defense' : float64 Min.(15.0) 1stQ(55.0) Med.(75.0) Mean(78.2) 3rdQ(100.) Max.(180.)\n", "'HP' : float64 Min.(1.0) 1stQ(55.0) Med.(70.0) Mean(70.7) 3rdQ(85.0) Max.(150.)\n", "'Name' : object 405 categs. 'Bulbasaur'(1, 0.0025) 'Ivysaur'(1, 0.0025) 'Venusaur'(1, 0.0025) 'VenusaurMega Venusaur'(1, 0.0025) ...\n", "'Sp. Atk' : float64 Min.(20.0) 1stQ(50.0) Med.(70.0) Mean(77.3) 3rdQ(100.) Max.(180.)\n", "'Sp. Def' : float64 Min.(20.0) 1stQ(55.0) Med.(75.0) Mean(75.4) 3rdQ(95.0) Max.(154.)\n", "'Speed' : category 3 categs. 'low'(212, 0.5261) 'mid'(165, 0.4094) 'high'(26, 0.0645) \n", "'Total' : float64 Min.(190.) 1stQ(352.) Med.(474.) Mean(455.) 3rdQ(530.) Max.(780.)\n", "'Type 1' : object 18 categs. 'Grass'(51, 0.1259) 'Fire'(50, 0.1235) 'Bug'(37, 0.0914) 'Normal'(36, 0.0889) ...\n", "'Type 2' : object 18 categs. 'Poison'(97, 0.2395) 'Flying'(33, 0.0815) 'Dragon'(32, 0.0790) 'Ground'(32, 0.0790) ...\n", "'Generation_1': float64 Min.(0.0) 1stQ(0.0) Med.(0.0) Mean(0.18) 3rdQ(0.0) Max.(1.0)\n", "'Generation_2': float64 Min.(0.0) 1stQ(0.0) Med.(0.0) Mean(0.12) 3rdQ(0.0) Max.(1.0)\n", "'Generation_3': float64 Min.(0.0) 1stQ(0.0) Med.(0.0) Mean(0.20) 3rdQ(0.0) Max.(1.0)\n", "'Generation_4': float64 Min.(0.0) 1stQ(0.0) Med.(0.0) Mean(0.16) 3rdQ(0.0) Max.(1.0)\n", "'Generation_5': float64 Min.(0.0) 1stQ(0.0) Med.(0.0) Mean(0.20) 3rdQ(0.0) Max.(1.0)\n", "'Generation_6': float64 Min.(0.0) 1stQ(0.0) Med.(0.0) Mean(0.12) 3rdQ(0.0) Max.(1.0)\n", "'Legendary' : object 2 categs. 'False'(394, 0.9728) 'True'(11, 0.0272) \n" ] } ], "source": [ "pokemon.discretize('Speed', [(10, 60),(60, 110),(110, 150)], \n", " category_names=['low', 'mid', 'high']).summary()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Skewness\n", "\n", "Another possibility is to fix the skewness of all those features who could present it. We can do it at once by simply calling `fix_skewness()`, or if we previously want to check what features present skewness, we can also call `skewed_features()`.\n", "\n", "Let's apply it, first to know what features present skewness (if any):\n" ] }, { "cell_type": "code", "execution_count": 39, "metadata": { "scrolled": false }, "outputs": [ { "data": { "text/plain": [ "Generation_6 2.324424\n", "Generation_2 2.221659\n", "Generation_4 1.800833\n", "Generation_1 1.663678\n", "Generation_3 1.480842\n", "Generation_5 1.480842\n", "Sp. Atk 0.673112\n", "Attack 0.533859\n", "HP 0.498398\n", "Defense 0.471578\n", "Sp. Def 0.438338\n", "Total 0.070545\n", "dtype: float64" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pokemon.skewed_features()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's fix skewness and plot the historgram before and after in the same plot." ] }, { "cell_type": "code", "execution_count": 40, "metadata": { "scrolled": true }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(8,3))\n", "plt.subplot(121)\n", "pokemon.features['HP'].hist()\n", "\n", "# Fix skewness\n", "pokemon.fix_skewness()\n", "\n", "plt.subplot(122)\n", "pokemon.features['HP'].hist()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Scale\n", "\n", "It depends on the method that you use, but it is normally accepted that scaling your numeric features is a good practice. If you want to do so, you can easily do it by calling:" ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pokemon.scale(method='MinMaxScaler')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If you don't specify any parameters, scaling will be applied to numerical features, and the method will return the dataset with those features already scaled using StandardScaler. But you can also specify `MinMaxScaler` as method, if you want a different scaling method to be applied. The result is that numerical features range now between 0 and 1. \n", "\n", "To confirm that scaling worked properly let's plot the histogram of the feature `Totals`, to see that the X-axis is now ranging between 0 and 1, instead of 0 and 800, as in the previous section plot." ] }, { "cell_type": "code", "execution_count": 42, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAD4CAYAAAAXUaZHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8li6FKAAAPlElEQVR4nO3df6zdd13H8efLlsnohbWzeNNs4K1mgpOJYVdAUHKvJaEMYmfCkiE/OjLTGAUXM5MV/nB/mMX6B0YUCWmAtAbCzRyLm0zQpniZBjdsYdCNipuAZWW2AlvxTgIW3v5xT8x1u03PPT/u6fmc5yNpzvn+Op/3O+f2db/3c8/3e1NVSJLa8iOjLkCSNHiGuyQ1yHCXpAYZ7pLUIMNdkhq0cdQFAGzdurVmZmZ6Pv7JJ59k06ZNgyvoAjdp/YI9Twp7XpujR49+s6qeu9q2CyLcZ2ZmOHLkSM/HLy4uMjc3N7iCLnCT1i/Y86Sw57VJ8u/n2ua0jCQ1yHCXpAYZ7pLUIMNdkhpkuEtSgwx3SWqQ4S5JDTLcJalBhrskNeiCuEJVupDN7L1nJOMe2DlZl+FrsDxzl6QGGe6S1CDDXZIaZLhLUoMMd0lqkOEuSQ0y3CWpQYa7JDXIcJekBp033JN8KMnpJA+uWHdpkkNJHu48blmx7Z1JHkny5SSvGVbhkqRz6+bM/QCw8ynr9gKHq+oK4HBnmSRXAtcDP9s55n1JNgysWklSV84b7lV1L/Dtp6zeBRzsPD8IXLti/UJVfa+qvgo8Arx0QLVKkrqUqjr/TskM8PGqelFn+Ymq2rxi++NVtSXJe4H7qurDnfUfBD5RVXes8pp7gD0A09PTVy8sLPTcxNLSElNTUz0fP24mrV8Ybc/HTp4ZybjbL9ng+zwB+ul5fn7+aFXNrrZt0HeFzCrrVv3uUVX7gf0As7OzNTc31/Ogi4uL9HP8uJm0fmG0Pd8wwrtC+j63b1g99/ppmVNJtgF0Hk931j8KPG/FfpcD3+i9PElSL3oN97uB3Z3nu4G7Vqy/PsmPJtkOXAF8tr8SJUlrdd5pmSQfBeaArUkeBW4F9gG3J7kROAFcB1BVDyW5HfgScBb47ar6wZBqlySdw3nDvareeI5NO86x/23Abf0UJUnqj1eoSlKDDHdJapDhLkkNMtwlqUGGuyQ1yHCXpAYZ7pLUIMNdkhpkuEtSgwx3SWqQ4S5JDTLcJalBhrskNchwl6QGGe6S1CDDXZIaZLhLUoMMd0lqkOEuSQ0y3CWpQYa7JDXIcJekBhnuktQgw12SGmS4S1KDDHdJapDhLkkNMtwlqUGGuyQ1yHCXpAb1Fe5JfjfJQ0keTPLRJM9McmmSQ0ke7jxuGVSxkqTu9BzuSS4DfgeYraoXARuA64G9wOGqugI43FmWJK2jfqdlNgIXJ9kIPAv4BrALONjZfhC4ts8xJElrlKrq/eDkJuA24LvA31XVm5I8UVWbV+zzeFU9bWomyR5gD8D09PTVCwsLPdextLTE1NRUz8ePm0nrF0bb87GTZ0Yy7vZLNvg+T4B+ep6fnz9aVbOrbdvYa0GdufRdwHbgCeAvk7y52+Oraj+wH2B2drbm5uZ6LYXFxUX6OX7cTFq/MNqeb9h7z0jGPbBzk+/zBBhWz/1My7wa+GpV/WdV/Q9wJ/AK4FSSbQCdx9P9lylJWot+wv0E8PIkz0oSYAdwHLgb2N3ZZzdwV38lSpLWqudpmaq6P8kdwOeAs8DnWZ5mmQJuT3Ijy98ArhtEoZKk7vUc7gBVdStw61NWf4/ls3hJ0oh4haokNchwl6QGGe6S1CDDXZIaZLhLUoMMd0lqkOEuSQ0y3CWpQYa7JDXIcJekBhnuktQgw12SGmS4S1KDDHdJapDhLkkNMtwlqUGGuyQ1yHCXpAYZ7pLUIMNdkhpkuEtSgwx3SWqQ4S5JDTLcJalBhrskNchwl6QGGe6S1CDDXZIaZLhLUoMMd0lqUF/hnmRzkjuS/EuS40l+McmlSQ4lebjzuGVQxUqSutPvmft7gE9W1QuBFwPHgb3A4aq6AjjcWZYkraOewz3Jc4BXAR8EqKrvV9UTwC7gYGe3g8C1/RYpSVqbVFVvByY/D+wHvsTyWftR4CbgZFVtXrHf41X1tKmZJHuAPQDT09NXLyws9FQHwNLSElNTUz0fP24mrV8Ybc/HTp4ZybjbL9ng+zwB+ul5fn7+aFXNrratn3CfBe4DXllV9yd5D/Ad4B3dhPtKs7OzdeTIkZ7qAFhcXGRubq7n48fNpPULo+15Zu89Ixn3wM5Nvs8ToJ+ek5wz3Df2UdOjwKNVdX9n+Q6W59dPJdlWVY8l2Qac7mMMreLYyTPcMKLA+dq+141kXElr0/Oce1X9B/D1JC/orNrB8hTN3cDuzrrdwF19VShJWrN+ztwB3gF8JMlFwFeAt7H8DeP2JDcCJ4Dr+hxDkrRGfYV7VT0ArDbfs6Of15Uk9ccrVCWpQYa7JDXIcJekBhnuktQgw12SGtTvRyGldTHKC7ekceSZuyQ1yHCXpAYZ7pLUIMNdkhpkuEtSgwx3SWqQ4S5JDTLcJalBhrskNchwl6QGGe6S1CDDXZIaZLhLUoMMd0lqkOEuSQ0y3CWpQYa7JDXIcJekBhnuktQgw12SGmS4S1KDNo66AI2Xmb33jGTcm68aybDS2PLMXZIa1He4J9mQ5PNJPt5ZvjTJoSQPdx639F+mJGktBjEtcxNwHHhOZ3kvcLiq9iXZ21m+ZQDjSFono5p+O7Bz00jGbVFfZ+5JLgdeB3xgxepdwMHO84PAtf2MIUlau1RV7wcndwB/CDwb+L2qen2SJ6pq84p9Hq+qp03NJNkD7AGYnp6+emFhoec6lpaWmJqa6vn4cXP622c49d1RV7G+pi9m4nrefsmGkX1dHzt5ZiTjjrLnUeknv+bn549W1exq23qelknyeuB0VR1NMrfW46tqP7AfYHZ2tubm1vwS/2dxcZF+jh83f/aRu3j3scn6oNPNV52duJ4P7Nw0sq/rG0Y4LTNJ/5dhePnVz/+WVwK/muQa4JnAc5J8GDiVZFtVPZZkG3B6EIVKkrrX85x7Vb2zqi6vqhngeuBTVfVm4G5gd2e33cBdfVcpSVqTYfycuw+4PcmNwAnguiGMITXv2MkzI5se0fgbSLhX1SKw2Hn+LWDHIF5XktQbr1CVpAYZ7pLUIMNdkhpkuEtSgwx3SWqQ4S5JDTLcJalBhrskNchwl6QGGe6S1CDDXZIaZLhLUoMm668fDNio/s7kzVeNZFhJY8Qzd0lqkOEuSQ0y3CWpQYa7JDXIcJekBhnuktQgw12SGmS4S1KDDHdJapDhLkkNMtwlqUGGuyQ1yHCXpAYZ7pLUIMNdkhpkuEtSgwx3SWpQz+Ge5HlJ/j7J8SQPJbmps/7SJIeSPNx53DK4ciVJ3ejnz+ydBW6uqs8leTZwNMkh4AbgcFXtS7IX2Avc0n+pklp37OQZbhjBn6/82r7XrfuYw9bzmXtVPVZVn+s8/y/gOHAZsAs42NntIHBtv0VKktYmVdX/iyQzwL3Ai4ATVbV5xbbHq+ppUzNJ9gB7AKanp69eWFjoefylpSWmpqZ6Pr5Xx06eWfcxAaYvhlPfHcnQI2PPk2FUPV912SXrP2hHP/k1Pz9/tKpmV9vWd7gnmQI+DdxWVXcmeaKbcF9pdna2jhw50nMNi4uLzM3N9Xx8r2ZG8OMjwM1XneXdx/qZURs/9jwZRtXzKKdl+smvJOcM974+LZPkGcDHgI9U1Z2d1aeSbOts3wac7mcMSdLa9fNpmQAfBI5X1R+v2HQ3sLvzfDdwV+/lSZJ60c/PP68E3gIcS/JAZ927gH3A7UluBE4A1/VXoiRprXoO96r6RyDn2Lyj19eVJPXPK1QlqUGGuyQ1yHCXpAYZ7pLUIMNdkhpkuEtSgwx3SWqQ4S5JDTLcJalBhrskNchwl6QGGe6S1CDDXZIaZLhLUoMMd0lqkOEuSQ0y3CWpQU38afVjJ89ww957Rl2GJF0wPHOXpAYZ7pLUIMNdkhpkuEtSgwx3SWqQ4S5JDTLcJalBhrskNchwl6QGNXGFqiT1Y2aEV7gf2LlpKK/rmbskNchwl6QGDS3ck+xM8uUkjyTZO6xxJElPN5RwT7IB+HPgtcCVwBuTXDmMsSRJTzesM/eXAo9U1Veq6vvAArBrSGNJkp4iVTX4F03eAOysqt/oLL8FeFlVvX3FPnuAPZ3FFwBf7mPIrcA3+zh+3Exav2DPk8Ke1+Ynquq5q20Y1kchs8q6//ddpKr2A/sHMlhypKpmB/Fa42DS+gV7nhT2PDjDmpZ5FHjeiuXLgW8MaSxJ0lMMK9z/GbgiyfYkFwHXA3cPaSxJ0lMMZVqmqs4meTvwt8AG4ENV9dAwxuoYyPTOGJm0fsGeJ4U9D8hQfqEqSRotr1CVpAYZ7pLUoLEJ9/PdziDL/rSz/YtJXjKKOgepi57f1On1i0k+k+TFo6hzkLq9bUWSX0jyg841FWOtm56TzCV5IMlDST693jUOWhdf25ck+eskX+j0/LZR1DkoST6U5HSSB8+xffD5VVUX/D+Wfyn7b8BPAhcBXwCufMo+1wCfYPkz9i8H7h913evQ8yuALZ3nr52Enlfs9yngb4A3jLrudXifNwNfAp7fWf7xUde9Dj2/C/ijzvPnAt8GLhp17X30/CrgJcCD59g+8PwalzP3bm5nsAv4i1p2H7A5ybb1LnSAzttzVX2mqh7vLN7H8vUE46zb21a8A/gYcHo9ixuSbnr+deDOqjoBUFXj3nc3PRfw7CQBplgO97PrW+bgVNW9LPdwLgPPr3EJ98uAr69YfrSzbq37jJO19nMjy9/5x9l5e05yGfBrwPvXsa5h6uZ9/mlgS5LFJEeTvHXdqhuObnp+L/AzLF/8eAy4qap+uD7ljcTA82tc/hLTeW9n0OU+46TrfpLMsxzuvzTUioavm57/BLilqn6wfFI39rrpeSNwNbADuBj4pyT3VdW/Dru4Iemm59cADwC/AvwUcCjJP1TVd4Zd3IgMPL/GJdy7uZ1Ba7c86KqfJD8HfAB4bVV9a51qG5Zuep4FFjrBvhW4JsnZqvqr9Slx4Lr92v5mVT0JPJnkXuDFwLiGezc9vw3YV8sT0o8k+SrwQuCz61Piuht4fo3LtEw3tzO4G3hr57fOLwfOVNVj613oAJ235yTPB+4E3jLGZ3ErnbfnqtpeVTNVNQPcAfzWGAc7dPe1fRfwy0k2JnkW8DLg+DrXOUjd9HyC5Z9USDLN8p1jv7KuVa6vgefXWJy51zluZ5DkNzvb38/yJyeuAR4B/pvl7/xjq8uefx/4MeB9nTPZszXGd9TrsuemdNNzVR1P8kngi8APgQ9U1aofqRsHXb7PfwAcSHKM5SmLW6pqbG8FnOSjwBywNcmjwK3AM2B4+eXtBySpQeMyLSNJWgPDXZIaZLhLUoMMd0lqkOEuSQ0y3CWpQYa7JDXofwEA+3JR7VPn+AAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "pokemon.features.Total.hist()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`Speed` is now a category that only presents three possible values (whose labels have been provided)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Feature selection\n", "\n", "## Information Gain\n", "\n", "To compute the information gain provided by each categorical feature with respect to the target variable (must be set) then, you can use the method `information_gain()`. The result is a dictionary with key-value pairs, where each key corresponds to the categorical variables, and the value is the IG:" ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Name : 0.18\n", "Speed : 0.00\n", "Type 1 : 0.04\n", "Type 2 : 0.03\n" ] } ], "source": [ "ig = pokemon.information_gain()\n", "\n", "for k in ig:\n", " print('{:<7}: {:.2f}'.format(k, ig[k]))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "From this info, it could be safe to remove the variable `Speed`, but must always test your hypothesis first.\n", "\n", "## Stepwise feature selection\n", "\n", "We can force a feature selection process with our features by calling `stepwise_selection()`. We must be sure that the features used in the selection process are all numerical. If that is not the case, call `onehot_encode()` before using this method.\n", "\n", "In our case, we must adapat a little bit our problem to suit the needs of `stepwise_selection()`. We need target variable to be numeric. To achieve that, we must unset the target variable `Legendary` in order to bring it back list of features. Then we call the method `onehot_encode()` (only works over the features, not the target variable), and then set the target again.\n", "\n", "Remember that we can chain method calls:" ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Features Summary (all):\n", "'Attack' : float64 Min.(0.0) 1stQ(0.36) Med.(0.48) Mean(0.48) 3rdQ(0.61) Max.(1.0)\n", "'Defense' : float64 Min.(0.0) 1stQ(0.37) Med.(0.50) Mean(0.50) 3rdQ(0.64) Max.(1.0)\n", "'Generation_1' : float64 Min.(0.0) 1stQ(0.0) Med.(0.0) Mean(0.18) 3rdQ(0.0) Max.(1.0)\n", "'Generation_2' : float64 Min.(0.0) 1stQ(0.0) Med.(0.0) Mean(0.12) 3rdQ(0.0) Max.(0.99)\n", "'Generation_3' : float64 Min.(0.0) 1stQ(0.0) Med.(0.0) Mean(0.20) 3rdQ(0.0) Max.(1.0)\n", "'Generation_4' : float64 Min.(0.0) 1stQ(0.0) Med.(0.0) Mean(0.16) 3rdQ(0.0) Max.(1.0)\n", "'Generation_5' : float64 Min.(0.0) 1stQ(0.0) Med.(0.0) Mean(0.20) 3rdQ(0.0) Max.(1.0)\n", "'Generation_6' : float64 Min.(0.0) 1stQ(0.0) Med.(0.0) Mean(0.12) 3rdQ(0.0) Max.(0.99)\n", "'HP' : float64 Min.(0.0) 1stQ(0.49) Med.(0.58) Mean(0.58) 3rdQ(0.67) Max.(0.99)\n", "'Name' : object 403 categs. 'Bulbasaur'(1, 0.0025) 'Ivysaur'(1, 0.0025) 'Venusaur'(1, 0.0025) 'VenusaurMega Venusaur'(1, 0.0025) ...\n", "'Sp. Atk' : float64 Min.(0.0) 1stQ(0.37) Med.(0.51) Mean(0.52) 3rdQ(0.68) Max.(1.0)\n", "'Sp. Def' : float64 Min.(0.0) 1stQ(0.37) Med.(0.52) Mean(0.51) 3rdQ(0.66) Max.(1.0)\n", "'Speed' : category 3 categs. 'low'(212, 0.5261) 'mid'(165, 0.4094) 'high'(26, 0.0645) \n", "'Total' : float64 Min.(0.0) 1stQ(0.30) Med.(0.51) Mean(0.47) 3rdQ(0.60) Max.(1.0)\n", "'Type 1' : object 18 categs. 'Grass'(51, 0.1266) 'Fire'(49, 0.1216) 'Bug'(36, 0.0893) 'Normal'(36, 0.0893) ...\n", "'Type 2' : object 18 categs. 'Poison'(96, 0.2382) 'Flying'(33, 0.0819) 'Dragon'(32, 0.0794) 'Ground'(32, 0.0794) ...\n", "'Legendary_True': float64 Min.(0.0) 1stQ(0.0) Med.(0.0) Mean(0.02) 3rdQ(0.0) Max.(1.0)\n" ] } ], "source": [ "pokemon.unset_target()\n", "pokemon.onehot_encode('Legendary').drop_columns('Legendary_False')\n", "pokemon.set_target('Legendary_True').summary()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We remove then the column called `Legendary_False` as the column `Legendary_True` already behaves numerically as we want (0.0 means False, and 1.0 means True).\n", "\n", "Now, we let the stepwise algorithm to decide what features could be safe to remove:" ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Considering only numerical features\n" ] }, { "data": { "text/plain": [ "['Generation_3', 'Generation_4']" ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pokemon.stepwise_selection()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In a one-liner, we drop the columns/features selected by the stepwise algorithm and then printout the summary." ] }, { "cell_type": "code", "execution_count": 46, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Considering only numerical features\n", "Features Summary (all):\n", "'Attack' : float64 Min.(0.0) 1stQ(0.36) Med.(0.48) Mean(0.48) 3rdQ(0.61) Max.(1.0)\n", "'Defense' : float64 Min.(0.0) 1stQ(0.37) Med.(0.50) Mean(0.50) 3rdQ(0.64) Max.(1.0)\n", "'Generation_1' : float64 Min.(0.0) 1stQ(0.0) Med.(0.0) Mean(0.18) 3rdQ(0.0) Max.(1.0)\n", "'Generation_2' : float64 Min.(0.0) 1stQ(0.0) Med.(0.0) Mean(0.12) 3rdQ(0.0) Max.(0.99)\n", "'Generation_5' : float64 Min.(0.0) 1stQ(0.0) Med.(0.0) Mean(0.20) 3rdQ(0.0) Max.(1.0)\n", "'Generation_6' : float64 Min.(0.0) 1stQ(0.0) Med.(0.0) Mean(0.12) 3rdQ(0.0) Max.(0.99)\n", "'HP' : float64 Min.(0.0) 1stQ(0.49) Med.(0.58) Mean(0.58) 3rdQ(0.67) Max.(0.99)\n", "'Name' : object 403 categs. 'Bulbasaur'(1, 0.0025) 'Ivysaur'(1, 0.0025) 'Venusaur'(1, 0.0025) 'VenusaurMega Venusaur'(1, 0.0025) ...\n", "'Sp. Atk' : float64 Min.(0.0) 1stQ(0.37) Med.(0.51) Mean(0.52) 3rdQ(0.68) Max.(1.0)\n", "'Sp. Def' : float64 Min.(0.0) 1stQ(0.37) Med.(0.52) Mean(0.51) 3rdQ(0.66) Max.(1.0)\n", "'Speed' : category 3 categs. 'low'(212, 0.5261) 'mid'(165, 0.4094) 'high'(26, 0.0645) \n", "'Total' : float64 Min.(0.0) 1stQ(0.30) Med.(0.51) Mean(0.47) 3rdQ(0.60) Max.(1.0)\n", "'Type 1' : object 18 categs. 'Grass'(51, 0.1266) 'Fire'(49, 0.1216) 'Bug'(36, 0.0893) 'Normal'(36, 0.0893) ...\n", "'Type 2' : object 18 categs. 'Poison'(96, 0.2382) 'Flying'(33, 0.0819) 'Dragon'(32, 0.0794) 'Ground'(32, 0.0794) ...\n", "'Legendary_True': float64 Min.(0.0) 1stQ(0.0) Med.(0.0) Mean(0.02) 3rdQ(0.0) Max.(1.0)\n" ] } ], "source": [ "pokemon.drop_columns(pokemon.stepwise_selection()).summary()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Dataset Split\n", "\n", "Dataset adds a method to split your dataset according to the specified proportions between training and test. The method is called `split()`, and accepts as optional parameter the percentage to be assigned to the test set.\n", "\n", "We normally split specifying the seed used by the random number generator. If you plan to repeat the split process a number of times within a CV process, you need to change the seed accordingly." ] }, { "cell_type": "code", "execution_count": 47, "metadata": {}, "outputs": [], "source": [ "X, y = pokemon.split(seed=1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "What we obtain in X and y, are two objects that inside contain the training and test splits, as pandas `DataFrames`. To access them, we simply write:\n", "\n", " X.train\n", " X.test\n", " y.train\n", " y.test\n", " \n", "Let's check it out:" ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
AttackDefenseGeneration_1Generation_2Generation_5Generation_6HPNameSp. AtkSp. DefSpeedTotalType 1Type 2
1850.5754440.3355480.00.00.00.00.426154Anorith0.2650050.328587mid0.309899RockBug
2270.7782640.6110230.00.00.00.00.556204LopunnyMega Lopunny0.3932940.672391high0.688447NormalFighting
2450.6338560.4396860.00.00.00.00.661813Toxicroak0.6095850.453749mid0.541394PoisonFighting
\n", "
" ], "text/plain": [ " Attack Defense Generation_1 Generation_2 Generation_5 \\\n", "185 0.575444 0.335548 0.0 0.0 0.0 \n", "227 0.778264 0.611023 0.0 0.0 0.0 \n", "245 0.633856 0.439686 0.0 0.0 0.0 \n", "\n", " Generation_6 HP Name Sp. Atk Sp. Def Speed \\\n", "185 0.0 0.426154 Anorith 0.265005 0.328587 mid \n", "227 0.0 0.556204 LopunnyMega Lopunny 0.393294 0.672391 high \n", "245 0.0 0.661813 Toxicroak 0.609585 0.453749 mid \n", "\n", " Total Type 1 Type 2 \n", "185 0.309899 Rock Bug \n", "227 0.688447 Normal Fighting \n", "245 0.541394 Poison Fighting " ] }, "execution_count": 48, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X.train.head(3)" ] }, { "cell_type": "code", "execution_count": 49, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Legendary_True
3600.0
620.0
3740.0
\n", "
" ], "text/plain": [ " Legendary_True\n", "360 0.0\n", "62 0.0\n", "374 0.0" ] }, "execution_count": 49, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y.test.head(3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Depending on the ML method used, you can directly pass `X.train` and `y.train` as DataFrames, or in some other cases to you need to pass the numpy array of values. In that case you simple use:\n", "\n", " X.train.values, y.train.values\n", " \n", "Same applies to test subsets." ] } ], "metadata": { "kernelspec": { "display_name": "dataset-kernel", "language": "python", "name": "dataset-kernel" }, "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.7.7" }, "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": true, "sideBar": true, "skip_h1_title": false, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": true, "toc_position": {}, "toc_section_display": true, "toc_window_display": false } }, "nbformat": 4, "nbformat_minor": 2 }