diff --git a/ISE364_final_project_DT.ipynb b/ISE364_final_project_DT.ipynb index aa6f482..3a84e12 100644 --- a/ISE364_final_project_DT.ipynb +++ b/ISE364_final_project_DT.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 39, + "execution_count": 16, "metadata": {}, "outputs": [], "source": [ @@ -16,7 +16,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 17, "metadata": {}, "outputs": [], "source": [ @@ -25,7 +25,7 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 18, "metadata": {}, "outputs": [ { @@ -170,7 +170,7 @@ "4 28 A2 338409 B0 13 C1 D3 E2 F1 G1 0 0 40 H1 SMALL" ] }, - "execution_count": 30, + "execution_count": 18, "metadata": {}, "output_type": "execute_result" } @@ -195,7 +195,7 @@ }, { "cell_type": "code", - "execution_count": 167, + "execution_count": 19, "metadata": {}, "outputs": [], "source": [ @@ -205,7 +205,7 @@ }, { "cell_type": "code", - "execution_count": 168, + "execution_count": 20, "metadata": {}, "outputs": [], "source": [ @@ -216,7 +216,7 @@ }, { "cell_type": "code", - "execution_count": 171, + "execution_count": 21, "metadata": {}, "outputs": [], "source": [ @@ -225,7 +225,7 @@ }, { "cell_type": "code", - "execution_count": 172, + "execution_count": 22, "metadata": {}, "outputs": [], "source": [ @@ -234,7 +234,7 @@ }, { "cell_type": "code", - "execution_count": 217, + "execution_count": 23, "metadata": {}, "outputs": [ { @@ -325,7 +325,7 @@ "4 0.150685 0.221488 0.800000 0.00000 0.0 0.397959" ] }, - "execution_count": 217, + "execution_count": 23, "metadata": {}, "output_type": "execute_result" } @@ -336,7 +336,7 @@ }, { "cell_type": "code", - "execution_count": 174, + "execution_count": 24, "metadata": {}, "outputs": [ { @@ -527,7 +527,7 @@ "[5 rows x 95 columns]" ] }, - "execution_count": 174, + "execution_count": 24, "metadata": {}, "output_type": "execute_result" } @@ -538,7 +538,7 @@ }, { "cell_type": "code", - "execution_count": 175, + "execution_count": 25, "metadata": {}, "outputs": [], "source": [ @@ -547,7 +547,7 @@ }, { "cell_type": "code", - "execution_count": 218, + "execution_count": 26, "metadata": {}, "outputs": [ { @@ -745,7 +745,7 @@ "[5 rows x 101 columns]" ] }, - "execution_count": 218, + "execution_count": 26, "metadata": {}, "output_type": "execute_result" } @@ -763,7 +763,7 @@ }, { "cell_type": "code", - "execution_count": 178, + "execution_count": 27, "metadata": {}, "outputs": [], "source": [ @@ -772,7 +772,7 @@ }, { "cell_type": "code", - "execution_count": 179, + "execution_count": 28, "metadata": {}, "outputs": [], "source": [ @@ -782,7 +782,7 @@ }, { "cell_type": "code", - "execution_count": 180, + "execution_count": 29, "metadata": {}, "outputs": [ { @@ -980,7 +980,7 @@ "[5 rows x 100 columns]" ] }, - "execution_count": 180, + "execution_count": 29, "metadata": {}, "output_type": "execute_result" } @@ -991,7 +991,7 @@ }, { "cell_type": "code", - "execution_count": 181, + "execution_count": 30, "metadata": {}, "outputs": [], "source": [ @@ -1007,7 +1007,7 @@ }, { "cell_type": "code", - "execution_count": 184, + "execution_count": 31, "metadata": {}, "outputs": [], "source": [ @@ -1025,7 +1025,7 @@ }, { "cell_type": "code", - "execution_count": 185, + "execution_count": 32, "metadata": {}, "outputs": [ { @@ -1049,7 +1049,7 @@ }, { "cell_type": "code", - "execution_count": 186, + "execution_count": 33, "metadata": {}, "outputs": [], "source": [ @@ -1058,7 +1058,7 @@ }, { "cell_type": "code", - "execution_count": 187, + "execution_count": 34, "metadata": {}, "outputs": [], "source": [ @@ -1069,7 +1069,7 @@ }, { "cell_type": "code", - "execution_count": 188, + "execution_count": 35, "metadata": {}, "outputs": [], "source": [ @@ -1078,7 +1078,7 @@ }, { "cell_type": "code", - "execution_count": 189, + "execution_count": 36, "metadata": {}, "outputs": [ { @@ -1103,7 +1103,7 @@ }, { "cell_type": "code", - "execution_count": 190, + "execution_count": 37, "metadata": {}, "outputs": [ { @@ -1129,7 +1129,7 @@ }, { "cell_type": "code", - "execution_count": 191, + "execution_count": 38, "metadata": {}, "outputs": [ { @@ -1173,7 +1173,7 @@ }, { "cell_type": "code", - "execution_count": 192, + "execution_count": 39, "metadata": {}, "outputs": [ { @@ -1204,7 +1204,7 @@ }, { "cell_type": "code", - "execution_count": 193, + "execution_count": 40, "metadata": {}, "outputs": [ { @@ -1263,7 +1263,7 @@ }, { "cell_type": "code", - "execution_count": 194, + "execution_count": 41, "metadata": { "scrolled": true }, @@ -1321,7 +1321,7 @@ }, { "cell_type": "code", - "execution_count": 195, + "execution_count": 42, "metadata": {}, "outputs": [ { @@ -1370,7 +1370,7 @@ }, { "cell_type": "code", - "execution_count": 257, + "execution_count": 43, "metadata": {}, "outputs": [], "source": [ @@ -1381,7 +1381,7 @@ }, { "cell_type": "code", - "execution_count": 258, + "execution_count": 44, "metadata": {}, "outputs": [ { @@ -1406,7 +1406,7 @@ }, { "cell_type": "code", - "execution_count": 259, + "execution_count": 45, "metadata": {}, "outputs": [ { @@ -1423,6 +1423,296 @@ "print (test_error)" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Plot of the Decision Tree" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn import tree" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": { + "collapsed": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[Text(223.34472419028342, 207.55636363636364, 'X[29] <= 0.5\\ngini = 0.367\\nsamples = 22792\\nvalue = [5508, 17284]'),\n", + " Text(157.95409919028342, 187.7890909090909, 'X[3] <= 0.083\\ngini = 0.123\\nsamples = 12302\\nvalue = [812, 11490]'),\n", + " Text(134.27580971659918, 168.0218181818182, 'X[2] <= 0.833\\ngini = 0.095\\nsamples = 12093\\nvalue = [607, 11486]'),\n", + " Text(95.05202429149799, 148.25454545454545, 'X[4] <= 0.509\\ngini = 0.073\\nsamples = 11414\\nvalue = [432, 10982]'),\n", + " Text(92.34109311740892, 128.48727272727274, 'X[5] <= 0.444\\ngini = 0.068\\nsamples = 11362\\nvalue = [402, 10960]'),\n", + " Text(45.408097165991904, 108.72, 'X[0] <= 0.24\\ngini = 0.04\\nsamples = 9293\\nvalue = [190, 9103]'),\n", + " Text(24.39838056680162, 88.95272727272729, 'X[0] <= 0.13\\ngini = 0.012\\nsamples = 5688\\nvalue = [33, 5655]'),\n", + " Text(13.554655870445345, 69.18545454545455, 'X[2] <= 0.767\\ngini = 0.004\\nsamples = 3849\\nvalue = [7, 3842]'),\n", + " Text(8.132793522267207, 49.418181818181836, 'X[38] <= 0.5\\ngini = 0.002\\nsamples = 3440\\nvalue = [3, 3437]'),\n", + " Text(5.421862348178138, 29.650909090909096, 'X[43] <= 0.5\\ngini = 0.001\\nsamples = 3392\\nvalue = [2, 3390]'),\n", + " Text(2.710931174089069, 9.883636363636384, 'gini = 0.0\\nsamples = 2660\\nvalue = [0, 2660]'),\n", + " Text(8.132793522267207, 9.883636363636384, 'gini = 0.005\\nsamples = 732\\nvalue = [2, 730]'),\n", + " Text(10.843724696356276, 29.650909090909096, 'gini = 0.041\\nsamples = 48\\nvalue = [1, 47]'),\n", + " Text(18.976518218623482, 49.418181818181836, 'X[1] <= 0.127\\ngini = 0.019\\nsamples = 409\\nvalue = [4, 405]'),\n", + " Text(16.265587044534414, 29.650909090909096, 'X[1] <= 0.112\\ngini = 0.035\\nsamples = 226\\nvalue = [4, 222]'),\n", + " Text(13.554655870445345, 9.883636363636384, 'gini = 0.012\\nsamples = 165\\nvalue = [1, 164]'),\n", + " Text(18.976518218623482, 9.883636363636384, 'gini = 0.094\\nsamples = 61\\nvalue = [3, 58]'),\n", + " Text(21.68744939271255, 29.650909090909096, 'gini = 0.0\\nsamples = 183\\nvalue = [0, 183]'),\n", + " Text(35.242105263157896, 69.18545454545455, 'X[2] <= 0.633\\ngini = 0.028\\nsamples = 1839\\nvalue = [26, 1813]'),\n", + " Text(29.820242914979758, 49.418181818181836, 'X[5] <= 0.403\\ngini = 0.016\\nsamples = 1324\\nvalue = [11, 1313]'),\n", + " Text(27.10931174089069, 29.650909090909096, 'X[38] <= 0.5\\ngini = 0.012\\nsamples = 1287\\nvalue = [8, 1279]'),\n", + " Text(24.39838056680162, 9.883636363636384, 'gini = 0.01\\nsamples = 1253\\nvalue = [6, 1247]'),\n", + " Text(29.820242914979758, 9.883636363636384, 'gini = 0.111\\nsamples = 34\\nvalue = [2, 32]'),\n", + " Text(32.53117408906883, 29.650909090909096, 'gini = 0.149\\nsamples = 37\\nvalue = [3, 34]'),\n", + " Text(40.663967611336034, 49.418181818181836, 'X[45] <= 0.5\\ngini = 0.057\\nsamples = 515\\nvalue = [15, 500]'),\n", + " Text(37.953036437246965, 29.650909090909096, 'X[44] <= 0.5\\ngini = 0.049\\nsamples = 482\\nvalue = [12, 470]'),\n", + " Text(35.242105263157896, 9.883636363636384, 'gini = 0.037\\nsamples = 428\\nvalue = [8, 420]'),\n", + " Text(40.663967611336034, 9.883636363636384, 'gini = 0.137\\nsamples = 54\\nvalue = [4, 50]'),\n", + " Text(43.3748987854251, 29.650909090909096, 'gini = 0.165\\nsamples = 33\\nvalue = [3, 30]'),\n", + " Text(66.41781376518219, 88.95272727272729, 'X[2] <= 0.767\\ngini = 0.083\\nsamples = 3605\\nvalue = [157, 3448]'),\n", + " Text(56.92955465587045, 69.18545454545455, 'X[3] <= 0.047\\ngini = 0.062\\nsamples = 3143\\nvalue = [101, 3042]'),\n", + " Text(54.21862348178138, 49.418181818181836, 'X[36] <= 0.5\\ngini = 0.059\\nsamples = 3115\\nvalue = [95, 3020]'),\n", + " Text(48.79676113360324, 29.650909090909096, 'X[42] <= 0.5\\ngini = 0.051\\nsamples = 2879\\nvalue = [75, 2804]'),\n", + " Text(46.08582995951417, 9.883636363636384, 'gini = 0.043\\nsamples = 2719\\nvalue = [60, 2659]'),\n", + " Text(51.50769230769231, 9.883636363636384, 'gini = 0.17\\nsamples = 160\\nvalue = [15, 145]'),\n", + " Text(59.640485829959516, 29.650909090909096, 'X[1] <= 0.118\\ngini = 0.155\\nsamples = 236\\nvalue = [20, 216]'),\n", + " Text(56.92955465587045, 9.883636363636384, 'gini = 0.21\\nsamples = 134\\nvalue = [16, 118]'),\n", + " Text(62.351417004048585, 9.883636363636384, 'gini = 0.075\\nsamples = 102\\nvalue = [4, 98]'),\n", + " Text(59.640485829959516, 49.418181818181836, 'gini = 0.337\\nsamples = 28\\nvalue = [6, 22]'),\n", + " Text(75.90607287449393, 69.18545454545455, 'X[0] <= 0.349\\ngini = 0.213\\nsamples = 462\\nvalue = [56, 406]'),\n", + " Text(67.77327935222672, 49.418181818181836, 'X[0] <= 0.253\\ngini = 0.145\\nsamples = 203\\nvalue = [16, 187]'),\n", + " Text(65.06234817813765, 29.650909090909096, 'gini = 0.346\\nsamples = 27\\nvalue = [6, 21]'),\n", + " Text(70.48421052631579, 29.650909090909096, 'X[42] <= 0.5\\ngini = 0.107\\nsamples = 176\\nvalue = [10, 166]'),\n", + " Text(67.77327935222672, 9.883636363636384, 'gini = 0.033\\nsamples = 119\\nvalue = [2, 117]'),\n", + " Text(73.19514170040486, 9.883636363636384, 'gini = 0.241\\nsamples = 57\\nvalue = [8, 49]'),\n", + " Text(84.03886639676114, 49.418181818181836, 'X[44] <= 0.5\\ngini = 0.261\\nsamples = 259\\nvalue = [40, 219]'),\n", + " Text(81.32793522267207, 29.650909090909096, 'X[0] <= 0.637\\ngini = 0.238\\nsamples = 232\\nvalue = [32, 200]'),\n", + " Text(78.617004048583, 9.883636363636384, 'gini = 0.26\\nsamples = 208\\nvalue = [32, 176]'),\n", + " Text(84.03886639676114, 9.883636363636384, 'gini = 0.0\\nsamples = 24\\nvalue = [0, 24]'),\n", + " Text(86.7497975708502, 29.650909090909096, 'gini = 0.417\\nsamples = 27\\nvalue = [8, 19]'),\n", + " Text(139.2740890688259, 108.72, 'X[2] <= 0.767\\ngini = 0.184\\nsamples = 2069\\nvalue = [212, 1857]'),\n", + " Text(121.31417004048583, 88.95272727272729, 'X[0] <= 0.295\\ngini = 0.128\\nsamples = 1555\\nvalue = [107, 1448]'),\n", + " Text(104.37085020242915, 69.18545454545455, 'X[0] <= 0.116\\ngini = 0.068\\nsamples = 999\\nvalue = [35, 964]'),\n", + " Text(94.88259109311741, 49.418181818181836, 'X[2] <= 0.5\\ngini = 0.017\\nsamples = 350\\nvalue = [3, 347]'),\n", + " Text(92.17165991902834, 29.650909090909096, 'gini = 0.07\\nsamples = 55\\nvalue = [2, 53]'),\n", + " Text(97.59352226720648, 29.650909090909096, 'X[2] <= 0.633\\ngini = 0.007\\nsamples = 295\\nvalue = [1, 294]'),\n", + " Text(94.88259109311741, 9.883636363636384, 'gini = 0.0\\nsamples = 270\\nvalue = [0, 270]'),\n", + " Text(100.30445344129555, 9.883636363636384, 'gini = 0.077\\nsamples = 25\\nvalue = [1, 24]'),\n", + " Text(113.8591093117409, 49.418181818181836, 'X[58] <= 0.5\\ngini = 0.094\\nsamples = 649\\nvalue = [32, 617]'),\n", + " Text(108.43724696356276, 29.650909090909096, 'X[51] <= 0.5\\ngini = 0.122\\nsamples = 446\\nvalue = [29, 417]'),\n", + " Text(105.72631578947369, 9.883636363636384, 'gini = 0.146\\nsamples = 352\\nvalue = [28, 324]'),\n", + " Text(111.14817813765183, 9.883636363636384, 'gini = 0.021\\nsamples = 94\\nvalue = [1, 93]'),\n", + " Text(119.28097165991903, 29.650909090909096, 'X[5] <= 0.668\\ngini = 0.029\\nsamples = 203\\nvalue = [3, 200]'),\n", + " Text(116.57004048582996, 9.883636363636384, 'gini = 0.011\\nsamples = 180\\nvalue = [1, 179]'),\n", + " Text(121.9919028340081, 9.883636363636384, 'gini = 0.159\\nsamples = 23\\nvalue = [2, 21]'),\n", + " Text(138.25748987854251, 69.18545454545455, 'X[24] <= 0.5\\ngini = 0.225\\nsamples = 556\\nvalue = [72, 484]'),\n", + " Text(132.83562753036438, 49.418181818181836, 'X[0] <= 0.5\\ngini = 0.162\\nsamples = 359\\nvalue = [32, 327]'),\n", + " Text(130.1246963562753, 29.650909090909096, 'X[26] <= 0.5\\ngini = 0.12\\nsamples = 264\\nvalue = [17, 247]'),\n", + " Text(127.41376518218624, 9.883636363636384, 'gini = 0.095\\nsamples = 240\\nvalue = [12, 228]'),\n", + " Text(132.83562753036438, 9.883636363636384, 'gini = 0.33\\nsamples = 24\\nvalue = [5, 19]'),\n", + " Text(135.54655870445345, 29.650909090909096, 'gini = 0.266\\nsamples = 95\\nvalue = [15, 80]'),\n", + " Text(143.67935222672065, 49.418181818181836, 'X[1] <= 0.206\\ngini = 0.324\\nsamples = 197\\nvalue = [40, 157]'),\n", + " Text(140.96842105263158, 29.650909090909096, 'X[5] <= 0.454\\ngini = 0.285\\nsamples = 174\\nvalue = [30, 144]'),\n", + " Text(138.25748987854251, 9.883636363636384, 'gini = 0.142\\nsamples = 39\\nvalue = [3, 36]'),\n", + " Text(143.67935222672065, 9.883636363636384, 'gini = 0.32\\nsamples = 135\\nvalue = [27, 108]'),\n", + " Text(146.39028340080972, 29.650909090909096, 'gini = 0.491\\nsamples = 23\\nvalue = [10, 13]'),\n", + " Text(157.234008097166, 88.95272727272729, 'X[0] <= 0.144\\ngini = 0.325\\nsamples = 514\\nvalue = [105, 409]'),\n", + " Text(154.52307692307693, 69.18545454545455, 'gini = 0.032\\nsamples = 123\\nvalue = [2, 121]'),\n", + " Text(159.94493927125507, 69.18545454545455, 'X[58] <= 0.5\\ngini = 0.388\\nsamples = 391\\nvalue = [103, 288]'),\n", + " Text(154.52307692307693, 49.418181818181836, 'X[0] <= 0.349\\ngini = 0.436\\nsamples = 212\\nvalue = [68, 144]'),\n", + " Text(151.81214574898786, 29.650909090909096, 'gini = 0.379\\nsamples = 138\\nvalue = [35, 103]'),\n", + " Text(157.234008097166, 29.650909090909096, 'gini = 0.494\\nsamples = 74\\nvalue = [33, 41]'),\n", + " Text(165.3668016194332, 49.418181818181836, 'X[1] <= 0.1\\ngini = 0.315\\nsamples = 179\\nvalue = [35, 144]'),\n", + " Text(162.65587044534414, 29.650909090909096, 'gini = 0.165\\nsamples = 77\\nvalue = [7, 70]'),\n", + " Text(168.07773279352227, 29.650909090909096, 'gini = 0.398\\nsamples = 102\\nvalue = [28, 74]'),\n", + " Text(97.76295546558705, 128.48727272727274, 'gini = 0.488\\nsamples = 52\\nvalue = [30, 22]'),\n", + " Text(173.4995951417004, 148.25454545454545, 'X[0] <= 0.199\\ngini = 0.383\\nsamples = 679\\nvalue = [175, 504]'),\n", + " Text(170.78866396761134, 128.48727272727274, 'gini = 0.126\\nsamples = 148\\nvalue = [10, 138]'),\n", + " Text(176.21052631578948, 128.48727272727274, 'X[2] <= 0.9\\ngini = 0.428\\nsamples = 531\\nvalue = [165, 366]'),\n", + " Text(173.4995951417004, 108.72, 'X[36] <= 0.5\\ngini = 0.358\\nsamples = 390\\nvalue = [91, 299]'),\n", + " Text(170.78866396761134, 88.95272727272729, 'X[1] <= 0.087\\ngini = 0.284\\nsamples = 297\\nvalue = [51, 246]'),\n", + " Text(168.07773279352227, 69.18545454545455, 'gini = 0.188\\nsamples = 105\\nvalue = [11, 94]'),\n", + " Text(173.4995951417004, 69.18545454545455, 'X[1] <= 0.106\\ngini = 0.33\\nsamples = 192\\nvalue = [40, 152]'),\n", + " Text(170.78866396761134, 49.418181818181836, 'gini = 0.475\\nsamples = 31\\nvalue = [12, 19]'),\n", + " Text(176.21052631578948, 49.418181818181836, 'X[1] <= 0.129\\ngini = 0.287\\nsamples = 161\\nvalue = [28, 133]'),\n", + " Text(173.4995951417004, 29.650909090909096, 'gini = 0.202\\nsamples = 70\\nvalue = [8, 62]'),\n", + " Text(178.92145748987855, 29.650909090909096, 'gini = 0.343\\nsamples = 91\\nvalue = [20, 71]'),\n", + " Text(176.21052631578948, 88.95272727272729, 'gini = 0.49\\nsamples = 93\\nvalue = [40, 53]'),\n", + " Text(178.92145748987855, 108.72, 'gini = 0.499\\nsamples = 141\\nvalue = [74, 67]'),\n", + " Text(181.63238866396762, 168.0218181818182, 'X[3] <= 0.31\\ngini = 0.038\\nsamples = 209\\nvalue = [205, 4]'),\n", + " Text(178.92145748987855, 148.25454545454545, 'gini = 0.0\\nsamples = 186\\nvalue = [186, 0]'),\n", + " Text(184.3433198380567, 148.25454545454545, 'gini = 0.287\\nsamples = 23\\nvalue = [19, 4]'),\n", + " Text(288.7353491902834, 187.7890909090909, 'X[2] <= 0.767\\ngini = 0.495\\nsamples = 10490\\nvalue = [4696, 5794]'),\n", + " Text(258.25855263157894, 168.0218181818182, 'X[3] <= 0.051\\ngini = 0.445\\nsamples = 7373\\nvalue = [2462, 4911]'),\n", + " Text(230.51386639676113, 148.25454545454545, 'X[2] <= 0.433\\ngini = 0.421\\nsamples = 7010\\nvalue = [2109, 4901]'),\n", + " Text(203.31983805668017, 128.48727272727274, 'X[5] <= 0.454\\ngini = 0.164\\nsamples = 1073\\nvalue = [97, 976]'),\n", + " Text(195.18704453441296, 108.72, 'X[1] <= 0.126\\ngini = 0.118\\nsamples = 859\\nvalue = [54, 805]'),\n", + " Text(187.05425101214576, 88.95272727272729, 'X[1] <= 0.123\\ngini = 0.165\\nsamples = 497\\nvalue = [45, 452]'),\n", + " Text(184.3433198380567, 69.18545454545455, 'X[5] <= 0.286\\ngini = 0.151\\nsamples = 474\\nvalue = [39, 435]'),\n", + " Text(181.63238866396762, 49.418181818181836, 'gini = 0.0\\nsamples = 64\\nvalue = [0, 64]'),\n", + " Text(187.05425101214576, 49.418181818181836, 'X[0] <= 0.267\\ngini = 0.172\\nsamples = 410\\nvalue = [39, 371]'),\n", + " Text(184.3433198380567, 29.650909090909096, 'gini = 0.074\\nsamples = 104\\nvalue = [4, 100]'),\n", + " Text(189.76518218623482, 29.650909090909096, 'X[2] <= 0.3\\ngini = 0.203\\nsamples = 306\\nvalue = [35, 271]'),\n", + " Text(187.05425101214576, 9.883636363636384, 'gini = 0.14\\nsamples = 171\\nvalue = [13, 158]'),\n", + " Text(192.4761133603239, 9.883636363636384, 'gini = 0.273\\nsamples = 135\\nvalue = [22, 113]'),\n", + " Text(189.76518218623482, 69.18545454545455, 'gini = 0.386\\nsamples = 23\\nvalue = [6, 17]'),\n", + " Text(203.31983805668017, 88.95272727272729, 'X[7] <= 0.5\\ngini = 0.048\\nsamples = 362\\nvalue = [9, 353]'),\n", + " Text(200.6089068825911, 69.18545454545455, 'X[54] <= 0.5\\ngini = 0.036\\nsamples = 325\\nvalue = [6, 319]'),\n", + " Text(197.89797570850203, 49.418181818181836, 'X[2] <= 0.233\\ngini = 0.026\\nsamples = 299\\nvalue = [4, 295]'),\n", + " Text(195.18704453441296, 29.650909090909096, 'gini = 0.0\\nsamples = 128\\nvalue = [0, 128]'),\n", + " Text(200.6089068825911, 29.650909090909096, 'X[0] <= 0.363\\ngini = 0.046\\nsamples = 171\\nvalue = [4, 167]'),\n", + " Text(197.89797570850203, 9.883636363636384, 'gini = 0.019\\nsamples = 102\\nvalue = [1, 101]'),\n", + " Text(203.31983805668017, 9.883636363636384, 'gini = 0.083\\nsamples = 69\\nvalue = [3, 66]'),\n", + " Text(203.31983805668017, 49.418181818181836, 'gini = 0.142\\nsamples = 26\\nvalue = [2, 24]'),\n", + " Text(206.03076923076924, 69.18545454545455, 'gini = 0.149\\nsamples = 37\\nvalue = [3, 34]'),\n", + " Text(211.45263157894738, 108.72, 'X[0] <= 0.267\\ngini = 0.321\\nsamples = 214\\nvalue = [43, 171]'),\n", + " Text(208.7417004048583, 88.95272727272729, 'gini = 0.198\\nsamples = 63\\nvalue = [7, 56]'),\n", + " Text(214.16356275303644, 88.95272727272729, 'gini = 0.363\\nsamples = 151\\nvalue = [36, 115]'),\n", + " Text(257.7078947368421, 128.48727272727274, 'X[4] <= 0.409\\ngini = 0.448\\nsamples = 5937\\nvalue = [2012, 3925]'),\n", + " Text(240.25627530364375, 108.72, 'X[0] <= 0.253\\ngini = 0.436\\nsamples = 5699\\nvalue = [1829, 3870]'),\n", + " Text(223.65182186234819, 88.95272727272729, 'X[0] <= 0.158\\ngini = 0.328\\nsamples = 1941\\nvalue = [402, 1539]'),\n", + " Text(214.16356275303644, 69.18545454545455, 'X[0] <= 0.089\\ngini = 0.224\\nsamples = 700\\nvalue = [90, 610]'),\n", + " Text(211.45263157894738, 49.418181818181836, 'gini = 0.062\\nsamples = 155\\nvalue = [5, 150]'),\n", + " Text(216.8744939271255, 49.418181818181836, 'X[2] <= 0.567\\ngini = 0.263\\nsamples = 545\\nvalue = [85, 460]'),\n", + " Text(211.45263157894738, 29.650909090909096, 'X[5] <= 0.444\\ngini = 0.201\\nsamples = 300\\nvalue = [34, 266]'),\n", + " Text(208.7417004048583, 9.883636363636384, 'gini = 0.153\\nsamples = 204\\nvalue = [17, 187]'),\n", + " Text(214.16356275303644, 9.883636363636384, 'gini = 0.291\\nsamples = 96\\nvalue = [17, 79]'),\n", + " Text(222.29635627530365, 29.650909090909096, 'X[5] <= 0.352\\ngini = 0.33\\nsamples = 245\\nvalue = [51, 194]'),\n", + " Text(219.58542510121458, 9.883636363636384, 'gini = 0.069\\nsamples = 28\\nvalue = [1, 27]'),\n", + " Text(225.00728744939272, 9.883636363636384, 'gini = 0.355\\nsamples = 217\\nvalue = [50, 167]'),\n", + " Text(233.14008097165993, 69.18545454545455, 'X[36] <= 0.5\\ngini = 0.376\\nsamples = 1241\\nvalue = [312, 929]'),\n", + " Text(230.42914979757086, 49.418181818181836, 'X[1] <= 0.049\\ngini = 0.354\\nsamples = 1115\\nvalue = [256, 859]'),\n", + " Text(227.7182186234818, 29.650909090909096, 'gini = 0.164\\nsamples = 155\\nvalue = [14, 141]'),\n", + " Text(233.14008097165993, 29.650909090909096, 'X[2] <= 0.567\\ngini = 0.377\\nsamples = 960\\nvalue = [242, 718]'),\n", + " Text(230.42914979757086, 9.883636363636384, 'gini = 0.323\\nsamples = 569\\nvalue = [115, 454]'),\n", + " Text(235.851012145749, 9.883636363636384, 'gini = 0.439\\nsamples = 391\\nvalue = [127, 264]'),\n", + " Text(235.851012145749, 49.418181818181836, 'gini = 0.494\\nsamples = 126\\nvalue = [56, 70]'),\n", + " Text(256.86072874493925, 88.95272727272729, 'X[5] <= 0.342\\ngini = 0.471\\nsamples = 3758\\nvalue = [1427, 2331]'),\n", + " Text(249.40566801619434, 69.18545454545455, 'X[50] <= 0.5\\ngini = 0.27\\nsamples = 392\\nvalue = [63, 329]'),\n", + " Text(246.69473684210527, 49.418181818181836, 'X[2] <= 0.567\\ngini = 0.195\\nsamples = 292\\nvalue = [32, 260]'),\n", + " Text(243.9838056680162, 29.650909090909096, 'X[0] <= 0.61\\ngini = 0.112\\nsamples = 168\\nvalue = [10, 158]'),\n", + " Text(241.27287449392713, 9.883636363636384, 'gini = 0.193\\nsamples = 83\\nvalue = [9, 74]'),\n", + " Text(246.69473684210527, 9.883636363636384, 'gini = 0.023\\nsamples = 85\\nvalue = [1, 84]'),\n", + " Text(249.40566801619434, 29.650909090909096, 'gini = 0.292\\nsamples = 124\\nvalue = [22, 102]'),\n", + " Text(252.1165991902834, 49.418181818181836, 'gini = 0.428\\nsamples = 100\\nvalue = [31, 69]'),\n", + " Text(264.3157894736842, 69.18545454545455, 'X[2] <= 0.567\\ngini = 0.482\\nsamples = 3366\\nvalue = [1364, 2002]'),\n", + " Text(257.53846153846155, 49.418181818181836, 'X[43] <= 0.5\\ngini = 0.452\\nsamples = 1905\\nvalue = [656, 1249]'),\n", + " Text(254.82753036437248, 29.650909090909096, 'X[7] <= 0.5\\ngini = 0.458\\nsamples = 1807\\nvalue = [643, 1164]'),\n", + " Text(252.1165991902834, 9.883636363636384, 'gini = 0.469\\nsamples = 1574\\nvalue = [590, 984]'),\n", + " Text(257.53846153846155, 9.883636363636384, 'gini = 0.351\\nsamples = 233\\nvalue = [53, 180]'),\n", + " Text(260.2493927125506, 29.650909090909096, 'gini = 0.23\\nsamples = 98\\nvalue = [13, 85]'),\n", + " Text(271.0931174089069, 49.418181818181836, 'X[7] <= 0.5\\ngini = 0.5\\nsamples = 1461\\nvalue = [708, 753]'),\n", + " Text(265.67125506072875, 29.650909090909096, 'X[36] <= 0.5\\ngini = 0.5\\nsamples = 1286\\nvalue = [655, 631]'),\n", + " Text(262.9603238866397, 9.883636363636384, 'gini = 0.499\\nsamples = 1054\\nvalue = [502, 552]'),\n", + " Text(268.3821862348178, 9.883636363636384, 'gini = 0.449\\nsamples = 232\\nvalue = [153, 79]'),\n", + " Text(276.51497975708503, 29.650909090909096, 'X[47] <= 0.5\\ngini = 0.422\\nsamples = 175\\nvalue = [53, 122]'),\n", + " Text(273.80404858299596, 9.883636363636384, 'gini = 0.452\\nsamples = 139\\nvalue = [48, 91]'),\n", + " Text(279.2259109311741, 9.883636363636384, 'gini = 0.239\\nsamples = 36\\nvalue = [5, 31]'),\n", + " Text(275.1595141700405, 108.72, 'X[4] <= 0.457\\ngini = 0.355\\nsamples = 238\\nvalue = [183, 55]'),\n", + " Text(272.4485829959514, 88.95272727272729, 'X[0] <= 0.212\\ngini = 0.074\\nsamples = 181\\nvalue = [174, 7]'),\n", + " Text(269.73765182186236, 69.18545454545455, 'gini = 0.278\\nsamples = 24\\nvalue = [20, 4]'),\n", + " Text(275.1595141700405, 69.18545454545455, 'gini = 0.037\\nsamples = 157\\nvalue = [154, 3]'),\n", + " Text(277.87044534412956, 88.95272727272729, 'gini = 0.266\\nsamples = 57\\nvalue = [9, 48]'),\n", + " Text(286.00323886639677, 148.25454545454545, 'X[0] <= 0.61\\ngini = 0.054\\nsamples = 363\\nvalue = [353, 10]'),\n", + " Text(283.2923076923077, 128.48727272727274, 'X[1] <= 0.023\\ngini = 0.006\\nsamples = 323\\nvalue = [322, 1]'),\n", + " Text(280.58137651821863, 108.72, 'gini = 0.083\\nsamples = 23\\nvalue = [22, 1]'),\n", + " Text(286.00323886639677, 108.72, 'gini = 0.0\\nsamples = 300\\nvalue = [300, 0]'),\n", + " Text(288.71417004048584, 128.48727272727274, 'gini = 0.349\\nsamples = 40\\nvalue = [31, 9]'),\n", + " Text(319.21214574898784, 168.0218181818182, 'X[3] <= 0.051\\ngini = 0.406\\nsamples = 3117\\nvalue = [2234, 883]'),\n", + " Text(309.04615384615386, 148.25454545454545, 'X[4] <= 0.409\\ngini = 0.443\\nsamples = 2658\\nvalue = [1777, 881]'),\n", + " Text(296.84696356275305, 128.48727272727274, 'X[5] <= 0.321\\ngini = 0.464\\nsamples = 2385\\nvalue = [1514, 871]'),\n", + " Text(291.4251012145749, 108.72, 'X[50] <= 0.5\\ngini = 0.462\\nsamples = 204\\nvalue = [74, 130]'),\n", + " Text(288.71417004048584, 88.95272727272729, 'gini = 0.407\\nsamples = 155\\nvalue = [44, 111]'),\n", + " Text(294.136032388664, 88.95272727272729, 'gini = 0.475\\nsamples = 49\\nvalue = [30, 19]'),\n", + " Text(302.2688259109312, 108.72, 'X[0] <= 0.116\\ngini = 0.449\\nsamples = 2181\\nvalue = [1440, 741]'),\n", + " Text(299.5578947368421, 88.95272727272729, 'gini = 0.338\\nsamples = 51\\nvalue = [11, 40]'),\n", + " Text(304.97975708502025, 88.95272727272729, 'X[3] <= 0.031\\ngini = 0.442\\nsamples = 2130\\nvalue = [1429, 701]'),\n", + " Text(302.2688259109312, 69.18545454545455, 'X[36] <= 0.5\\ngini = 0.435\\nsamples = 2090\\nvalue = [1422, 668]'),\n", + " Text(292.78056680161944, 49.418181818181836, 'X[42] <= 0.5\\ngini = 0.46\\nsamples = 1484\\nvalue = [951, 533]'),\n", + " Text(287.3587044534413, 29.650909090909096, 'X[44] <= 0.5\\ngini = 0.494\\nsamples = 708\\nvalue = [394, 314]'),\n", + " Text(284.64777327935224, 9.883636363636384, 'gini = 0.5\\nsamples = 440\\nvalue = [221, 219]'),\n", + " Text(290.0696356275304, 9.883636363636384, 'gini = 0.458\\nsamples = 268\\nvalue = [173, 95]'),\n", + " Text(298.2024291497976, 29.650909090909096, 'X[2] <= 0.9\\ngini = 0.405\\nsamples = 776\\nvalue = [557, 219]'),\n", + " Text(295.4914979757085, 9.883636363636384, 'gini = 0.436\\nsamples = 566\\nvalue = [384, 182]'),\n", + " Text(300.91336032388665, 9.883636363636384, 'gini = 0.29\\nsamples = 210\\nvalue = [173, 37]'),\n", + " Text(311.7570850202429, 49.418181818181836, 'X[7] <= 0.5\\ngini = 0.346\\nsamples = 606\\nvalue = [471, 135]'),\n", + " Text(309.04615384615386, 29.650909090909096, 'X[0] <= 0.158\\ngini = 0.316\\nsamples = 554\\nvalue = [445, 109]'),\n", + " Text(306.3352226720648, 9.883636363636384, 'gini = 0.487\\nsamples = 31\\nvalue = [18, 13]'),\n", + " Text(311.7570850202429, 9.883636363636384, 'gini = 0.3\\nsamples = 523\\nvalue = [427, 96]'),\n", + " Text(314.468016194332, 29.650909090909096, 'gini = 0.5\\nsamples = 52\\nvalue = [26, 26]'),\n", + " Text(307.6906882591093, 69.18545454545455, 'gini = 0.289\\nsamples = 40\\nvalue = [7, 33]'),\n", + " Text(321.24534412955467, 128.48727272727274, 'X[4] <= 0.457\\ngini = 0.071\\nsamples = 273\\nvalue = [263, 10]'),\n", + " Text(318.5344129554656, 108.72, 'X[10] <= 0.5\\ngini = 0.018\\nsamples = 220\\nvalue = [218, 2]'),\n", + " Text(315.82348178137653, 88.95272727272729, 'X[0] <= 0.459\\ngini = 0.01\\nsamples = 197\\nvalue = [196, 1]'),\n", + " Text(313.11255060728746, 69.18545454545455, 'gini = 0.0\\nsamples = 155\\nvalue = [155, 0]'),\n", + " Text(318.5344129554656, 69.18545454545455, 'gini = 0.046\\nsamples = 42\\nvalue = [41, 1]'),\n", + " Text(321.24534412955467, 88.95272727272729, 'gini = 0.083\\nsamples = 23\\nvalue = [22, 1]'),\n", + " Text(323.95627530364374, 108.72, 'gini = 0.256\\nsamples = 53\\nvalue = [45, 8]'),\n", + " Text(329.3781376518219, 148.25454545454545, 'X[0] <= 0.623\\ngini = 0.009\\nsamples = 459\\nvalue = [457, 2]'),\n", + " Text(326.6672064777328, 128.48727272727274, 'gini = 0.0\\nsamples = 411\\nvalue = [411, 0]'),\n", + " Text(332.08906882591094, 128.48727272727274, 'gini = 0.08\\nsamples = 48\\nvalue = [46, 2]')]" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "tree.plot_tree(dtree_final.fit(X_train,Y_train))" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": { + "collapsed": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "20895 0\n", + "3384 1\n", + "1832 1\n", + "18919 0\n", + "31685 1\n", + " ..\n", + "5695 0\n", + "8006 0\n", + "17745 1\n", + "17931 0\n", + "13151 0\n", + "Name: 5_C1, Length: 22792, dtype: uint8\n" + ] + } + ], + "source": [ + "print (X_train.iloc[:,29])" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -1432,7 +1722,7 @@ }, { "cell_type": "code", - "execution_count": 199, + "execution_count": 69, "metadata": {}, "outputs": [ { @@ -1577,7 +1867,7 @@ "4 28 A2 338409 B0 13 C1 D3 E2 F1 G1 0 0 40 H1 SMALL" ] }, - "execution_count": 199, + "execution_count": 69, "metadata": {}, "output_type": "execute_result" } @@ -1588,26 +1878,58 @@ }, { "cell_type": "code", - "execution_count": 200, + "execution_count": 135, + "metadata": {}, + "outputs": [], + "source": [ + "df = pd.get_dummies(data, columns = [1,3,5,6,7,8,9,13], drop_first = True)" + ] + }, + { + "cell_type": "code", + "execution_count": 136, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 32561 entries, 0 to 32560\n", + "Columns: 101 entries, 0 to 13_H9\n", + "dtypes: int64(6), object(1), uint8(94)\n", + "memory usage: 4.7+ MB\n" + ] + } + ], + "source": [ + "df.info()" + ] + }, + { + "cell_type": "code", + "execution_count": 137, "metadata": {}, "outputs": [], "source": [ - "df = pd.get_dummies(data, columns = [1,3,4,5,6,7,8,9,13], drop_first = True)" + "df.insert(11,'1_A5', 0)\n", + "df.insert(39,'6_D11', 0)\n", + "df.insert(96,'13_H4', 0)" ] }, { "cell_type": "code", - "execution_count": 201, + "execution_count": 138, "metadata": {}, "outputs": [], "source": [ - "X_nn = data_norm.drop(14, axis = 1)\n", - "Y_nn = data_norm[14]" + "X_nn = df.drop(14, axis = 1)\n", + "Y_nn = df[14]" ] }, { "cell_type": "code", - "execution_count": 202, + "execution_count": 139, "metadata": {}, "outputs": [], "source": [ @@ -1616,7 +1938,7 @@ }, { "cell_type": "code", - "execution_count": 254, + "execution_count": 140, "metadata": {}, "outputs": [], "source": [ @@ -1627,7 +1949,7 @@ }, { "cell_type": "code", - "execution_count": 255, + "execution_count": 141, "metadata": {}, "outputs": [ { @@ -1652,7 +1974,7 @@ }, { "cell_type": "code", - "execution_count": 256, + "execution_count": 142, "metadata": {}, "outputs": [ { @@ -1826,6 +2148,13 @@ "print ('Normalized Data Testing Error: ' + str(test_error))" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "They ended up being the same meaning that normalizing the data for a DT classifier is not necessary" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -1835,7 +2164,7 @@ }, { "cell_type": "code", - "execution_count": 219, + "execution_count": 143, "metadata": {}, "outputs": [], "source": [ @@ -1844,40 +2173,73 @@ }, { "cell_type": "code", - "execution_count": 220, + "execution_count": 144, "metadata": {}, "outputs": [], "source": [ - "# Split by categorical and numeric\n", - "futures_x = futures_final.iloc[:,[0,2,4,10,11,12]].values.astype(float)\n", - "futures_y = futures_final.iloc[:,[1,3,5,6,7,8,9,13]]\n", - "\n", - "# Scale the data using min max\n", - "min_max_scaler = preprocessing.MinMaxScaler()\n", - "futures_x_scaled = min_max_scaler.fit_transform(futures_x)\n", - "futures_numeric = pd.DataFrame(futures_x_scaled)\n", - "\n", - "# get dummies for all the categorical features in futures_y\n", - "cats_y = [1,3,5,6,7,8,9,13]\n", - "futures_cats = pd.get_dummies(futures, cats_y, drop_first = True)\n", - "\n", - "# merge the numerical and categorical data\n", - "futures_norm = futures_numeric.merge(futures_cats, left_index= True, right_index = True)\n", - "\n", - "# Data split for into labels and features\n", - "futures_X = data_norm.drop(14, axis = 1)\n", - "futures_Y = data_norm[14]\n", - "\n", - "# Make the train and test splits\n", - "fut_X_train, fut_X_test , fut_Y_train, fut_Y_test = train_test_split(futures_X,futures_Y, test_size = 0.3, random_state = 101)\n", + "futures_final = pd.get_dummies(futures, columns = [1,3,5,6,7,8,9,13], drop_first = True)" + ] + }, + { + "cell_type": "code", + "execution_count": 145, + "metadata": {}, + "outputs": [], + "source": [ + "futures_final.insert(8,'1_A2',0)\n", + "futures_final.insert(44,'6_D3',0)\n", + "futures_final.insert(62,'13_H1',0)\n", + "futures_final.insert(97,'13_H41',0)" + ] + }, + { + "cell_type": "code", + "execution_count": 146, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 7684 entries, 0 to 7683\n", + "Columns: 103 entries, 0 to 13_H9\n", + "dtypes: int64(10), uint8(93)\n", + "memory usage: 1.3 MB\n" + ] + } + ], + "source": [ + "futures_final.info()" + ] + }, + { + "cell_type": "code", + "execution_count": 151, + "metadata": {}, + "outputs": [], + "source": [ + "x = futures_final.columns\n", + "y = X_nn.columns\n", "\n", + "for item in x:\n", + " if item not in y:\n", + " print (item)" + ] + }, + { + "cell_type": "code", + "execution_count": 147, + "metadata": {}, + "outputs": [], + "source": [ "# Train using the final model on normalized data\n", - "futures_predictions = dtree_final.predict(X_test)" + "futures_predictions = dtree_nn.predict(futures_final)" ] }, { "cell_type": "code", - "execution_count": 221, + "execution_count": 148, "metadata": {}, "outputs": [], "source": [ @@ -1893,7 +2255,7 @@ }, { "cell_type": "code", - "execution_count": 222, + "execution_count": 149, "metadata": {}, "outputs": [], "source": [ @@ -1902,7 +2264,7 @@ }, { "cell_type": "code", - "execution_count": 223, + "execution_count": 150, "metadata": {}, "outputs": [ { @@ -1996,7 +2358,7 @@ " 0\n", " 40\n", " H0\n", - " SMALL\n", + " LARGE\n", " \n", " \n", " 3\n", @@ -2032,7 +2394,7 @@ " 0\n", " 32\n", " H0\n", - " LARGE\n", + " SMALL\n", " \n", " \n", "\n", @@ -2042,12 +2404,12 @@ " 0_x 1 2 3 4 5 6 7 8 9 10 11 12 13 0_y\n", "0 38 A0 89814 B1 9 C1 D1 E1 F1 G0 0 0 50 H0 SMALL\n", "1 28 A1 336951 B2 12 C1 D2 E1 F1 G0 0 0 40 H0 SMALL\n", - "2 44 A0 160323 B3 10 C1 D0 E1 F0 G0 7688 0 40 H0 SMALL\n", + "2 44 A0 160323 B3 10 C1 D0 E1 F0 G0 7688 0 40 H0 LARGE\n", "3 18 ? 103497 B3 10 C0 ? E0 F1 G1 0 0 30 H0 SMALL\n", - "4 63 A3 104626 B5 15 C1 D5 E1 F1 G0 3103 0 32 H0 LARGE" + "4 63 A3 104626 B5 15 C1 D5 E1 F1 G0 3103 0 32 H0 SMALL" ] }, - "execution_count": 223, + "execution_count": 150, "metadata": {}, "output_type": "execute_result" }