{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Tree-based methods\n", "### Food sales and obesity" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Thanks to Fabián Villena for inputs in this code" ] }, { "cell_type": "code", "execution_count": 71, "metadata": {}, "outputs": [], "source": [ "# Scikit's libraries\n", "\n", "import sklearn.ensemble #random forest \n", "import sklearn.tree #decision trees\n", "import sklearn.linear_model #logistic regression + perceptron\n", "import sklearn.svm #support vector machines\n", "import sklearn.neighbors #k-nearest neighbors\n", "import sklearn.neural_network #multilayer perceptron\n", "from sklearn.ensemble import AdaBoostClassifier\n", "\n", "from sklearn.externals.six import StringIO \n", "from sklearn import metrics\n", "import sklearn.model_selection \n", "import sklearn.preprocessing \n", "from sklearn.model_selection import cross_val_score\n", "from sklearn.model_selection import cross_validate\n", "\n", "# XGBoost\n", "import xgboost as xgb\n", "\n", "# Pandas\n", "import pandas as pd\n", "\n", "# Numpy\n", "import numpy as np\n", "# Set random seed\n", "np.random.seed(0)\n", "\n", "# Plots\n", "%matplotlib inline\n", "import matplotlib as mpl\n", "import matplotlib.pyplot as plt\n", "from IPython.display import Image \n", "import pydotplus" ] }, { "cell_type": "code", "execution_count": 37, "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
country_namecontinentprevalencetertileRTDs/High-Strength PremixesProcessed Fruit and VegetablesProcessed Meat and SeafoodReady MealsRice, Pasta and NoodlesSauces, Dressings and Condiments...Baby FoodDrinking Milk ProductsYoghurt and Sour Milk ProductsOther DairyIce Cream and Frozen DessertsCocoa PowderEmulsifiers and Co-EmulsifiersFats and OilsFloursMilk
49BelarusEurope0.23117923064.4333334225.46666714961.9666702382.1666678495.1333334130.700000...1437.63333344447.9666721490.16667019663.4666702739.866667206.500000406.43333324819.96667030754.3666782030.06667
27ColombiaAmerica0.1782672170.833333959.3000003128.466667176.43333334723.8000001383.000000...301.26666742182.166673036.9000001060.0333331236.300000253.666667139.7666679366.20000022010.6000046546.53333
30BoliviaAmerica0.1855072319.766667632.6666671068.63333361.90000034137.8333301854.233333...250.03333312939.166672183.0666672325.233333822.166667107.200000144.9000009391.33333320680.8666715803.93333
63United KingdomEurope0.24670132175.03333344816.10000032313.36667015679.6666708744.86666713525.233330...1025.10000095073.900009369.6333336384.6000007785.766667421.833333669.70000024986.23333044291.43333116990.30000
45LatviaEurope0.21469526871.1333337628.33333313857.6333302921.9666677736.66666712584.500000...330.96666756502.7666717664.50000014065.7333303519.433333179.700000559.16666726338.80000037478.6333388511.13333
69ChileAmerica0.2896363431.2666679581.9666676937.666667383.46666717394.6666706575.500000...591.83333320579.700008320.1666675449.9000005682.866667276.866667483.30000020101.93333069019.1000037038.30000
74MexicoAmerica0.3270863874.3333334488.6333334637.700000497.3000009456.0333338500.700000...659.96666749364.300005119.9333334731.9333332428.166667344.366667294.06666728015.733330108494.4333065728.83333
76United Arab EmiratesAfrica0.3391333125.5333339416.6333334180.066667236.36666760477.0333306268.566667...968.13333334986.3666726258.56667011308.5333302187.900000158.400000246.66666720037.56667032608.4000067731.20000
48PolandEurope0.227263286.4333336823.0333336944.8666672191.0000006284.3000009210.233333...1079.36666734384.3666710295.3666709271.1333332190.066667160.133333492.26666718090.30000050266.1666754810.10000
57HungaryEurope0.2401993118.46666712035.96667013150.7666701232.76666711639.0333306138.133333...669.93333358358.966679365.10000010013.9333302870.200000176.200000418.80000022144.93333059291.5333379252.20000
\n", "

10 rows × 52 columns

\n", "
" ], "text/plain": [ " country_name continent prevalence tertile \\\n", "49 Belarus Europe 0.231179 2 \n", "27 Colombia America 0.178267 2 \n", "30 Bolivia America 0.185507 2 \n", "63 United Kingdom Europe 0.246701 3 \n", "45 Latvia Europe 0.214695 2 \n", "69 Chile America 0.289636 3 \n", "74 Mexico America 0.327086 3 \n", "76 United Arab Emirates Africa 0.339133 3 \n", "48 Poland Europe 0.227263 2 \n", "57 Hungary Europe 0.240199 3 \n", "\n", " RTDs/High-Strength Premixes Processed Fruit and Vegetables \\\n", "49 3064.433333 4225.466667 \n", "27 170.833333 959.300000 \n", "30 319.766667 632.666667 \n", "63 2175.033333 44816.100000 \n", "45 6871.133333 7628.333333 \n", "69 431.266667 9581.966667 \n", "74 874.333333 4488.633333 \n", "76 125.533333 9416.633333 \n", "48 86.433333 6823.033333 \n", "57 118.466667 12035.966670 \n", "\n", " Processed Meat and Seafood Ready Meals Rice, Pasta and Noodles \\\n", "49 14961.966670 2382.166667 8495.133333 \n", "27 3128.466667 176.433333 34723.800000 \n", "30 1068.633333 61.900000 34137.833330 \n", "63 32313.366670 15679.666670 8744.866667 \n", "45 13857.633330 2921.966667 7736.666667 \n", "69 6937.666667 383.466667 17394.666670 \n", "74 4637.700000 497.300000 9456.033333 \n", "76 4180.066667 236.366667 60477.033330 \n", "48 6944.866667 2191.000000 6284.300000 \n", "57 13150.766670 1232.766667 11639.033330 \n", "\n", " Sauces, Dressings and Condiments ... Baby Food \\\n", "49 4130.700000 ... 1437.633333 \n", "27 1383.000000 ... 301.266667 \n", "30 1854.233333 ... 250.033333 \n", "63 13525.233330 ... 1025.100000 \n", "45 12584.500000 ... 330.966667 \n", "69 6575.500000 ... 591.833333 \n", "74 8500.700000 ... 659.966667 \n", "76 6268.566667 ... 968.133333 \n", "48 9210.233333 ... 1079.366667 \n", "57 6138.133333 ... 669.933333 \n", "\n", " Drinking Milk Products Yoghurt and Sour Milk Products Other Dairy \\\n", "49 44447.96667 21490.166670 19663.466670 \n", "27 42182.16667 3036.900000 1060.033333 \n", "30 12939.16667 2183.066667 2325.233333 \n", "63 95073.90000 9369.633333 6384.600000 \n", "45 56502.76667 17664.500000 14065.733330 \n", "69 20579.70000 8320.166667 5449.900000 \n", "74 49364.30000 5119.933333 4731.933333 \n", "76 34986.36667 26258.566670 11308.533330 \n", "48 34384.36667 10295.366670 9271.133333 \n", "57 58358.96667 9365.100000 10013.933330 \n", "\n", " Ice Cream and Frozen Desserts Cocoa Powder \\\n", "49 2739.866667 206.500000 \n", "27 1236.300000 253.666667 \n", "30 822.166667 107.200000 \n", "63 7785.766667 421.833333 \n", "45 3519.433333 179.700000 \n", "69 5682.866667 276.866667 \n", "74 2428.166667 344.366667 \n", "76 2187.900000 158.400000 \n", "48 2190.066667 160.133333 \n", "57 2870.200000 176.200000 \n", "\n", " Emulsifiers and Co-Emulsifiers Fats and Oils Flours Milk \n", "49 406.433333 24819.966670 30754.36667 82030.06667 \n", "27 139.766667 9366.200000 22010.60000 46546.53333 \n", "30 144.900000 9391.333333 20680.86667 15803.93333 \n", "63 669.700000 24986.233330 44291.43333 116990.30000 \n", "45 559.166667 26338.800000 37478.63333 88511.13333 \n", "69 483.300000 20101.933330 69019.10000 37038.30000 \n", "74 294.066667 28015.733330 108494.43330 65728.83333 \n", "76 246.666667 20037.566670 32608.40000 67731.20000 \n", "48 492.266667 18090.300000 50266.16667 54810.10000 \n", "57 418.800000 22144.933330 59291.53333 79252.20000 \n", "\n", "[10 rows x 52 columns]" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# File with food sales and obesity information\n", "data = pd.read_csv('exampleObesityClassReg.csv')\n", "data.sample(10)" ] }, { "cell_type": "code", "execution_count": 38, "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
prevalencetertileRTDs/High-Strength PremixesProcessed Fruit and VegetablesProcessed Meat and SeafoodReady MealsRice, Pasta and NoodlesSauces, Dressings and CondimentsSoupSpreads...Baby FoodDrinking Milk ProductsYoghurt and Sour Milk ProductsOther DairyIce Cream and Frozen DessertsCocoa PowderEmulsifiers and Co-EmulsifiersFats and OilsFloursMilk
count79.00000079.00000079.00000079.00000079.00000079.00000079.00000079.00000079.00000079.000000...79.00000079.00000079.00000079.00000079.00000079.00000079.00000079.00000079.00000079.000000
mean0.1955932.0253161394.9930388974.88607610106.4303802932.32088617084.4185657237.398312886.9354431404.284388...866.59240541405.83460010319.6713086313.2742613605.577637238.948101334.27384017541.71265838715.29915659598.455695
std0.0802710.8316603223.28692410368.5832619167.8061304183.09999016382.7420905340.6677641516.8384571294.774159...742.17409633320.3119998515.3225746019.6657863219.524667180.330916244.3871677831.97723124661.85409344718.262875
min0.0160481.0000000.00000021.30000012.4666670.0000001102.90000096.0666670.00000016.366667...39.433333355.9666678.3333330.86666799.96666710.30000010.066667936.7000001925.800000618.333333
25%0.1636961.00000062.0000001648.6666673178.216667114.8333337484.7500002914.68333475.500000351.616667...321.33333311436.8666703807.4000001424.2166671263.95000099.600000127.45000011476.58333521518.15000020988.116665
50%0.2061302.000000225.2666675672.1333338205.066667701.46666710762.4000006268.566667230.900000999.666667...645.03333334384.3666708851.7333334543.0666672327.400000185.333333312.86666718539.56667034784.43333053199.933330
75%0.2414393.000000984.96666711841.86667014729.1666704484.80000016480.73333510145.200000974.8333332004.566667...1267.85000060932.05000015065.0333359951.4333325283.216667331.866667500.96666723198.06667053836.30000090095.083335
max0.3532883.00000017711.10000044816.10000036891.16667015679.66667073856.06667028564.6000007801.2333335651.933333...3898.500000145484.46670040846.66667028622.43333014535.433330655.4000001013.60000037119.366670119329.800000189444.000000
\n", "

8 rows × 50 columns

\n", "
" ], "text/plain": [ " prevalence tertile RTDs/High-Strength Premixes \\\n", "count 79.000000 79.000000 79.000000 \n", "mean 0.195593 2.025316 1394.993038 \n", "std 0.080271 0.831660 3223.286924 \n", "min 0.016048 1.000000 0.000000 \n", "25% 0.163696 1.000000 62.000000 \n", "50% 0.206130 2.000000 225.266667 \n", "75% 0.241439 3.000000 984.966667 \n", "max 0.353288 3.000000 17711.100000 \n", "\n", " Processed Fruit and Vegetables Processed Meat and Seafood \\\n", "count 79.000000 79.000000 \n", "mean 8974.886076 10106.430380 \n", "std 10368.583261 9167.806130 \n", "min 21.300000 12.466667 \n", "25% 1648.666667 3178.216667 \n", "50% 5672.133333 8205.066667 \n", "75% 11841.866670 14729.166670 \n", "max 44816.100000 36891.166670 \n", "\n", " Ready Meals Rice, Pasta and Noodles \\\n", "count 79.000000 79.000000 \n", "mean 2932.320886 17084.418565 \n", "std 4183.099990 16382.742090 \n", "min 0.000000 1102.900000 \n", "25% 114.833333 7484.750000 \n", "50% 701.466667 10762.400000 \n", "75% 4484.800000 16480.733335 \n", "max 15679.666670 73856.066670 \n", "\n", " Sauces, Dressings and Condiments Soup Spreads \\\n", "count 79.000000 79.000000 79.000000 \n", "mean 7237.398312 886.935443 1404.284388 \n", "std 5340.667764 1516.838457 1294.774159 \n", "min 96.066667 0.000000 16.366667 \n", "25% 2914.683334 75.500000 351.616667 \n", "50% 6268.566667 230.900000 999.666667 \n", "75% 10145.200000 974.833333 2004.566667 \n", "max 28564.600000 7801.233333 5651.933333 \n", "\n", " ... Baby Food Drinking Milk Products \\\n", "count ... 79.000000 79.000000 \n", "mean ... 866.592405 41405.834600 \n", "std ... 742.174096 33320.311999 \n", "min ... 39.433333 355.966667 \n", "25% ... 321.333333 11436.866670 \n", "50% ... 645.033333 34384.366670 \n", "75% ... 1267.850000 60932.050000 \n", "max ... 3898.500000 145484.466700 \n", "\n", " Yoghurt and Sour Milk Products Other Dairy \\\n", "count 79.000000 79.000000 \n", "mean 10319.671308 6313.274261 \n", "std 8515.322574 6019.665786 \n", "min 8.333333 0.866667 \n", "25% 3807.400000 1424.216667 \n", "50% 8851.733333 4543.066667 \n", "75% 15065.033335 9951.433332 \n", "max 40846.666670 28622.433330 \n", "\n", " Ice Cream and Frozen Desserts Cocoa Powder \\\n", "count 79.000000 79.000000 \n", "mean 3605.577637 238.948101 \n", "std 3219.524667 180.330916 \n", "min 99.966667 10.300000 \n", "25% 1263.950000 99.600000 \n", "50% 2327.400000 185.333333 \n", "75% 5283.216667 331.866667 \n", "max 14535.433330 655.400000 \n", "\n", " Emulsifiers and Co-Emulsifiers Fats and Oils Flours \\\n", "count 79.000000 79.000000 79.000000 \n", "mean 334.273840 17541.712658 38715.299156 \n", "std 244.387167 7831.977231 24661.854093 \n", "min 10.066667 936.700000 1925.800000 \n", "25% 127.450000 11476.583335 21518.150000 \n", "50% 312.866667 18539.566670 34784.433330 \n", "75% 500.966667 23198.066670 53836.300000 \n", "max 1013.600000 37119.366670 119329.800000 \n", "\n", " Milk \n", "count 79.000000 \n", "mean 59598.455695 \n", "std 44718.262875 \n", "min 618.333333 \n", "25% 20988.116665 \n", "50% 53199.933330 \n", "75% 90095.083335 \n", "max 189444.000000 \n", "\n", "[8 rows x 50 columns]" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.describe()" ] }, { "cell_type": "code", "execution_count": 39, "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", "
Baby FoodBaked GoodsBeerBottled WaterBreakfast CerealsButter and MargarineCarbonatesCheeseChocolate ConfectioneryCocoa Powder...Sports and Energy DrinksSpreadsStarchy RootsSugar ConfectionerySugar and SweetenersSweet Biscuits, Snack Bars and Fruit SnacksTeaVegetablesWineYoghurt and Sour Milk Products
4644.5666673154.50000632.46666748291.7666719.066667197.4333332537.76666750.700000246.46666779.166667...1033.83333361.60000063010.36667619.1000007605.200000797.366667335.03333339025.7333380.5000276.30000
441782.36666754447.9333360562.20000098986.766672549.8333336588.46666746943.43333011008.1000001567.433333329.933333...896.0333331203.80000031282.000001118.7333336496.1666675623.90000053.900000101521.0333047800.133317166.23333
621468.50000061043.63333127574.16670040230.933337636.86666710577.900000103062.6667005448.9666678329.700000334.233333...10059.9000001640.00000052866.833333278.9666678137.1666676877.9333332460.43333359545.4000016988.000012243.00000
241580.53333380481.3666771435.80000025552.833331840.80000012334.50000072100.33333011154.9333305275.133333575.833333...6646.7000003811.16666766090.500004972.0000005124.60000010241.266670671.90000051224.6666722500.366733144.33333
5225.6333333744.9000028878.93333012520.3666764.23333321.0000007683.76666712.03333360.00000077.466667...652.100000113.60000057375.566671082.0000004935.1666671079.733333233.800000141560.133301868.46671889.80000
\n", "

5 rows × 48 columns

\n", "
" ], "text/plain": [ " Baby Food Baked Goods Beer Bottled Water Breakfast Cereals \\\n", "4 644.566667 3154.50000 632.466667 48291.76667 19.066667 \n", "44 1782.366667 54447.93333 60562.200000 98986.76667 2549.833333 \n", "62 1468.500000 61043.63333 127574.166700 40230.93333 7636.866667 \n", "24 1580.533333 80481.36667 71435.800000 25552.83333 1840.800000 \n", "5 225.633333 3744.90000 28878.933330 12520.36667 64.233333 \n", "\n", " Butter and Margarine Carbonates Cheese \\\n", "4 197.433333 2537.766667 50.700000 \n", "44 6588.466667 46943.433330 11008.100000 \n", "62 10577.900000 103062.666700 5448.966667 \n", "24 12334.500000 72100.333330 11154.933330 \n", "5 21.000000 7683.766667 12.033333 \n", "\n", " Chocolate Confectionery Cocoa Powder ... \\\n", "4 246.466667 79.166667 ... \n", "44 1567.433333 329.933333 ... \n", "62 8329.700000 334.233333 ... \n", "24 5275.133333 575.833333 ... \n", "5 60.000000 77.466667 ... \n", "\n", " Sports and Energy Drinks Spreads Starchy Roots Sugar Confectionery \\\n", "4 1033.833333 61.600000 63010.36667 619.100000 \n", "44 896.033333 1203.800000 31282.00000 1118.733333 \n", "62 10059.900000 1640.000000 52866.83333 3278.966667 \n", "24 6646.700000 3811.166667 66090.50000 4972.000000 \n", "5 652.100000 113.600000 57375.56667 1082.000000 \n", "\n", " Sugar and Sweeteners Sweet Biscuits, Snack Bars and Fruit Snacks \\\n", "4 7605.200000 797.366667 \n", "44 6496.166667 5623.900000 \n", "62 8137.166667 6877.933333 \n", "24 5124.600000 10241.266670 \n", "5 4935.166667 1079.733333 \n", "\n", " Tea Vegetables Wine Yoghurt and Sour Milk Products \n", "4 335.033333 39025.73333 80.5000 276.30000 \n", "44 53.900000 101521.03330 47800.1333 17166.23333 \n", "62 2460.433333 59545.40000 16988.0000 12243.00000 \n", "24 671.900000 51224.66667 22500.3667 33144.33333 \n", "5 233.800000 141560.13330 1868.4667 1889.80000 \n", "\n", "[5 rows x 48 columns]" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Some columns, such as names or continents, are not predictors\n", "features = data[data.columns.difference(['prevalence','tertile','country_name','continent'])]\n", "features.sample(5)" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Index(['Baby Food', 'Baked Goods', 'Beer', 'Bottled Water',\n", " 'Breakfast Cereals', 'Butter and Margarine', 'Carbonates', 'Cheese',\n", " 'Chocolate Confectionery', 'Cocoa Powder', 'Coffee', 'Concentrates',\n", " 'Drinking Milk Products', 'Edible Oils', 'Eggs',\n", " 'Emulsifiers and Co-Emulsifiers', 'Fats and Oils', 'Fish and Seafood',\n", " 'Flours', 'Fruits', 'Gum', 'Ice Cream and Frozen Desserts', 'Juice',\n", " 'Meat', 'Milk', 'Nuts', 'Other Dairy', 'Other Hot Drinks',\n", " 'Processed Fruit and Vegetables', 'Processed Meat and Seafood',\n", " 'Pulses', 'RTDs/High-Strength Premixes', 'Ready Meals',\n", " 'Rice, Pasta and Noodles', 'Sauces, Dressings and Condiments',\n", " 'Savoury Snacks', 'Soup', 'Spirits', 'Sports and Energy Drinks',\n", " 'Spreads', 'Starchy Roots', 'Sugar Confectionery',\n", " 'Sugar and Sweeteners', 'Sweet Biscuits, Snack Bars and Fruit Snacks',\n", " 'Tea', 'Vegetables', 'Wine', 'Yoghurt and Sour Milk Products'],\n", " dtype='object')" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "feature_names = features.columns\n", "feature_names" ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 0.016048\n", "26 0.172975\n", "76 0.339133\n", "66 0.263871\n", "42 0.209111\n", "Name: prevalence, dtype: float64" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "labels_numerical = data.prevalence\n", "labels_numerical.sample(5)" ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "13 1\n", "65 3\n", "15 1\n", "66 3\n", "43 2\n", "Name: tertile, dtype: int64" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "labels_categorical = data.tertile\n", "labels_categorical.sample(5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Normalizing the numerical variables into a min max scaler where the maximum value is transformed into a 1 and the minimum value is 0\n" ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([0.00000000e+00, 4.14625178e-03, 5.97066354e-03, 1.38926517e-03,\n", " 6.53400421e-04, 3.54754613e-02, 0.00000000e+00, 2.49226287e-03,\n", " 3.70575518e-03, 4.18539761e-03, 2.94462690e-03, 3.00890237e-03,\n", " 6.05109724e-02, 7.13792131e-02, 4.55675412e-02, 1.99295821e-03,\n", " 4.88290894e-02, 7.35588311e-02, 0.00000000e+00, 2.68709617e-01,\n", " 2.03259561e-02, 1.23538322e-03, 2.12884275e-03, 0.00000000e+00,\n", " 4.70117939e-02, 7.60314274e-01, 1.80516557e-03, 1.17501501e-02,\n", " 3.69090460e-04, 0.00000000e+00, 9.35230346e-01, 3.31242366e-04,\n", " 8.84372542e-04, 5.78210804e-04, 3.97280740e-03, 1.28926699e-02,\n", " 4.23010037e-04, 5.11506886e-02, 2.65692938e-04, 8.87222226e-05,\n", " 1.34909559e-01, 8.27348276e-03, 1.55331838e-01, 6.61016499e-02,\n", " 9.87912653e-02, 3.83204172e-01, 1.57599979e-04, 6.25311186e-03])" ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ "minMaxScaler = sklearn.preprocessing.MinMaxScaler()\n", "features = minMaxScaler.fit_transform(features)\n", "\n", "features[1,:]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Dividing in training and testing" ] }, { "cell_type": "code", "execution_count": 44, "metadata": { "collapsed": true }, "outputs": [], "source": [ "features_train, features_test, labels_numerical_train, labels_numerical_test = sklearn.model_selection.train_test_split(\n", " features,\n", " labels_numerical,\n", " test_size=0.30,\n", " random_state = 55\n", ")" ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Observations for training: 55\n", "Observations for testing: 24\n" ] } ], "source": [ "# Number of observations in each dataset\n", "print('Observations for training:', len(labels_numerical_train))\n", "print('Observations for testing:',len(labels_numerical_test))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Random Forest regressor" ] }, { "cell_type": "code", "execution_count": 46, "metadata": { "collapsed": true }, "outputs": [], "source": [ "regressor = sklearn.ensemble.RandomForestRegressor(n_estimators=100, random_state=15)" ] }, { "cell_type": "code", "execution_count": 47, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "RandomForestRegressor(bootstrap=True, criterion='mse', max_depth=None,\n", " max_features='auto', max_leaf_nodes=None,\n", " min_impurity_decrease=0.0, min_impurity_split=None,\n", " min_samples_leaf=1, min_samples_split=2,\n", " min_weight_fraction_leaf=0.0, n_estimators=100,\n", " n_jobs=None, oob_score=False, random_state=15, verbose=0,\n", " warm_start=False)" ] }, "execution_count": 47, "metadata": {}, "output_type": "execute_result" } ], "source": [ "regressor.fit(features_train,labels_numerical_train)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Predicting the labels from the test features subset" ] }, { "cell_type": "code", "execution_count": 48, "metadata": { "collapsed": true }, "outputs": [], "source": [ "predictions = regressor.predict(features_test)" ] }, { "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
countrytruepredictedAE
11Taiwan0.0837900.0838430.000053
6Pakistan0.2549700.2531570.001814
22Uzbekistan0.2457700.2486520.002883
7Singapore0.2124050.2196360.007231
2Japan0.2418840.2530400.011156
4Indonesia0.0468160.0641710.017354
15Malaysia0.2401990.2210800.019119
9Nigeria0.1650210.1943510.029331
1India0.0704810.1008980.030417
10Republic of Korea0.1974820.2337590.036278
18Denmark0.2914430.2487040.042739
5China0.0549620.1013000.046337
3Kenya0.0590850.1094340.050349
12Thailand0.1696660.2200820.050416
19Peru0.1623710.2140580.051687
17France0.1723900.2274420.055052
20Sweden0.0187860.0756240.056838
8Philippines0.1557230.2137520.058029
21Italy0.2638710.2024890.061382
23Romania0.0464940.1119480.065454
0Viet Nam0.1418350.0726900.069145
14China (Hong Kong SAR)0.1927770.2658410.073065
13Cameroon0.3532880.2474040.105883
16Switzerland0.0448370.2411330.196296
\n", "
" ], "text/plain": [ " country true predicted AE\n", "11 Taiwan 0.083790 0.083843 0.000053\n", "6 Pakistan 0.254970 0.253157 0.001814\n", "22 Uzbekistan 0.245770 0.248652 0.002883\n", "7 Singapore 0.212405 0.219636 0.007231\n", "2 Japan 0.241884 0.253040 0.011156\n", "4 Indonesia 0.046816 0.064171 0.017354\n", "15 Malaysia 0.240199 0.221080 0.019119\n", "9 Nigeria 0.165021 0.194351 0.029331\n", "1 India 0.070481 0.100898 0.030417\n", "10 Republic of Korea 0.197482 0.233759 0.036278\n", "18 Denmark 0.291443 0.248704 0.042739\n", "5 China 0.054962 0.101300 0.046337\n", "3 Kenya 0.059085 0.109434 0.050349\n", "12 Thailand 0.169666 0.220082 0.050416\n", "19 Peru 0.162371 0.214058 0.051687\n", "17 France 0.172390 0.227442 0.055052\n", "20 Sweden 0.018786 0.075624 0.056838\n", "8 Philippines 0.155723 0.213752 0.058029\n", "21 Italy 0.263871 0.202489 0.061382\n", "23 Romania 0.046494 0.111948 0.065454\n", "0 Viet Nam 0.141835 0.072690 0.069145\n", "14 China (Hong Kong SAR) 0.192777 0.265841 0.073065\n", "13 Cameroon 0.353288 0.247404 0.105883\n", "16 Switzerland 0.044837 0.241133 0.196296" ] }, "execution_count": 49, "metadata": {}, "output_type": "execute_result" } ], "source": [ "summary = pd.DataFrame(list(zip(data.country_name,labels_numerical_test,predictions)),columns=['country','true','predicted'])\n", "summary['AE'] = abs(summary.true - summary.predicted)\n", "summary = summary.sort_values(by='AE',ascending=True)\n", "summary" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Calculating MAE\n", "$$MAE = \\frac{1}{n}\\sum_{i=1}^{n}\\left | y_{i} - \\hat{y}_{i} \\right |$$" ] }, { "cell_type": "code", "execution_count": 50, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.047429547056249986" ] }, "execution_count": 50, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sklearn.metrics.mean_absolute_error(labels_numerical_test,predictions)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Calculating RMSE\n", "$$RMSE = \\sqrt {\\frac{1}{n}\\sum_{j=1}^{n}\\left ( y_{i} - \\hat{y}_{i} \\right )^{2}}$$" ] }, { "cell_type": "code", "execution_count": 51, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.06232385596461852" ] }, "execution_count": 51, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sklearn.metrics.mean_squared_error(labels_numerical_test,predictions)**0.5" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Exploring the absolute errors by country that are in the testing dataset" ] }, { "cell_type": "code", "execution_count": 52, "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", "
countrytruepredictedAE
11Taiwan0.0837900.0838430.000053
6Pakistan0.2549700.2531570.001814
22Uzbekistan0.2457700.2486520.002883
7Singapore0.2124050.2196360.007231
2Japan0.2418840.2530400.011156
4Indonesia0.0468160.0641710.017354
15Malaysia0.2401990.2210800.019119
9Nigeria0.1650210.1943510.029331
1India0.0704810.1008980.030417
10Republic of Korea0.1974820.2337590.036278
18Denmark0.2914430.2487040.042739
5China0.0549620.1013000.046337
3Kenya0.0590850.1094340.050349
12Thailand0.1696660.2200820.050416
19Peru0.1623710.2140580.051687
17France0.1723900.2274420.055052
20Sweden0.0187860.0756240.056838
8Philippines0.1557230.2137520.058029
21Italy0.2638710.2024890.061382
23Romania0.0464940.1119480.065454
0Viet Nam0.1418350.0726900.069145
14China (Hong Kong SAR)0.1927770.2658410.073065
13Cameroon0.3532880.2474040.105883
16Switzerland0.0448370.2411330.196296
\n", "
" ], "text/plain": [ " country true predicted AE\n", "11 Taiwan 0.083790 0.083843 0.000053\n", "6 Pakistan 0.254970 0.253157 0.001814\n", "22 Uzbekistan 0.245770 0.248652 0.002883\n", "7 Singapore 0.212405 0.219636 0.007231\n", "2 Japan 0.241884 0.253040 0.011156\n", "4 Indonesia 0.046816 0.064171 0.017354\n", "15 Malaysia 0.240199 0.221080 0.019119\n", "9 Nigeria 0.165021 0.194351 0.029331\n", "1 India 0.070481 0.100898 0.030417\n", "10 Republic of Korea 0.197482 0.233759 0.036278\n", "18 Denmark 0.291443 0.248704 0.042739\n", "5 China 0.054962 0.101300 0.046337\n", "3 Kenya 0.059085 0.109434 0.050349\n", "12 Thailand 0.169666 0.220082 0.050416\n", "19 Peru 0.162371 0.214058 0.051687\n", "17 France 0.172390 0.227442 0.055052\n", "20 Sweden 0.018786 0.075624 0.056838\n", "8 Philippines 0.155723 0.213752 0.058029\n", "21 Italy 0.263871 0.202489 0.061382\n", "23 Romania 0.046494 0.111948 0.065454\n", "0 Viet Nam 0.141835 0.072690 0.069145\n", "14 China (Hong Kong SAR) 0.192777 0.265841 0.073065\n", "13 Cameroon 0.353288 0.247404 0.105883\n", "16 Switzerland 0.044837 0.241133 0.196296" ] }, "execution_count": 52, "metadata": {}, "output_type": "execute_result" } ], "source": [ "summary" ] }, { "cell_type": "code", "execution_count": 53, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.barh(summary.country,summary.AE,color='g')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Now you do the classification " ] }, { "cell_type": "code", "execution_count": 54, "metadata": {}, "outputs": [], "source": [ "# Split in train and test\n", "\n", "# sklearn.ensemble.RandomForestClassifier\n", "\n", "# classifier.fit\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Confusion matrix" ] }, { "cell_type": "code", "execution_count": 55, "metadata": {}, "outputs": [], "source": [ "#predictions = classifier.predict(features_test)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Printing the confusion matrix between the true and predicted values" ] }, { "cell_type": "code", "execution_count": 56, "metadata": {}, "outputs": [], "source": [ "#print(sklearn.metrics.confusion_matrix(predictions, labels_categorical_test))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Extracting some performance metrics from the prediction" ] }, { "cell_type": "code", "execution_count": 57, "metadata": {}, "outputs": [], "source": [ "#print(sklearn.metrics.classification_report(predictions, labels_categorical_test))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Returning the probability of being classified as each class along with their true label" ] }, { "cell_type": "code", "execution_count": 58, "metadata": {}, "outputs": [], "source": [ "#predictions_probabilities = classifier.predict_proba(features_test)\n", "#predictions_probabilities = pd.DataFrame(predictions_probabilities)\n", "#predictions_probabilities_labels = pd.concat([predictions_probabilities,pd.DataFrame(list(labels_categorical_test))], axis=1)\n", "#predictions_probabilities_labels.columns = ['class_1_probability','class_2_probability','class_3_probability','true_class']\n", "#predictions_probabilities_labels" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Variable importance list" ] }, { "cell_type": "code", "execution_count": 59, "metadata": {}, "outputs": [], "source": [ "vil = pd.DataFrame(list(zip(feature_names,regressor.feature_importances_)),\n", " columns=['feature','mse']\n", " ).sort_values(by='mse', ascending=False)" ] }, { "cell_type": "code", "execution_count": 60, "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", "
featuremse
18Flours0.216724
1Baked Goods0.198426
30Pulses0.095162
25Nuts0.077482
10Coffee0.055321
\n", "
" ], "text/plain": [ " feature mse\n", "18 Flours 0.216724\n", "1 Baked Goods 0.198426\n", "30 Pulses 0.095162\n", "25 Nuts 0.077482\n", "10 Coffee 0.055321" ] }, "execution_count": 60, "metadata": {}, "output_type": "execute_result" } ], "source": [ "vil.head()" ] }, { "cell_type": "code", "execution_count": 61, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ax = plt.barh(data = vil.sort_values(by='mse').tail(15), \n", " y='feature', \n", " width = 'mse'\n", " )\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Do the same for classification. Are the VIL the same? Why?" ] }, { "cell_type": "code", "execution_count": 62, "metadata": { "collapsed": true }, "outputs": [], "source": [ "rf_vil = []\n", "for i in range(50):\n", " rf = sklearn.ensemble.RandomForestRegressor(n_estimators=100)\n", " rf = rf.fit(features_train,labels_numerical_train)\n", " rf_vil.append(rf.feature_importances_)\n", "mean_vil = np.mean(rf_vil, axis = 0)" ] }, { "cell_type": "code", "execution_count": 63, "metadata": { "collapsed": true }, "outputs": [], "source": [ "mean_vil = pd.DataFrame(list(zip(feature_names,mean_vil)),\n", " columns=['feature','mean_gini_decrease']\n", " ).sort_values(by='mean_gini_decrease', ascending=False)" ] }, { "cell_type": "code", "execution_count": 64, "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", "
featuremean_gini_decrease
1Baked Goods0.210890
18Flours0.162897
25Nuts0.107380
30Pulses0.095951
10Coffee0.051143
\n", "
" ], "text/plain": [ " feature mean_gini_decrease\n", "1 Baked Goods 0.210890\n", "18 Flours 0.162897\n", "25 Nuts 0.107380\n", "30 Pulses 0.095951\n", "10 Coffee 0.051143" ] }, "execution_count": 64, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mean_vil.head()" ] }, { "cell_type": "code", "execution_count": 65, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ax = plt.barh(data = mean_vil.sort_values(by='mean_gini_decrease').tail(15), \n", " y='feature', \n", " width = 'mean_gini_decrease',\n", " color = 'purple' \n", " )\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Note que baked goods and flours fight for the same place. Why? " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Different metrics to measure performance" ] }, { "cell_type": "code", "execution_count": 66, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/anaconda3/lib/python3.6/site-packages/sklearn/svm/base.py:193: FutureWarning: The default value of gamma will change from 'auto' to 'scale' in version 0.22 to account better for unscaled features. Set gamma explicitly to 'auto' or 'scale' to avoid this warning.\n", " \"avoid this warning.\", FutureWarning)\n", "/anaconda3/lib/python3.6/site-packages/sklearn/svm/base.py:193: FutureWarning: The default value of gamma will change from 'auto' to 'scale' in version 0.22 to account better for unscaled features. Set gamma explicitly to 'auto' or 'scale' to avoid this warning.\n", " \"avoid this warning.\", FutureWarning)\n", "/anaconda3/lib/python3.6/site-packages/sklearn/svm/base.py:193: FutureWarning: The default value of gamma will change from 'auto' to 'scale' in version 0.22 to account better for unscaled features. Set gamma explicitly to 'auto' or 'scale' to avoid this warning.\n", " \"avoid this warning.\", FutureWarning)\n", "/anaconda3/lib/python3.6/site-packages/sklearn/svm/base.py:193: FutureWarning: The default value of gamma will change from 'auto' to 'scale' in version 0.22 to account better for unscaled features. Set gamma explicitly to 'auto' or 'scale' to avoid this warning.\n", " \"avoid this warning.\", FutureWarning)\n", "/anaconda3/lib/python3.6/site-packages/sklearn/svm/base.py:193: FutureWarning: The default value of gamma will change from 'auto' to 'scale' in version 0.22 to account better for unscaled features. Set gamma explicitly to 'auto' or 'scale' to avoid this warning.\n", " \"avoid this warning.\", FutureWarning)\n", "/anaconda3/lib/python3.6/site-packages/sklearn/svm/base.py:193: FutureWarning: The default value of gamma will change from 'auto' to 'scale' in version 0.22 to account better for unscaled features. Set gamma explicitly to 'auto' or 'scale' to avoid this warning.\n", " \"avoid this warning.\", FutureWarning)\n", "/anaconda3/lib/python3.6/site-packages/sklearn/svm/base.py:193: FutureWarning: The default value of gamma will change from 'auto' to 'scale' in version 0.22 to account better for unscaled features. Set gamma explicitly to 'auto' or 'scale' to avoid this warning.\n", " \"avoid this warning.\", FutureWarning)\n", "/anaconda3/lib/python3.6/site-packages/sklearn/svm/base.py:193: FutureWarning: The default value of gamma will change from 'auto' to 'scale' in version 0.22 to account better for unscaled features. Set gamma explicitly to 'auto' or 'scale' to avoid this warning.\n", " \"avoid this warning.\", FutureWarning)\n", "/anaconda3/lib/python3.6/site-packages/sklearn/svm/base.py:193: FutureWarning: The default value of gamma will change from 'auto' to 'scale' in version 0.22 to account better for unscaled features. Set gamma explicitly to 'auto' or 'scale' to avoid this warning.\n", " \"avoid this warning.\", FutureWarning)\n", "/anaconda3/lib/python3.6/site-packages/sklearn/svm/base.py:193: FutureWarning: The default value of gamma will change from 'auto' to 'scale' in version 0.22 to account better for unscaled features. Set gamma explicitly to 'auto' or 'scale' to avoid this warning.\n", " \"avoid this warning.\", FutureWarning)\n", "/anaconda3/lib/python3.6/site-packages/sklearn/ensemble/forest.py:245: FutureWarning: The default value of n_estimators will change from 10 in version 0.20 to 100 in 0.22.\n", " \"10 in version 0.20 to 100 in 0.22.\", FutureWarning)\n", "/anaconda3/lib/python3.6/site-packages/sklearn/ensemble/forest.py:245: FutureWarning: The default value of n_estimators will change from 10 in version 0.20 to 100 in 0.22.\n", " \"10 in version 0.20 to 100 in 0.22.\", FutureWarning)\n", "/anaconda3/lib/python3.6/site-packages/sklearn/ensemble/forest.py:245: FutureWarning: The default value of n_estimators will change from 10 in version 0.20 to 100 in 0.22.\n", " \"10 in version 0.20 to 100 in 0.22.\", FutureWarning)\n", "/anaconda3/lib/python3.6/site-packages/sklearn/ensemble/forest.py:245: FutureWarning: The default value of n_estimators will change from 10 in version 0.20 to 100 in 0.22.\n", " \"10 in version 0.20 to 100 in 0.22.\", FutureWarning)\n", "/anaconda3/lib/python3.6/site-packages/sklearn/ensemble/base.py:154: UserWarning: Multiprocessing-backed parallel loops cannot be nested, setting n_jobs=1\n", " n_jobs = min(effective_n_jobs(n_jobs), n_estimators)\n", "/anaconda3/lib/python3.6/site-packages/sklearn/ensemble/base.py:154: UserWarning: Multiprocessing-backed parallel loops cannot be nested, setting n_jobs=1\n", " n_jobs = min(effective_n_jobs(n_jobs), n_estimators)\n", "/anaconda3/lib/python3.6/site-packages/sklearn/ensemble/base.py:154: UserWarning: Multiprocessing-backed parallel loops cannot be nested, setting n_jobs=1\n", " n_jobs = min(effective_n_jobs(n_jobs), n_estimators)\n", "/anaconda3/lib/python3.6/site-packages/sklearn/ensemble/forest.py:245: FutureWarning: The default value of n_estimators will change from 10 in version 0.20 to 100 in 0.22.\n", " \"10 in version 0.20 to 100 in 0.22.\", FutureWarning)\n", "/anaconda3/lib/python3.6/site-packages/sklearn/ensemble/forest.py:245: FutureWarning: The default value of n_estimators will change from 10 in version 0.20 to 100 in 0.22.\n", " \"10 in version 0.20 to 100 in 0.22.\", FutureWarning)\n", "/anaconda3/lib/python3.6/site-packages/sklearn/ensemble/base.py:154: UserWarning: Multiprocessing-backed parallel loops cannot be nested, setting n_jobs=1\n", " n_jobs = min(effective_n_jobs(n_jobs), n_estimators)\n", "/anaconda3/lib/python3.6/site-packages/sklearn/ensemble/forest.py:245: FutureWarning: The default value of n_estimators will change from 10 in version 0.20 to 100 in 0.22.\n", " \"10 in version 0.20 to 100 in 0.22.\", FutureWarning)\n", "/anaconda3/lib/python3.6/site-packages/sklearn/ensemble/forest.py:245: FutureWarning: The default value of n_estimators will change from 10 in version 0.20 to 100 in 0.22.\n", " \"10 in version 0.20 to 100 in 0.22.\", FutureWarning)\n", "/anaconda3/lib/python3.6/site-packages/sklearn/ensemble/base.py:154: UserWarning: Multiprocessing-backed parallel loops cannot be nested, setting n_jobs=1\n", " n_jobs = min(effective_n_jobs(n_jobs), n_estimators)\n", "/anaconda3/lib/python3.6/site-packages/sklearn/ensemble/forest.py:245: FutureWarning: The default value of n_estimators will change from 10 in version 0.20 to 100 in 0.22.\n", " \"10 in version 0.20 to 100 in 0.22.\", FutureWarning)\n", "/anaconda3/lib/python3.6/site-packages/sklearn/ensemble/base.py:154: UserWarning: Multiprocessing-backed parallel loops cannot be nested, setting n_jobs=1\n", " n_jobs = min(effective_n_jobs(n_jobs), n_estimators)\n", "/anaconda3/lib/python3.6/site-packages/sklearn/ensemble/base.py:154: UserWarning: Multiprocessing-backed parallel loops cannot be nested, setting n_jobs=1\n", " n_jobs = min(effective_n_jobs(n_jobs), n_estimators)\n", "/anaconda3/lib/python3.6/site-packages/sklearn/ensemble/base.py:154: UserWarning: Multiprocessing-backed parallel loops cannot be nested, setting n_jobs=1\n", " n_jobs = min(effective_n_jobs(n_jobs), n_estimators)\n", "/anaconda3/lib/python3.6/site-packages/sklearn/ensemble/base.py:154: UserWarning: Multiprocessing-backed parallel loops cannot be nested, setting n_jobs=1\n", " n_jobs = min(effective_n_jobs(n_jobs), n_estimators)\n", "/anaconda3/lib/python3.6/site-packages/sklearn/ensemble/forest.py:245: FutureWarning: The default value of n_estimators will change from 10 in version 0.20 to 100 in 0.22.\n", " \"10 in version 0.20 to 100 in 0.22.\", FutureWarning)\n", "/anaconda3/lib/python3.6/site-packages/sklearn/ensemble/base.py:154: UserWarning: Multiprocessing-backed parallel loops cannot be nested, setting n_jobs=1\n", " n_jobs = min(effective_n_jobs(n_jobs), n_estimators)\n", "/anaconda3/lib/python3.6/site-packages/sklearn/neighbors/base.py:420: UserWarning: Multiprocessing-backed parallel loops cannot be nested, setting n_jobs=1\n", " n_jobs = effective_n_jobs(self.n_jobs)\n", "/anaconda3/lib/python3.6/site-packages/sklearn/neighbors/base.py:420: UserWarning: Multiprocessing-backed parallel loops cannot be nested, setting n_jobs=1\n", " n_jobs = effective_n_jobs(self.n_jobs)\n", "/anaconda3/lib/python3.6/site-packages/sklearn/neighbors/base.py:420: UserWarning: Multiprocessing-backed parallel loops cannot be nested, setting n_jobs=1\n", " n_jobs = effective_n_jobs(self.n_jobs)\n", "/anaconda3/lib/python3.6/site-packages/sklearn/neighbors/base.py:420: UserWarning: Multiprocessing-backed parallel loops cannot be nested, setting n_jobs=1\n", " n_jobs = effective_n_jobs(self.n_jobs)\n", "/anaconda3/lib/python3.6/site-packages/sklearn/neighbors/base.py:420: UserWarning: Multiprocessing-backed parallel loops cannot be nested, setting n_jobs=1\n", " n_jobs = effective_n_jobs(self.n_jobs)\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/anaconda3/lib/python3.6/site-packages/sklearn/neighbors/base.py:420: UserWarning: Multiprocessing-backed parallel loops cannot be nested, setting n_jobs=1\n", " n_jobs = effective_n_jobs(self.n_jobs)\n", "/anaconda3/lib/python3.6/site-packages/sklearn/neighbors/base.py:420: UserWarning: Multiprocessing-backed parallel loops cannot be nested, setting n_jobs=1\n", " n_jobs = effective_n_jobs(self.n_jobs)\n", "/anaconda3/lib/python3.6/site-packages/sklearn/neighbors/base.py:420: UserWarning: Multiprocessing-backed parallel loops cannot be nested, setting n_jobs=1\n", " n_jobs = effective_n_jobs(self.n_jobs)\n", "/anaconda3/lib/python3.6/site-packages/sklearn/neighbors/base.py:420: UserWarning: Multiprocessing-backed parallel loops cannot be nested, setting n_jobs=1\n", " n_jobs = effective_n_jobs(self.n_jobs)\n", "/anaconda3/lib/python3.6/site-packages/sklearn/neighbors/base.py:420: UserWarning: Multiprocessing-backed parallel loops cannot be nested, setting n_jobs=1\n", " n_jobs = effective_n_jobs(self.n_jobs)\n" ] } ], "source": [ "models = []\n", "\n", "models.append((\"LinearRegression\",sklearn.linear_model.LinearRegression()))\n", "models.append((\"SVR\",sklearn.svm.SVR()))\n", "models.append((\"RandomForest\",sklearn.ensemble.RandomForestRegressor()))\n", "models.append((\"KNeighbors\",sklearn.neighbors.KNeighborsRegressor()))\n", "models.append((\"MLPRegressor\",sklearn.neural_network.MLPRegressor()))\n", "models.append((\"DecisionTreeRegressor\",sklearn.tree.DecisionTreeRegressor()))\n", "\n", "\n", "results = []\n", "names = []\n", "for name,model in models:\n", " result = sklearn.model_selection.cross_val_score(model, \n", " features, \n", " labels_numerical, \n", " cv=10, \n", " scoring='neg_mean_absolute_error',\n", " n_jobs=-1\n", " )\n", " names.append(name)\n", " results.append(result)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "List of compared models along with their hyperparameters" ] }, { "cell_type": "code", "execution_count": 67, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[('LinearRegression',\n", " LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None, normalize=False)),\n", " ('SVR', SVR(C=1.0, cache_size=200, coef0=0.0, degree=3, epsilon=0.1,\n", " gamma='auto_deprecated', kernel='rbf', max_iter=-1, shrinking=True,\n", " tol=0.001, verbose=False)),\n", " ('RandomForest',\n", " RandomForestRegressor(bootstrap=True, criterion='mse', max_depth=None,\n", " max_features='auto', max_leaf_nodes=None,\n", " min_impurity_decrease=0.0, min_impurity_split=None,\n", " min_samples_leaf=1, min_samples_split=2,\n", " min_weight_fraction_leaf=0.0, n_estimators='warn',\n", " n_jobs=None, oob_score=False, random_state=None,\n", " verbose=0, warm_start=False)),\n", " ('KNeighbors',\n", " KNeighborsRegressor(algorithm='auto', leaf_size=30, metric='minkowski',\n", " metric_params=None, n_jobs=None, n_neighbors=5, p=2,\n", " weights='uniform')),\n", " ('MLPRegressor',\n", " MLPRegressor(activation='relu', alpha=0.0001, batch_size='auto', beta_1=0.9,\n", " beta_2=0.999, early_stopping=False, epsilon=1e-08,\n", " hidden_layer_sizes=(100,), learning_rate='constant',\n", " learning_rate_init=0.001, max_iter=200, momentum=0.9,\n", " n_iter_no_change=10, nesterovs_momentum=True, power_t=0.5,\n", " random_state=None, shuffle=True, solver='adam', tol=0.0001,\n", " validation_fraction=0.1, verbose=False, warm_start=False)),\n", " ('DecisionTreeRegressor',\n", " DecisionTreeRegressor(criterion='mse', max_depth=None, max_features=None,\n", " max_leaf_nodes=None, min_impurity_decrease=0.0,\n", " min_impurity_split=None, min_samples_leaf=1,\n", " min_samples_split=2, min_weight_fraction_leaf=0.0,\n", " presort=False, random_state=None, splitter='best'))]" ] }, "execution_count": 67, "metadata": {}, "output_type": "execute_result" } ], "source": [ "models" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Box plot of the results (negative mean absolute error) of each model" ] }, { "cell_type": "code", "execution_count": 68, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nzMwq4z4ZMzNrGAcZMzNrGAcZMzNrGAcZMzNrGAcZMzNrGAcZMzNrGAcZszbT3d3NhAkTGDFiBBMm\nTKC7u3vdDzJrEM+TMWsj3d3dzJgxg9mzZzNp0iTmzp1LV1cXAFOnTq24dNaJvJ4Mw5vWArxoWbNo\nx1njEyZM4KyzzmLy5Mkrt/X09DB9+nTmz59fYckGrp7fZat/ru20noyDTB3a8SDVSdrx8xsxYgTL\nli1j5MiRK7ctX76cUaNGsWLFigpLZgPRTkHGfTJmbWT8+PHMnTt3lW1z585l/PjxFZXIOl3dQUbS\nGElXSlpY/vaZ5lTS5ZIekvTj1bY/V9KvJN0q6QJJG5TtG5bbt5b7t6u3rNZ5JK3x0p/7W82MGTPo\n6uqip6eH5cuX09PTQ1dXFzNmzKi6aNahhqImczIwJyJ2AOaU2305HTi6j+2fBs6IiO2BpUBX2d4F\nLC3bzyj7mQ1IRAz60oqmTp3KzJkzmT59OqNGjWL69OnMnDnTnf5Wmbr7ZCT9BdgrIhZJGgdcExE7\nrmHfvYD3RcRrym0Bi4EtI+IJSS8HPhoR+0u6oly/XtL6wL3AFrGWArtPxszagftkVjU2IhaV6/cC\nYwfw2M2AhyLiiXL7LmCrcn0r4E6Acv/DZf9VSDpO0jxJ8xYvXjyY8puZWYP0a56MpKuALfu4a5WG\n3ogIScN6ah8Rs4BZkDWZ4XxuMzNbu34FmYjYd033SbpP0ria5rL7B/D8DwKbSlq/1Fa2Bu4u990N\nbAPcVZrLNin7m5lZixiK5rJLgGnl+jTg4v4+sPSv9ACH9/H42v97OHD12vpjzMys+QxFkDkNeLWk\nhcC+5TaSJkr6eu9Okq4FvgfsI+kuSfuXu04CTpR0K9nnMrtsnw1sVrafyJpHrZmZWZPyjP86eHSZ\nmTWCR5eZmZn1g4OMmZk1jIOMmZk1jIOMmZk1jIOMmZk1jIOMmZk1jIOMmZk1jIOMdZzu7m4mTJjA\niBEjmDBhAt3d3VUXyaxt9St3mVm76O7uZsaMGcyePZtJkyYxd+5curpyCSOvuWI29FyTsY4yc+ZM\nZs+ezeTJkxk5ciSTJ09m9uzZzJw5s+qimbUlp5Wpg9PKtJ4RI0awbNkyRo4cuXLb8uXLGTVqFCtW\nrKiwZGZPcVoZsxY1fvx45s6du8q2uXPnMn78+IpKZJ1K0hov/bm/VTjIWEeZMWMGXV1d9PT0sHz5\n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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.boxplot(results,labels = names)\n", "plt.xticks(rotation=45)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Try to do the same for classification" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## XGBoost and AdaBoost compared to Random Forest" ] }, { "cell_type": "code", "execution_count": 69, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Accuracy XGB: 0.557936507936508\n" ] } ], "source": [ "xgb_model = xgb.XGBClassifier()\n", "acc_xgb = cross_val_score(xgb_model,features,labels_categorical, cv=10, scoring='accuracy')\n", "print(f'Accuracy XGB: {np.mean(acc_xgb)}')" ] }, { "cell_type": "code", "execution_count": 72, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Accuracy AdaBoost: 0.47698412698412695\n" ] } ], "source": [ "ada_model = AdaBoostClassifier()\n", "acc_ada= cross_val_score(ada_model,features,labels_categorical, cv=10, scoring='accuracy')\n", "print(f'Accuracy AdaBoost: {np.mean(acc_ada)}')" ] }, { "cell_type": "code", "execution_count": 73, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Accuracy RF: 0.506547619047619\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/anaconda3/lib/python3.6/site-packages/sklearn/ensemble/forest.py:245: FutureWarning: The default value of n_estimators will change from 10 in version 0.20 to 100 in 0.22.\n", " \"10 in version 0.20 to 100 in 0.22.\", FutureWarning)\n", "/anaconda3/lib/python3.6/site-packages/sklearn/ensemble/forest.py:245: FutureWarning: The default value of n_estimators will change from 10 in version 0.20 to 100 in 0.22.\n", " \"10 in version 0.20 to 100 in 0.22.\", FutureWarning)\n", "/anaconda3/lib/python3.6/site-packages/sklearn/ensemble/forest.py:245: FutureWarning: The default value of n_estimators will change from 10 in version 0.20 to 100 in 0.22.\n", " \"10 in version 0.20 to 100 in 0.22.\", FutureWarning)\n", "/anaconda3/lib/python3.6/site-packages/sklearn/ensemble/forest.py:245: FutureWarning: The default value of n_estimators will change from 10 in version 0.20 to 100 in 0.22.\n", " \"10 in version 0.20 to 100 in 0.22.\", FutureWarning)\n", "/anaconda3/lib/python3.6/site-packages/sklearn/ensemble/forest.py:245: FutureWarning: The default value of n_estimators will change from 10 in version 0.20 to 100 in 0.22.\n", " \"10 in version 0.20 to 100 in 0.22.\", FutureWarning)\n", "/anaconda3/lib/python3.6/site-packages/sklearn/ensemble/forest.py:245: FutureWarning: The default value of n_estimators will change from 10 in version 0.20 to 100 in 0.22.\n", " \"10 in version 0.20 to 100 in 0.22.\", FutureWarning)\n", "/anaconda3/lib/python3.6/site-packages/sklearn/ensemble/forest.py:245: FutureWarning: The default value of n_estimators will change from 10 in version 0.20 to 100 in 0.22.\n", " \"10 in version 0.20 to 100 in 0.22.\", FutureWarning)\n", "/anaconda3/lib/python3.6/site-packages/sklearn/ensemble/forest.py:245: FutureWarning: The default value of n_estimators will change from 10 in version 0.20 to 100 in 0.22.\n", " \"10 in version 0.20 to 100 in 0.22.\", FutureWarning)\n", "/anaconda3/lib/python3.6/site-packages/sklearn/ensemble/forest.py:245: FutureWarning: The default value of n_estimators will change from 10 in version 0.20 to 100 in 0.22.\n", " \"10 in version 0.20 to 100 in 0.22.\", FutureWarning)\n", "/anaconda3/lib/python3.6/site-packages/sklearn/ensemble/forest.py:245: FutureWarning: The default value of n_estimators will change from 10 in version 0.20 to 100 in 0.22.\n", " \"10 in version 0.20 to 100 in 0.22.\", FutureWarning)\n" ] } ], "source": [ "rf_model = sklearn.ensemble.RandomForestClassifier()\n", "acc_rf = cross_val_score(rf_model,features,labels_categorical, cv=10, scoring='accuracy')\n", "print(f'Accuracy RF: {np.mean(acc_rf)}')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Comparing accuracy" ] }, { "cell_type": "code", "execution_count": 74, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 1.0, 'Boxplot (10-fold CV)')" ] }, "execution_count": 74, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n4BLbX5a0HcWFvVsOtt7JkyczZ86cmqqOiNFK0h8HWlbnrvcuwHzbC2w/STE6zAFNbczye3A3oPXt\nbhERXVVnUG7GioMDLOTpgwicAhwuaSFFb/K4ViuSNE3FCNBzFi9eXEetERED6vbJnEMpbjObCLwe\n+Fr/ILGNbJ9tu89234QJEzpeZESMbnUG5SJWHEVlIk8fbeUdlEN12f4txbBfm9RYU0TESqszKGcD\nkyVtVT6bZCows6nNX4C9ACS9gCIos28dET2ltqB0MWrzdOBy4FaKs9vzJJ0maf+y2fuAoyXdQDGE\n1FHOrUIR0WNqvY6yvCZyVtO8kxte3wK8rM4aIiJWVbdP5kRE9LwEZUREhQRlRESFDNw7zFZ8ftXK\nyXmsWF2Mtn/nCcphNtg/Akmr5T+SiGaj7d95dr0jIiokKCMiKiQoIyIqJCgjIiokKCMiKiQoIyIq\nJCgjIiokKCMiKiQoIyIqJCgjIiokKCMiKiQoIyIqJCgjIiokKCMiKiQoIyIqJCgjIiokKCMiKiQo\nIyIqJCgjIiokKCMiKiQoIyIqJCgjIiokKCMiKiQoIyIqJCgjIiokKCMiKtQalJL2kXSbpPmSTmqx\n/HOS5pY/t0t6oM56IiKGYmxdK5Y0BjgTeDWwEJgtaabtW/rb2D6+of1xwI511RMRMVR19ih3Aebb\nXmD7SWAGcMAg7Q8FLq6xnoiIIakzKDcD7mqYXljOexpJWwBbAVcOsHyapDmS5ixevHjYC42IGEyv\nnMyZCnzb9rJWC22fbbvPdt+ECRM6XFpEjHZ1BuUiYPOG6YnlvFamkt3uiOhRdQblbGCypK0krUUR\nhjObG0naFhgP/LbGWiIihqy2oLT9FDAduBy4FbjE9jxJp0nav6HpVGCGbddVS0TEqqjt8iAA27OA\nWU3zTm6aPqXOGiIiVlWvnMyJiOhZCcqIiAoJyoiICgnKiIgKCcqIiAoJyoiICgnKiIgKCcqIiAoJ\nylgtbLTRRkjq2M9GG23U7Y8cPaTWO3MihsuSJUvo5F2ukjq2reh96VFGRFRIUEZEVEhQRkRUSFBG\nRFRIUEZEVEhQRkRUSFBGRFRIUEZEVEhQRkRUSFBGRFRIUEZEVEhQRkRUSFBGRFRIUEZEVEhQRkRU\nSFBGREtDHSwZGHGDJWfg3ohoKYMlL5egjNWC/2scnLJBZ7cXUUpQxmpBpz7U8d6NT+nY5qLH5Rhl\nRESFBGVERIVag1LSPpJukzRf0kkDtDlY0i2S5kn6Rp31REQMRW3HKCWNAc4EXg0sBGZLmmn7loY2\nk4EPAi+zvUTSs+qqJyJiqOrsUe4CzLe9wPaTwAzggKY2RwNn2l4CYPueGuuJiBiSOoNyM+CuhumF\n5bxG2wDbSPq1pGsk7VNjPRERQ9Lty4PGApOBPYCJwC8lbW/7gcZGkqYB0wAmTZrU6RojYpSrs0e5\nCNi8YXpiOa/RQmCm7aW2/wzcThGcK7B9tu0+230TJkyoreCIiFbqDMrZwGRJW0laC5gKzGxq832K\n3iSSNqHYFV9QY00RESuttqC0/RQwHbgcuBW4xPY8SadJ2r9sdjlwn6RbgJ8DJ9q+r66aIiKGQp28\nLWw49PX1ec6cOd0uY0gkdfQ2vJGk099d/q5G33cu6Xrbfa2W5c6ciIgKCcqIiAoJyoiICgnKiIgK\nCcqIiAoJyoiICgnKiIgKCcqIiAoJyiHIYzwjRpdujx60WspjPCNGl/QoIyIqJCgjIiokKCMiKlQG\npaRrJb1L0rhOFBQR0Wva6VEeCWwNzJX0dUl71VxTRERPqQxK23+w/QGKRzR8B7hQ0p8lfUTShrVX\nGBHRZW0do5S0HfBJ4BPAD4DDgSeBK+srLSKiN1ReRynpOuAx4DzgZNuPl4t+LelldRYXEdEL2rng\n/HDbt7daYHv/VvMjIkaSdna939Z4LFLSeEmn1lhTRERPaSco97P9QP+E7SXAG+orKSKit7QTlGPK\n53IDIGkdYK1B2kdEjCjtHKOcAVwh6bxy+t+Ai+orKSKit1QGpe2PS7oJ6L/Q/NO2L6u3rIiI3tHW\nMGu2fwj8sOZaVhv+r3Fwygad3V5EdE0711G+BDgDeAGwNiDgCduj9n+vTn2o4+NR+pSObS4imrRz\nMudLFPd7LwDWB6YDX6izqIiIXtJOUK5h+zZgrO2lts8B9q25roiIntHOMcpHy8uDbpD0ceBuYEy9\nZUVE9I52epRHle2mA8soRhE6qMaaIiJ6yqA9SkljgFNsHwH8A/hIR6qKaKGTD1kbP358x7YVvW/Q\noLS9TNLWkta0vbRTRUU0G+pVBpI6eoVCjEzt7Hr/Cbha0gclvaf/p52VS9pH0m2S5ks6qcXyoyQt\nljS3/Hnnyn6AiIi6tXMy5y/lzzPKn7aUu+1nAq8GFgKzJc20fUtT02/ant7ueiMiOq2dWxiHelxy\nF2C+7QUAkmYABwDNQRkR0dPauTPnCuBpB3lsv6birZsBdzVMLwRe2qLdmyW9ArgdON72Xc0NJE0D\npgFMmjSpquSIiGHVzq73hxterwO8GXhimLb/Q+Bi209IehfwVWDP5ka2zwbOBujr68uR+YjoqHZ2\nva9tmvULSc3zWlkEbN4wPbGc17ju+xomzwU+3cZ6IyI6qp1d78bBL9YAdgbauchsNjBZ0lYUATkV\neGvTuje1fXc5uT9waztFR0R0Uju73vMojlEKeAr4M3B01ZtsPyVpOnA5xS2P59meJ+k0YI7tmcB7\nJO1frvd+iruAIiJ6ila3i3H7+vo8Z86crtbQ6YuYc9H00OW7G7rR9u9c0vW2+1otq7zgXNIxLZ7C\nOG04C4yI6GXt3JlzTIunML67vpIiInpLW09hbJyQtAawZj3lRET0nnZO5lwh6WLgrHL6GOCn9ZUU\nEdFb2gnKEyl2tY8vp68AvlJbRRERPaadoFwT+JLtL8I/d73XorikJyJGqDxtdLl2gvLnwGuAh8vp\nZ1JcG7lbXUVFRPflaaPLtXMyZ13b/SFJ+brt4dYiIlZ37QTlY5Je3D8haQrFYyEiIkaFdna9jwe+\nJ+lOitsYN6fpnu2IiJGsrdGDJL0AeEE56xaKpzFGRIwK7ex6Y/sJ23OBDYAzaBouLSJiJGvnXu8+\nSaeXu96zgOuAF9VeWUREjxgwKCWdJuk24LMUj2noA+6x/f9s39upAiMium2wY5THUoxF+Tlglu0n\nJWW8qogYdQbb9X4OxaMZ3gIskHQ+sG55Z05ExKgxYI/S9lLgUuBSSetSPKphPLBI0hW2j+hQjRER\nXdXOdZTYfhz4JvDNchDfN9VaVURED2krKBuVg/ieV0MtERE9KccbIyIqtHMd5dN6na3mRUSMVO30\nKK9rc15ExIg0YM9Q0rOATSkuCdqeYkAMgHFkmLWIGEUG24XeF/g3YCJwJsuD8mHgIzXXFRHRMwa7\njvJ84HxJB9u+pIM1RUT0lHaOUT5L0jgASWdJuk7SXjXXFRHRM9oJymm2H5L0GopjlkdT3NoYETEq\ntBOU/QNhvB640PYNbb4vImJEaCfwbpA0C9gP+JGk9VgenhERI147F46/HdgZmG/7MUmbAO+ot6yI\niN5R2aO0vQzYGnh3OWvddt4XETFStHML4xeBVwGHl7MeBc5qZ+WS9pF0m6T5kk4apN2bJVlSXzvr\njYjopHZ6hrvZfhfls7xt3w+sVfUmSWMoLlR/HbAdcKik7Vq0Wx94L3DtStQdEdEx7QTl0nJUcwNI\n2hj4vzbetwvFcc0Ftp8EZgAHtGj338CnKIM4IqLXDPZwsf4TPWcC3wEmSDoV+BVFsFXZDLirYXph\nOa9xGzsBm9u+bGWKjojopMHOel8H7GT7QknXA3tT3O/9Fts3r+qGy17q6cBRbbSdBkwDmDRp0qpu\nOiJipQwWlP2DYGB7HsUTGVfGImDzhumJ5bx+61M8H/wqSVA8zGympP1tz2lcke2zgbMB+vr6cg1n\nRHTUYEE5QdIJAy20fXrFumcDkyVtRRGQU4G3Nrz/QWCT/mlJVwH/0RySERHdNlhQjgHWo6FnuTJs\nPyVpOnB5ua7zbM+TdBowx/bMoay3V5S94I4YP358x7YVEU83WFDebfu0VVm57VnArKZ5Jw/Qdo9V\n2VYn2UPb+5c05PdGRPcMdnlQ57pMERE9bLCgzJiTEREMEpTlHTgREaNeBreIiKiQoIyIqJCgjIio\nkKCMiKiQoIyIqJCgjIiokKCMiKiQoIyIqJCgjIio0M7jaiNilMooWYUEZUS0lFGylsuud0REhQRl\nRESFBGVERIUEZUREhQRlRESFBGVERIUEZUREhQRlRESFBGVERIUEZUREhQRlRESFBGVERIUEZURE\nhQRlRESFBGVERIUEZUREhQRlRESFBGVERIVag1LSPpJukzRf0kktlh8j6SZJcyX9StJ2ddYTETEU\ntQWlpDHAmcDrgO2AQ1sE4Tdsb297CvBp4PS66omIGKo6e5S7APNtL7D9JDADOKCxge2HGiafCYys\nJxJFxIhQ51MYNwPuapheCLy0uZGkY4ETgLWAPVutSNI0YBrApEmThr3QiIjBdP1kju0zbT8P+ADw\n4QHanG27z3bfhAkTOltgRIx6dQblImDzhumJ5byBzAAOrLGeiIghqTMoZwOTJW0laS1gKjCzsYGk\nyQ2T+wJ/rLGeiIghqe0Ype2nJE0HLgfGAOfZnifpNGCO7ZnAdEl7A0uBJcCRddUTETFUdZ7MwfYs\nYFbTvJMbXr+3zu1HRAyHWoNyNJI05OV2ro4ainznUbcE5TDLf7zOy3cedev65UEREb0uQRkRUSFB\nGRFRIUEZEVEhQRkRUSFBGRFRIUEZEVEhQRkRUSFBGRFRIUEZEVEhQRkRUSFBGRFRIUEZEVEhQRkR\nUSFBGRFRIUEZEVEhQRkRUSFBGRFRIUEZEVEhQRkRUSFBGRFRIUEZEVEhQRkRUSFBGRFRIUEZEVEh\nQRkRUSFBGRFRIUEZEVEhQRkRUaHWoJS0j6TbJM2XdFKL5SdIukXSjZJ+JmmLOuuJiBiK2oJS0hjg\nTOB1wHbAoZK2a2r2e6DP9g7At4FP11VPRMRQ1dmj3AWYb3uB7SeBGcABjQ1s/9z2Y+XkNcDEGuuJ\niBiSOoNyM+CuhumF5byBvAP4UasFkqZJmiNpzuLFi4exxIiIaj1xMkfS4UAf8JlWy22fbbvPdt+E\nCRM6W1xEjHpja1z3ImDzhumJ5bwVSNob+E/glbafqLGeiIghqbNHORuYLGkrSWsBU4GZjQ0k7Qh8\nBdjf9j011hIRMWS1BaXtp4DpwOXArcAltudJOk3S/mWzzwDrAd+SNFfSzAFWFxHRNXXuemN7FjCr\nad7JDa/3rnP7ERHDoSdO5kRE9LIEZUREhQRlRESFBGVERIUEZUREhQRlRESFBGVERIUEZUREhVov\nOI+IkUnSkJfbHu5yapegjIiVtjqG3arIrndERIUEZUREhQRlRESFBGVERIUEZUREhQRlRESFBGVE\nRIUEZUREhQRlRESFBGVERAWtbrciSVoM3NntOoZoE+DebhcxyuQ777zV9TvfwvaEVgtWu6BcnUma\nY7uv23WMJvnOO28kfufZ9Y6IqJCgjIiokKDsrLO7XcAolO+880bcd55jlBERFdKjjIiokKCMiKiQ\noIyIqJCgjIiokIeL1UTSWNtPdbuOiE6QtC/wQmCd/nm2T+teRcMrPcr6XNf/QtIZ3SxkNJC0jqQj\nJe2vwgckXSrpfyVt0u36RjJJZwGHAMcBAt4CbNHVooZZLg+qiaTf296xfP072zt1u6aRTNIlwFLg\nmcB44Gbgh8DuwBTb+3WxvBFN0o22d2j4cz3gR7Zf3u3ahkt2veuT30CdtZ3tF0kaCyy0/cpy/o8l\n3dDNwkaBx8s/H5P0XOA+YNMu1jPsEpT12VbSjRS7Is8rX1NO2/YO3SttRHoSwPZTkv7atGxZF+oZ\nTS6VtCHwGeB3FJ2Ec7tb0vDKrndNJA16jMb26jpUXE+SdA8wg+IX0SHla8rpg20/u1u1jSaS1gbW\nsf1gt2sZTulR1mSgIJS0BnAoq++Ymr3qxIbXc5qWNU/HMJD0pkGWYfu7naynTulR1kTSOOBYYDNg\n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\ngg==\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(5,5))\n", "plt.boxplot([acc_rf,acc_xgb,acc_ada])\n", "plt.xlabel('Classification Method', fontsize=10)\n", "plt.ylabel('Test Accuracy', fontsize=10)\n", "plt.xticks([1,2,3],['RF','XGB','Ada'],\n", " rotation=90)\n", "plt.title('Boxplot (10-fold CV)')\n", "\n", "#plt.savefig('boxplots.png',bbox_inches='tight')" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" } }, "nbformat": 4, "nbformat_minor": 2 }