{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Mushroom Dataset" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 1. Loading Data to Pandas DataFame" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [], "source": [ "import urllib2\n", "from scipy import stats\n", "from pandas import Series, DataFrame\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "%matplotlib inline\n", "\n", "path = 'http://archive.ics.uci.edu/ml/machine-learning-databases/mushroom/agaricus-lepiota.data'\n", "raw_csv = urllib2.urlopen(path)\n", "col_names = range(23)\n", "df = pd.read_csv(raw_csv, names = col_names)" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
0123456789...13141516171819202122
0pxsntpfcnk...swwpwopksu
1exsytafcbk...swwpwopnng
2ebswtlfcbn...swwpwopnnm
3pxywtpfcnn...swwpwopksu
4exsgfnfwbk...swwpwoenag
5exyytafcbn...swwpwopkng
6ebswtafcbg...swwpwopknm
7ebywtlfcbn...swwpwopnsm
8pxywtpfcnp...swwpwopkvg
9ebsytafcbg...swwpwopksm
10exyytlfcbg...swwpwopnng
11exyytafcbn...swwpwopksm
12ebsytafcbw...swwpwopnsg
13pxywtpfcnk...swwpwopnvu
14exfnfnfwbn...fwwpwoekag
15esfgfnfcnk...swwpwopnyu
16effwfnfwbk...swwpwoenag
17pxsntpfcnn...swwpwopksg
18pxywtpfcnn...swwpwopnsu
19pxsntpfcnk...swwpwopnsu
20ebsytafcbk...swwpwopnsm
21pxyntpfcnn...swwpwopnvg
22ebyytlfcbk...swwpwopnsm
23ebywtafcbw...swwpwopnnm
24ebswtlfcbg...swwpwopksm
25pfswtpfcnn...swwpwopnvg
26exyytafcbn...swwpwopnnm
27exywtlfcbw...swwpwopnnm
28effnfnfcnk...swwpwopkyu
29exsytafwnn...swwpwopnvd
..................................................................
8094ebsgfnfwbg...swwpwtpwng
8095pxycfmfcby...yccpwnnwcd
8096ekfwfnfwbw...swwpwtpwng
8097pkynfsfcnb...kpppwoewvl
8098pksefyfcnb...kwppwoewvd
8099ekfwfnfwbw...kwwpwtpwsg
8100efsnfnacbo...soopnopbvl
8101pksefsfcnb...spwpwoewvp
8102exsnfnacby...soopnopncl
8103eksnfnacby...soopnopocl
8104eksnfnacby...soopoopnvl
8105eksnfnacby...soopnopyvl
8106eksnfnacbo...soopoopnvl
8107exsnfnacby...soopoopncl
8108pkyefyfcnb...spwpwoewvl
8109ebswfnfwbw...swwpwtpwng
8110exsnfnacbo...soopoopnvl
8111ekswfnfwbp...swwpwtpwng
8112eksnfnacbo...soopnopbvl
8113pkyefyfcnb...kpppwoewvd
8114pfycfmacby...yccpwnnwcd
8115exsnfnacby...soopoopovl
8116pkynfsfcnb...kpwpwoewvl
8117pksefyfcnb...spwpwoewvd
8118pkynfffcnb...spwpwoewvd
8119eksnfnacby...soopoopbcl
8120exsnfnacby...soopnopbvl
8121efsnfnacbn...soopoopbcl
8122pkynfyfcnb...kwwpwoewvl
8123exsnfnacby...soopoopocl
\n", "

8124 rows × 23 columns

\n", "
" ], "text/plain": [ " 0 1 2 3 4 5 6 7 8 9 ... 13 14 15 16 17 18 19 20 21 22\n", "0 p x s n t p f c n k ... s w w p w o p k s u\n", "1 e x s y t a f c b k ... s w w p w o p n n g\n", "2 e b s w t l f c b n ... s w w p w o p n n m\n", "3 p x y w t p f c n n ... s w w p w o p k s u\n", "4 e x s g f n f w b k ... s w w p w o e n a g\n", "5 e x y y t a f c b n ... s w w p w o p k n g\n", "6 e b s w t a f c b g ... s w w p w o p k n m\n", "7 e b y w t l f c b n ... s w w p w o p n s m\n", "8 p x y w t p f c n p ... s w w p w o p k v g\n", "9 e b s y t a f c b g ... s w w p w o p k s m\n", "10 e x y y t l f c b g ... s w w p w o p n n g\n", "11 e x y y t a f c b n ... s w w p w o p k s m\n", "12 e b s y t a f c b w ... s w w p w o p n s g\n", "13 p x y w t p f c n k ... s w w p w o p n v u\n", "14 e x f n f n f w b n ... f w w p w o e k a g\n", "15 e s f g f n f c n k ... s w w p w o p n y u\n", "16 e f f w f n f w b k ... s w w p w o e n a g\n", "17 p x s n t p f c n n ... s w w p w o p k s g\n", "18 p x y w t p f c n n ... s w w p w o p n s u\n", "19 p x s n t p f c n k ... s w w p w o p n s u\n", "20 e b s y t a f c b k ... s w w p w o p n s m\n", "21 p x y n t p f c n n ... s w w p w o p n v g\n", "22 e b y y t l f c b k ... s w w p w o p n s m\n", "23 e b y w t a f c b w ... s w w p w o p n n m\n", "24 e b s w t l f c b g ... s w w p w o p k s m\n", "25 p f s w t p f c n n ... s w w p w o p n v g\n", "26 e x y y t a f c b n ... s w w p w o p n n m\n", "27 e x y w t l f c b w ... s w w p w o p n n m\n", "28 e f f n f n f c n k ... s w w p w o p k y u\n", "29 e x s y t a f w n n ... s w w p w o p n v d\n", "... .. .. .. .. .. .. .. .. .. .. ... .. .. .. .. .. .. .. .. .. ..\n", "8094 e b s g f n f w b g ... s w w p w t p w n g\n", "8095 p x y c f m f c b y ... y c c p w n n w c d\n", "8096 e k f w f n f w b w ... s w w p w t p w n g\n", "8097 p k y n f s f c n b ... k p p p w o e w v l\n", "8098 p k s e f y f c n b ... k w p p w o e w v d\n", "8099 e k f w f n f w b w ... k w w p w t p w s g\n", "8100 e f s n f n a c b o ... s o o p n o p b v l\n", "8101 p k s e f s f c n b ... s p w p w o e w v p\n", "8102 e x s n f n a c b y ... s o o p n o p n c l\n", "8103 e k s n f n a c b y ... s o o p n o p o c l\n", "8104 e k s n f n a c b y ... s o o p o o p n v l\n", "8105 e k s n f n a c b y ... s o o p n o p y v l\n", "8106 e k s n f n a c b o ... s o o p o o p n v l\n", "8107 e x s n f n a c b y ... s o o p o o p n c l\n", "8108 p k y e f y f c n b ... s p w p w o e w v l\n", "8109 e b s w f n f w b w ... s w w p w t p w n g\n", "8110 e x s n f n a c b o ... s o o p o o p n v l\n", "8111 e k s w f n f w b p ... s w w p w t p w n g\n", "8112 e k s n f n a c b o ... s o o p n o p b v l\n", "8113 p k y e f y f c n b ... k p p p w o e w v d\n", "8114 p f y c f m a c b y ... y c c p w n n w c d\n", "8115 e x s n f n a c b y ... s o o p o o p o v l\n", "8116 p k y n f s f c n b ... k p w p w o e w v l\n", "8117 p k s e f y f c n b ... s p w p w o e w v d\n", "8118 p k y n f f f c n b ... s p w p w o e w v d\n", "8119 e k s n f n a c b y ... s o o p o o p b c l\n", "8120 e x s n f n a c b y ... s o o p n o p b v l\n", "8121 e f s n f n a c b n ... s o o p o o p b c l\n", "8122 p k y n f y f c n b ... k w w p w o e w v l\n", "8123 e x s n f n a c b y ... s o o p o o p o c l\n", "\n", "[8124 rows x 23 columns]" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- df_per_attr 사전 만들기" ] }, { "cell_type": "code", "execution_count": 44, "metadata": { "collapsed": false }, "outputs": [], "source": [ "df_per_attr = {}\n", "for i in range(1, 23):\n", " df_per_attr[i] = {}\n", " groupby_df = df[[0, i]].groupby(i)\n", " df_per_attr[i]['num_groups'] = groupby_df.ngroups\n", " df_per_attr[i]['group_keys'] = groupby_df.groups.keys()\n", " df_per_attr[i]['subgroups'] = {}\n", " for j in range(df_per_attr[i]['num_groups']):\n", " df_per_attr[i]['subgroups'][j] = groupby_df.get_group(df_per_attr[i]['group_keys'][j])" ] }, { "cell_type": "code", "execution_count": 45, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "6" ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_per_attr[1]['num_groups']" ] }, { "cell_type": "code", "execution_count": 46, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "['c', 'b', 'f', 'k', 's', 'x']" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_per_attr[1]['group_keys']" ] }, { "cell_type": "code", "execution_count": 47, "metadata": { "collapsed": false }, "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", "
01
5126pc
5508pc
7401pc
7706pc
\n", "
" ], "text/plain": [ " 0 1\n", "5126 p c\n", "5508 p c\n", "7401 p c\n", "7706 p c" ] }, "execution_count": 47, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_per_attr[1]['subgroups'][0]" ] }, { "cell_type": "code", "execution_count": 48, "metadata": { "collapsed": false }, "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
01
0px
1ex
3px
4ex
5ex
8px
10ex
11ex
13px
14ex
17px
18px
19px
21px
26ex
27ex
29ex
31px
32ex
33ex
35ex
37px
38ex
41ex
42ex
43px
44ex
45ex
46ex
47ex
.........
7964ex
7965ex
7970ex
7971ex
7973px
7983ex
7987px
7994ex
8001ex
8002ex
8005px
8010ex
8018ex
8025ex
8029ex
8032px
8038ex
8042ex
8051ex
8054ex
8057ex
8087px
8093px
8095px
8102ex
8107ex
8110ex
8115ex
8120ex
8123ex
\n", "

3656 rows × 2 columns

\n", "
" ], "text/plain": [ " 0 1\n", "0 p x\n", "1 e x\n", "3 p x\n", "4 e x\n", "5 e x\n", "8 p x\n", "10 e x\n", "11 e x\n", "13 p x\n", "14 e x\n", "17 p x\n", "18 p x\n", "19 p x\n", "21 p x\n", "26 e x\n", "27 e x\n", "29 e x\n", "31 p x\n", "32 e x\n", "33 e x\n", "35 e x\n", "37 p x\n", "38 e x\n", "41 e x\n", "42 e x\n", "43 p x\n", "44 e x\n", "45 e x\n", "46 e x\n", "47 e x\n", "... .. ..\n", "7964 e x\n", "7965 e x\n", "7970 e x\n", "7971 e x\n", "7973 p x\n", "7983 e x\n", "7987 p x\n", "7994 e x\n", "8001 e x\n", "8002 e x\n", "8005 p x\n", "8010 e x\n", "8018 e x\n", "8025 e x\n", "8029 e x\n", "8032 p x\n", "8038 e x\n", "8042 e x\n", "8051 e x\n", "8054 e x\n", "8057 e x\n", "8087 p x\n", "8093 p x\n", "8095 p x\n", "8102 e x\n", "8107 e x\n", "8110 e x\n", "8115 e x\n", "8120 e x\n", "8123 e x\n", "\n", "[3656 rows x 2 columns]" ] }, "execution_count": 48, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_per_attr[1]['subgroups'][5]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2. Entropy" ] }, { "cell_type": "code", "execution_count": 49, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "8124\n" ] } ], "source": [ "labels = df[0].values\n", "print len(labels)\n", "n_labels = len(labels)" ] }, { "cell_type": "code", "execution_count": 50, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Counter({'e': 4208, 'p': 3916})\n", "[3916, 4208]\n", "[3916 4208]\n", "\n", "[ 0.48202856 0.51797144]\n", "\n", "2\n", "\n", "Entropy of Root Node: 0.999067896872\n" ] } ], "source": [ "from collections import Counter\n", "from math import log\n", "\n", "print Counter(labels)\n", "print Counter(labels).values()\n", "counts = np.array(Counter(labels).values())\n", "print counts\n", "print\n", "\n", "probs = counts / float(n_labels)\n", "print probs\n", "print\n", "\n", "n_classes = np.count_nonzero(probs)\n", "print n_classes\n", "print\n", "\n", "entropy = 0.\n", "\n", "for i in probs:\n", " entropy -= i * log(i, n_classes)\n", "\n", "print \"Entropy of Root Node: %s\" % entropy" ] }, { "cell_type": "code", "execution_count": 51, "metadata": { "collapsed": false }, "outputs": [], "source": [ "def entropy(labels):\n", " \"\"\" Computes entropy of label distribution. \"\"\"\n", " from collections import Counter\n", " from math import log\n", " n_labels = len(labels)\n", "\n", " if n_labels <= 1:\n", " return 0\n", "\n", " counts = np.array(Counter(labels).values())\n", " probs = counts / float(n_labels)\n", " n_classes = np.count_nonzero(probs)\n", "\n", " if n_classes <= 1:\n", " return 0\n", "\n", " entropy = 0.\n", "\n", " # Compute standard entropy.\n", " for i in probs:\n", " entropy -= i * log(i, n_classes)\n", "\n", " return entropy" ] }, { "cell_type": "code", "execution_count": 52, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array(['p', 'e', 'e', ..., 'e', 'p', 'e'], dtype=object)" ] }, "execution_count": 52, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df[0].values" ] }, { "cell_type": "code", "execution_count": 53, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "0.99906789687246045" ] }, "execution_count": 53, "metadata": {}, "output_type": "execute_result" } ], "source": [ "entropy(df[0].values)" ] }, { "cell_type": "code", "execution_count": 54, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([['p', 'c'],\n", " ['p', 'c'],\n", " ['p', 'c'],\n", " ['p', 'c']], dtype=object)" ] }, "execution_count": 54, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_per_attr[1]['subgroups'][0].values" ] }, { "cell_type": "code", "execution_count": 55, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['p', 'p', 'p', 'p']\n" ] } ], "source": [ "a = [item[0] for item in df_per_attr[1]['subgroups'][0].values]\n", "print a" ] }, { "cell_type": "code", "execution_count": 56, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "0" ] }, "execution_count": 56, "metadata": {}, "output_type": "execute_result" } ], "source": [ "entropy([item[0] for item in df_per_attr[1]['subgroups'][0].values])" ] }, { "cell_type": "code", "execution_count": 57, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['p', 'e', 'p', 'e', 'e', 'p', 'e', 'e', 'p', 'e', 'p', 'p', 'p', 'p', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'p', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'p', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'p', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'p', 'e', 'p', 'p', 'p', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'p', 'e', 'e', 'e', 'p', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'p', 'p', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'p', 'p', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'p', 'e', 'e', 'e', 'p', 'p', 'e', 'p', 'e', 'e', 'p', 'e', 'e', 'p', 'p', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'p', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'p', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'p', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'p', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'p', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'p', 'e', 'e', 'p', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'p', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'e', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'e', 'e', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'e', 'e', 'p', 'e', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'e', 'e', 'p', 'p', 'p', 'p', 'e', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'e', 'p', 'e', 'p', 'p', 'p', 'e', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'e', 'e', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'e', 'e', 'p', 'e', 'p', 'p', 'e', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'e', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'e', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'e', 'p', 'e', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'e', 'e', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'e', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'e', 'p', 'e', 'e', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'e', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'e', 'e', 'p', 'p', 'e', 'p', 'e', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'e', 'p', 'e', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'e', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'e', 'e', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'e', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'e', 'e', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'e', 'e', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'e', 'e', 'p', 'p', 'p', 'p', 'e', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'e', 'p', 'e', 'e', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'e', 'e', 'p', 'p', 'e', 'p', 'p', 'p', 'e', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'e', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'e', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'e', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'e', 'e', 'p', 'e', 'p', 'e', 'e', 'p', 'p', 'p', 'e', 'e', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'e', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'e', 'e', 'p', 'e', 'p', 'e', 'p', 'e', 'p', 'p', 'e', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'e', 'p', 'e', 'e', 'p', 'e', 'p', 'e', 'p', 'p', 'p', 'e', 'e', 'e', 'e', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'p', 'p', 'p', 'e', 'p', 'p', 'e', 'e', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'e', 'e', 'p', 'p', 'p', 'e', 'p', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'p', 'p', 'p', 'e', 'e', 'e', 'p', 'p', 'p', 'e', 'e', 'e', 'p', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'p', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'p', 'e', 'p', 'p', 'e', 'e', 'e', 'e', 'e', 'p', 'p', 'e', 'e', 'p', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'p', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'e', 'p', 'e', 'p', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'p', 'e', 'e', 'e', 'e', 'e', 'p', 'p', 'p', 'e', 'e', 'e', 'e', 'e', 'e']\n" ] } ], "source": [ "a = [item[0] for item in df_per_attr[1]['subgroups'][5].values]\n", "print a" ] }, { "cell_type": "code", "execution_count": 58, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "0.99688923646720551" ] }, "execution_count": 58, "metadata": {}, "output_type": "execute_result" } ], "source": [ "entropy([item[0] for item in df_per_attr[1]['subgroups'][5].values])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3. Information Gain" ] }, { "cell_type": "code", "execution_count": 59, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "8124.0" ] }, "execution_count": 59, "metadata": {}, "output_type": "execute_result" } ], "source": [ "parent_size = float(len(df))\n", "parent_size" ] }, { "cell_type": "code", "execution_count": 60, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1\n", "0.00 * 0.0000 = 0.0000\n", "0.06 * 0.4883 = 0.0272\n", "0.39 * 0.9999 = 0.3879\n", "0.10 * 0.8491 = 0.0865\n", "0.00 * 0.0000 = 0.0000\n", "0.45 * 0.9969 = 0.4486\n", "Information Gain: 0.9991 - 0.9503 = 0.0488\n", "\n", "2\n", "0.40 * 0.9962 = 0.3978\n", "0.31 * 0.9921 = 0.3121\n", "0.00 * 0.0000 = 0.0000\n", "0.29 * 0.9124 = 0.2606\n", "Information Gain: 0.9991 - 0.9705 = 0.0286\n", "\n", "3\n", "0.01 * 0.8454 = 0.0046\n", "0.02 * 0.8631 = 0.0178\n", "0.18 * 0.9795 = 0.1809\n", "0.23 * 0.9893 = 0.2241\n", "0.28 * 0.9918 = 0.2788\n", "0.02 * 0.9641 = 0.0171\n", "0.00 * 0.0000 = 0.0000\n", "0.00 * 0.0000 = 0.0000\n", "0.13 * 0.8905 = 0.1140\n", "0.13 * 0.9530 = 0.1258\n", "Information Gain: 0.9991 - 0.9630 = 0.0360\n", "\n", "4\n", "0.42 * 0.6905 = 0.2870\n", "0.58 * 0.8893 = 0.5197\n", "Information Gain: 0.9991 - 0.8067 = 0.1924\n", "\n", "5\n", "0.05 * 0.0000 = 0.0000\n", "0.02 * 0.0000 = 0.0000\n", "0.27 * 0.0000 = 0.0000\n", "0.00 * 0.0000 = 0.0000\n", "0.05 * 0.0000 = 0.0000\n", "0.43 * 0.2141 = 0.0930\n", "0.03 * 0.0000 = 0.0000\n", "0.07 * 0.0000 = 0.0000\n", "0.07 * 0.0000 = 0.0000\n", "Information Gain: 0.9991 - 0.0930 = 0.9061\n", "\n", "6\n", "0.03 * 0.4220 = 0.0109\n", "0.97 * 0.9998 = 0.9740\n", "Information Gain: 0.9991 - 0.9849 = 0.0142\n", "\n", "7\n", "0.84 * 0.9901 = 0.8302\n", "0.16 * 0.4208 = 0.0680\n", "Information Gain: 0.9991 - 0.8982 = 0.1009\n", "\n", "8\n", "0.69 * 0.8831 = 0.6100\n", "0.31 * 0.5138 = 0.1589\n", "Information Gain: 0.9991 - 0.7689 = 0.2302\n", "\n", "9\n", "0.21 * 0.0000 = 0.0000\n", "0.01 * 0.0000 = 0.0000\n", "0.09 * 0.9147 = 0.0847\n", "0.09 * 0.8537 = 0.0769\n", "0.05 * 0.6268 = 0.0315\n", "0.01 * 0.0000 = 0.0000\n", "0.13 * 0.4904 = 0.0633\n", "0.18 * 0.9854 = 0.1810\n", "0.00 * 0.0000 = 0.0000\n", "0.06 * 0.4612 = 0.0279\n", "0.15 * 0.7311 = 0.1082\n", "0.01 * 0.8204 = 0.0087\n", "Information Gain: 0.9991 - 0.5821 = 0.4170\n", "\n", "10\n", "0.43 * 0.9953 = 0.4308\n", "0.57 * 0.9887 = 0.5608\n", "Information Gain: 0.9991 - 0.9916 = 0.0075\n", "\n", "11\n", "0.02 * 0.0000 = 0.0000\n", "0.07 * 0.3991 = 0.0273\n", "0.46 * 0.9998 = 0.4647\n", "0.14 * 0.7755 = 0.1069\n", "0.31 * 0.8691 = 0.2653\n", "Information Gain: 0.9991 - 0.8643 = 0.1348\n", "\n", "12\n", "0.00 * 0.9183 = 0.0027\n", "0.64 * 0.8773 = 0.5589\n", "0.29 * 0.3303 = 0.0964\n", "0.07 * 0.8281 = 0.0563\n", "Information Gain: 0.9991 - 0.7143 = 0.2847\n", "\n", "13\n", "0.03 * 0.8380 = 0.0293\n", "0.61 * 0.8945 = 0.5435\n", "0.28 * 0.3373 = 0.0957\n", "0.07 * 0.7950 = 0.0587\n", "Information Gain: 0.9991 - 0.7272 = 0.2719\n", "\n", "14\n", "0.00 * 0.0000 = 0.0000\n", "0.05 * 0.0000 = 0.0000\n", "0.01 * 0.0000 = 0.0000\n", "0.07 * 0.0000 = 0.0000\n", "0.02 * 0.0000 = 0.0000\n", "0.06 * 0.2223 = 0.0123\n", "0.23 * 0.8905 = 0.2052\n", "0.55 * 0.9605 = 0.5278\n", "0.00 * 0.0000 = 0.0000\n", "Information Gain: 0.9991 - 0.7452 = 0.2538\n", "\n", "15\n", "0.00 * 0.0000 = 0.0000\n", "0.05 * 0.0000 = 0.0000\n", "0.01 * 0.0000 = 0.0000\n", "0.07 * 0.0000 = 0.0000\n", "0.02 * 0.0000 = 0.0000\n", "0.06 * 0.5436 = 0.0343\n", "0.23 * 0.8905 = 0.2052\n", "0.54 * 0.9603 = 0.5182\n", "0.00 * 0.0000 = 0.0000\n", "Information Gain: 0.9991 - 0.7577 = 0.2414\n", "\n", "16\n", "1.00 * 0.9991 = 0.9991\n", "Information Gain: 0.9991 - 0.9991 = 0.0000\n", "\n", "17\n", "0.00 * 0.0000 = 0.0000\n", "0.01 * 0.0000 = 0.0000\n", "0.98 * 0.9999 = 0.9753\n", "0.01 * 0.0000 = 0.0000\n", "Information Gain: 0.9991 - 0.9753 = 0.0238\n", "\n", "18\n", "0.07 * 0.5294 = 0.0391\n", "0.92 * 0.9998 = 0.9215\n", "0.00 * 0.0000 = 0.0000\n", "Information Gain: 0.9991 - 0.9606 = 0.0385\n", "\n", "19\n", "0.49 * 0.7331 = 0.3581\n", "0.00 * 0.0000 = 0.0000\n", "0.34 * 0.9452 = 0.3230\n", "0.16 * 0.0000 = 0.0000\n", "0.01 * 0.0000 = 0.0000\n", "Information Gain: 0.9991 - 0.6810 = 0.3180\n", "\n", "20\n", "0.01 * 0.0000 = 0.0000\n", "0.20 * 0.1914 = 0.0385\n", "0.23 * 0.5284 = 0.1218\n", "0.01 * 0.0000 = 0.0000\n", "0.24 * 0.5113 = 0.1239\n", "0.01 * 0.0000 = 0.0000\n", "0.01 * 0.0000 = 0.0000\n", "0.29 * 0.7970 = 0.2343\n", "0.01 * 0.0000 = 0.0000\n", "Information Gain: 0.9991 - 0.5184 = 0.4807\n", "\n", "21\n", "0.05 * 0.0000 = 0.0000\n", "0.04 * 0.6172 = 0.0258\n", "0.05 * 0.0000 = 0.0000\n", "0.15 * 0.8749 = 0.1344\n", "0.50 * 0.8752 = 0.4352\n", "0.21 * 0.9570 = 0.2017\n", "Information Gain: 0.9991 - 0.7971 = 0.2020\n", "\n", "22\n", "0.39 * 0.9726 = 0.3769\n", "0.26 * 0.9291 = 0.2456\n", "0.04 * 0.5387 = 0.0194\n", "0.10 * 0.8667 = 0.0888\n", "0.14 * 0.5261 = 0.0741\n", "0.05 * 0.8281 = 0.0375\n", "0.02 * 0.0000 = 0.0000\n", "Information Gain: 0.9991 - 0.8422 = 0.1568\n", "\n" ] } ], "source": [ "for i in range(1, 23):\n", " sub_sum_entropy = 0.0\n", " print i\n", " for j in range(df_per_attr[i]['num_groups']):\n", " sub_size = len(df_per_attr[i]['subgroups'][j])\n", " sub_entropy = entropy([item[0] for item in df_per_attr[i]['subgroups'][j].values])\n", " print \"%3.2f * %5.4f = %5.4f\" % (sub_size / parent_size, sub_entropy, (sub_size / parent_size) * sub_entropy)\n", " sub_sum_entropy = sub_sum_entropy + (sub_size / parent_size) * sub_entropy\n", " ig = entropy(df[0].values) - sub_sum_entropy\n", " df_per_attr[i]['information_gain'] = ig\n", " print \"Information Gain: %5.4f - %5.4f = %5.4f\" % (entropy(df[0].values), sub_sum_entropy, ig)\n", " print" ] }, { "cell_type": "code", "execution_count": 61, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "{1: 0.048796701935372999,\n", " 2: 0.028590232773772817,\n", " 3: 0.036049282976204022,\n", " 4: 0.19237948576121966,\n", " 5: 0.90607497738399978,\n", " 6: 0.014165027250616302,\n", " 7: 0.10088318399657026,\n", " 8: 0.23015437514804615,\n", " 9: 0.41697752341613137,\n", " 10: 0.0075167725696643206,\n", " 11: 0.13481763762727572,\n", " 12: 0.2847255992184845,\n", " 13: 0.27189447339274642,\n", " 14: 0.25384517346223989,\n", " 15: 0.24141556652756657,\n", " 16: 0.0,\n", " 17: 0.023817016120916801,\n", " 18: 0.038452669243090543,\n", " 19: 0.31802151079353758,\n", " 20: 0.48070491768491541,\n", " 21: 0.2019580190668524,\n", " 22: 0.15683360460509199}" ] }, "execution_count": 61, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import operator\n", "information_gain_dict = {}\n", "for i in range(1, 23):\n", " information_gain_dict[i] = df_per_attr[i]['information_gain']\n", "\n", "information_gain_dict" ] }, { "cell_type": "code", "execution_count": 62, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "(5, 0.90607497738399978)" ] }, "execution_count": 62, "metadata": {}, "output_type": "execute_result" } ], "source": [ "max(information_gain_dict.iteritems(), key=operator.itemgetter(1))" ] } ], "metadata": { "kernelspec": { "display_name": "Python [Root]", "language": "python", "name": "Python [Root]" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.12" } }, "nbformat": 4, "nbformat_minor": 0 }