Skip to content

Commit 0d55443

Browse files
committed
updated dtreeviz
1 parent ef574b2 commit 0d55443

File tree

3 files changed

+179
-28
lines changed

3 files changed

+179
-28
lines changed
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"cells": [],
3+
"metadata": {},
4+
"nbformat": 4,
5+
"nbformat_minor": 1
6+
}

Sklearn/DecisionTrees/Classification_Trees_using_Python.ipynb

Lines changed: 78 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,9 @@
4141
{
4242
"cell_type": "code",
4343
"execution_count": 2,
44-
"metadata": {},
44+
"metadata": {
45+
"collapsed": true
46+
},
4547
"outputs": [],
4648
"source": [
4749
"import pandas as pd\n",
@@ -54,7 +56,9 @@
5456
{
5557
"cell_type": "code",
5658
"execution_count": 4,
57-
"metadata": {},
59+
"metadata": {
60+
"collapsed": false
61+
},
5862
"outputs": [
5963
{
6064
"data": {
@@ -182,7 +186,9 @@
182186
{
183187
"cell_type": "code",
184188
"execution_count": 5,
185-
"metadata": {},
189+
"metadata": {
190+
"collapsed": false
191+
},
186192
"outputs": [
187193
{
188194
"data": {
@@ -231,7 +237,9 @@
231237
{
232238
"cell_type": "code",
233239
"execution_count": 6,
234-
"metadata": {},
240+
"metadata": {
241+
"collapsed": true
242+
},
235243
"outputs": [],
236244
"source": [
237245
"features = df.loc[:, df.columns != 'price']\n",
@@ -241,7 +249,9 @@
241249
{
242250
"cell_type": "code",
243251
"execution_count": 7,
244-
"metadata": {},
252+
"metadata": {
253+
"collapsed": true
254+
},
245255
"outputs": [],
246256
"source": [
247257
"# test_size: what proportion of original data is used for test set\n",
@@ -251,7 +261,9 @@
251261
{
252262
"cell_type": "code",
253263
"execution_count": 8,
254-
"metadata": {},
264+
"metadata": {
265+
"collapsed": false
266+
},
255267
"outputs": [
256268
{
257269
"name": "stdout",
@@ -268,7 +280,9 @@
268280
{
269281
"cell_type": "code",
270282
"execution_count": 9,
271-
"metadata": {},
283+
"metadata": {
284+
"collapsed": false
285+
},
272286
"outputs": [
273287
{
274288
"name": "stdout",
@@ -285,7 +299,9 @@
285299
{
286300
"cell_type": "code",
287301
"execution_count": 10,
288-
"metadata": {},
302+
"metadata": {
303+
"collapsed": false
304+
},
289305
"outputs": [
290306
{
291307
"name": "stdout",
@@ -302,7 +318,9 @@
302318
{
303319
"cell_type": "code",
304320
"execution_count": 11,
305-
"metadata": {},
321+
"metadata": {
322+
"collapsed": false
323+
},
306324
"outputs": [
307325
{
308326
"name": "stdout",
@@ -358,7 +376,9 @@
358376
{
359377
"cell_type": "code",
360378
"execution_count": 1,
361-
"metadata": {},
379+
"metadata": {
380+
"collapsed": true
381+
},
362382
"outputs": [],
363383
"source": [
364384
"from sklearn.tree import DecisionTreeC"
@@ -399,7 +419,9 @@
399419
{
400420
"cell_type": "code",
401421
"execution_count": 14,
402-
"metadata": {},
422+
"metadata": {
423+
"collapsed": false
424+
},
403425
"outputs": [
404426
{
405427
"data": {
@@ -444,7 +466,9 @@
444466
{
445467
"cell_type": "code",
446468
"execution_count": 15,
447-
"metadata": {},
469+
"metadata": {
470+
"collapsed": false
471+
},
448472
"outputs": [
449473
{
450474
"data": {
@@ -530,7 +554,9 @@
530554
{
531555
"cell_type": "code",
532556
"execution_count": 23,
533-
"metadata": {},
557+
"metadata": {
558+
"collapsed": false
559+
},
534560
"outputs": [
535561
{
536562
"data": {
@@ -613,7 +639,9 @@
613639
{
614640
"cell_type": "code",
615641
"execution_count": 42,
616-
"metadata": {},
642+
"metadata": {
643+
"collapsed": false
644+
},
617645
"outputs": [
618646
{
619647
"data": {
@@ -642,7 +670,9 @@
642670
{
643671
"cell_type": "code",
644672
"execution_count": 43,
645-
"metadata": {},
673+
"metadata": {
674+
"collapsed": false
675+
},
646676
"outputs": [
647677
{
648678
"data": {
@@ -663,7 +693,9 @@
663693
{
664694
"cell_type": "code",
665695
"execution_count": 44,
666-
"metadata": {},
696+
"metadata": {
697+
"collapsed": false
698+
},
667699
"outputs": [
668700
{
669701
"data": {
@@ -704,7 +736,9 @@
704736
{
705737
"cell_type": "code",
706738
"execution_count": 46,
707-
"metadata": {},
739+
"metadata": {
740+
"collapsed": false
741+
},
708742
"outputs": [
709743
{
710744
"name": "stdout",
@@ -721,7 +755,9 @@
721755
{
722756
"cell_type": "code",
723757
"execution_count": 47,
724-
"metadata": {},
758+
"metadata": {
759+
"collapsed": false
760+
},
725761
"outputs": [
726762
{
727763
"name": "stdout",
@@ -738,7 +774,9 @@
738774
{
739775
"cell_type": "code",
740776
"execution_count": 48,
741-
"metadata": {},
777+
"metadata": {
778+
"collapsed": false
779+
},
742780
"outputs": [
743781
{
744782
"name": "stdout",
@@ -755,7 +793,9 @@
755793
{
756794
"cell_type": "code",
757795
"execution_count": 49,
758-
"metadata": {},
796+
"metadata": {
797+
"collapsed": false
798+
},
759799
"outputs": [
760800
{
761801
"name": "stdout",
@@ -869,7 +909,9 @@
869909
{
870910
"cell_type": "code",
871911
"execution_count": 53,
872-
"metadata": {},
912+
"metadata": {
913+
"collapsed": false
914+
},
873915
"outputs": [
874916
{
875917
"data": {
@@ -969,7 +1011,9 @@
9691011
{
9701012
"cell_type": "code",
9711013
"execution_count": 57,
972-
"metadata": {},
1014+
"metadata": {
1015+
"collapsed": false
1016+
},
9731017
"outputs": [
9741018
{
9751019
"data": {
@@ -1006,7 +1050,9 @@
10061050
{
10071051
"cell_type": "code",
10081052
"execution_count": 58,
1009-
"metadata": {},
1053+
"metadata": {
1054+
"collapsed": false
1055+
},
10101056
"outputs": [
10111057
{
10121058
"data": {
@@ -1028,7 +1074,9 @@
10281074
{
10291075
"cell_type": "code",
10301076
"execution_count": 59,
1031-
"metadata": {},
1077+
"metadata": {
1078+
"collapsed": false
1079+
},
10321080
"outputs": [
10331081
{
10341082
"data": {
@@ -1070,7 +1118,9 @@
10701118
{
10711119
"cell_type": "code",
10721120
"execution_count": 60,
1073-
"metadata": {},
1121+
"metadata": {
1122+
"collapsed": false
1123+
},
10741124
"outputs": [
10751125
{
10761126
"name": "stdout",
@@ -1105,14 +1155,14 @@
11051155
"language_info": {
11061156
"codemirror_mode": {
11071157
"name": "ipython",
1108-
"version": 3
1158+
"version": 2
11091159
},
11101160
"file_extension": ".py",
11111161
"mimetype": "text/x-python",
11121162
"name": "python",
11131163
"nbconvert_exporter": "python",
1114-
"pygments_lexer": "ipython3",
1115-
"version": "3.6.4"
1164+
"pygments_lexer": "ipython2",
1165+
"version": "2.7.6"
11161166
}
11171167
},
11181168
"nbformat": 4,
Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
{
2+
"cells": [
3+
{
4+
"cell_type": "code",
5+
"execution_count": 1,
6+
"metadata": {
7+
"collapsed": true
8+
},
9+
"outputs": [],
10+
"source": [
11+
"from sklearn.datasets import *\n",
12+
"from sklearn import tree\n",
13+
"from dtreeviz.trees import *\n",
14+
"\n",
15+
"%matplotlib inline"
16+
]
17+
},
18+
{
19+
"cell_type": "code",
20+
"execution_count": 2,
21+
"metadata": {
22+
"collapsed": false
23+
},
24+
"outputs": [
25+
{
26+
"name": "stderr",
27+
"output_type": "stream",
28+
"text": [
29+
"Format: \"svg:cairo\" not recognized. Use one of: svg:svg:core\n"
30+
]
31+
},
32+
{
33+
"ename": "CalledProcessError",
34+
"evalue": "Command '['dot', '-Tsvg:cairo', '-o', '/var/folders/t8/0dm2sn8s5736hljnhb2ygd3w0000gn/T/DTreeViz_15764.svg', '/var/folders/t8/0dm2sn8s5736hljnhb2ygd3w0000gn/T/DTreeViz_15764']' returned non-zero exit status 1.",
35+
"output_type": "error",
36+
"traceback": [
37+
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
38+
"\u001b[0;31mCalledProcessError\u001b[0m Traceback (most recent call last)",
39+
"\u001b[0;32m<ipython-input-2-eeda48ea9aa8>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 11\u001b[0m ) \n\u001b[1;32m 12\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 13\u001b[0;31m \u001b[0mviz\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mview\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
40+
"\u001b[0;32m~/anaconda/envs/py37/lib/python3.7/site-packages/dtreeviz/trees.py\u001b[0m in \u001b[0;36mview\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 64\u001b[0m \u001b[0mtmp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtempfile\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgettempdir\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 65\u001b[0m \u001b[0msvgfilename\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34mf\"{tmp}/DTreeViz_{getpid()}.svg\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 66\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msave\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msvgfilename\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 67\u001b[0m \u001b[0mview\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msvgfilename\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 68\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
41+
"\u001b[0;32m~/anaconda/envs/py37/lib/python3.7/site-packages/dtreeviz/trees.py\u001b[0m in \u001b[0;36msave\u001b[0;34m(self, filename)\u001b[0m\n\u001b[1;32m 87\u001b[0m \u001b[0mcmd\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m\"dot\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34mf\"-T{format}:cairo\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"-o\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfilename\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdotfilename\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 88\u001b[0m \u001b[0;31m# print(' '.join(cmd))\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 89\u001b[0;31m \u001b[0mstdout\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstderr\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mrun\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcmd\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcapture_output\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcheck\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mquiet\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 90\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 91\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
42+
"\u001b[0;32m~/anaconda/envs/py37/lib/python3.7/site-packages/graphviz/backend.py\u001b[0m in \u001b[0;36mrun\u001b[0;34m(cmd, input, capture_output, check, quiet, **kwargs)\u001b[0m\n\u001b[1;32m 157\u001b[0m \u001b[0mstderr_write_bytes\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0merr\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mflush\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 158\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mcheck\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mproc\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreturncode\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 159\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mCalledProcessError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mproc\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreturncode\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcmd\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0moutput\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mout\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstderr\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0merr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 160\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 161\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mout\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0merr\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
43+
"\u001b[0;31mCalledProcessError\u001b[0m: Command '['dot', '-Tsvg:cairo', '-o', '/var/folders/t8/0dm2sn8s5736hljnhb2ygd3w0000gn/T/DTreeViz_15764.svg', '/var/folders/t8/0dm2sn8s5736hljnhb2ygd3w0000gn/T/DTreeViz_15764']' returned non-zero exit status 1."
44+
]
45+
}
46+
],
47+
"source": [
48+
"classifier = tree.DecisionTreeClassifier(max_depth=2) # limit depth of tree\n",
49+
"iris = load_iris()\n",
50+
"classifier.fit(iris.data, iris.target)\n",
51+
"\n",
52+
"viz = dtreeviz(classifier, \n",
53+
" iris.data, \n",
54+
" iris.target,\n",
55+
" target_name='variety',\n",
56+
" feature_names=iris.feature_names, \n",
57+
" class_names=[\"setosa\", \"versicolor\", \"virginica\"] # need class_names for classifier\n",
58+
" ) \n",
59+
" \n",
60+
"viz.view() "
61+
]
62+
},
63+
{
64+
"cell_type": "code",
65+
"execution_count": null,
66+
"metadata": {
67+
"collapsed": true
68+
},
69+
"outputs": [],
70+
"source": []
71+
}
72+
],
73+
"metadata": {
74+
"anaconda-cloud": {},
75+
"kernelspec": {
76+
"display_name": "Python [conda env:py37]",
77+
"language": "python",
78+
"name": "conda-env-py37-py"
79+
},
80+
"language_info": {
81+
"codemirror_mode": {
82+
"name": "ipython",
83+
"version": 3
84+
},
85+
"file_extension": ".py",
86+
"mimetype": "text/x-python",
87+
"name": "python",
88+
"nbconvert_exporter": "python",
89+
"pygments_lexer": "ipython3",
90+
"version": "3.7.1"
91+
}
92+
},
93+
"nbformat": 4,
94+
"nbformat_minor": 1
95+
}

0 commit comments

Comments
 (0)