Skip to content

Instantly share code, notes, and snippets.

@aflaxman
Created February 13, 2015 23:29
Show Gist options
  • Save aflaxman/d20c723f75d336865940 to your computer and use it in GitHub Desktop.
Save aflaxman/d20c723f75d336865940 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"metadata": {
"name": "",
"signature": "sha256:6929cf59a0ad9749133d84b1a42bf5743a132ead4a2887320fb1413e25f551e9"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "code",
"collapsed": false,
"input": [
"!date\n",
"import numpy as np, pandas as pd, matplotlib.pyplot as plt, seaborn as sns\n",
"%matplotlib inline\n",
"sns.set_context('poster')\n",
"sns.set_style('darkgrid')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Fri Feb 13 15:29:21 PST 2015\r\n"
]
}
],
"prompt_number": 17
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# set random seed for reproducibility\n",
"np.random.seed(12345)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 18
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# simulate some data from a familiar distribution\n",
"x_true = np.linspace(0,15,1000)\n",
"y_true = np.cos(x_true)\n",
"\n",
"sigma_true = .3\n",
"x_train = np.random.choice(x_true, size=100)\n",
"y_train = np.random.laplace(np.cos(x_train), sigma_true)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 19
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# load the decision tree module of sklearn\n",
"import sklearn.tree\n",
"\n",
"# make a DecisionTreeRegressor\n",
"dt = sklearn.tree.DecisionTreeRegressor(max_depth=3)\n",
"\n",
"# fit it to the simulated training data\n",
"X_train = x_train[:,None]\n",
"dt.fit(X_train, y_train)\n",
"\n",
"# predict for a range of x values\n",
"X_true = x_true[:,None] # horrible, but remember it!\n",
"y_pred = dt.predict(X_true)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 20
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# have a look\n",
"plt.plot(x_true, y_true, '-', label='Truth')\n",
"plt.plot(x_train, y_train, 's', label='Train')\n",
"plt.plot(x_true, y_pred, '-', label='Predicted')\n",
"plt.legend()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 21,
"text": [
"<matplotlib.legend.Legend at 0x2b2c8595ab90>"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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\nDwS0/mPLfx6iSGDp0gV9rlNcPIwXXni13+/xxhuv8dOf/jsvvPAaxcXF/d7PYKIEQkRERESi0m9/\nu8L72LLgwQe/w8SJBnfeebd3eVJS8oDe4/zzl/Lb364gLy9vQPsZTJRAiIiIiEhUmjp1eo/nycnJ\nZGfnnLHcl9PpBCAhIcGv98jJySEnJ6f/QQ5CSiBEREREJGYtXbqA2267g7S0dF599SUqKyt44omn\nGTNmLP/3f79m48b1lJWVkZ6exuTJU7n33n9h9Oix3u17K2G66aZPM2vWbBYvXsKKFb+nsrKCMWNK\n+MY3vsXMmbMj9JNGDyUQIiIiIhLT3nzzdUaMGMl9932TtLQ08vPz6ezsoKWlhdtuu4OCgkIaGxt4\n6aUX+NrX7uSZZ14gN/fsJUs2m41t27Zy7Ngx7r77HpKSknniid/wwAPf5MUXXyMjIyOMP130UQIh\nIiIiIjHvkUceJTm5Z3+I73//X72PXS4XCxacx7XXfor33nubW275wln3ZVkWLS0tPPXUs95kITc3\nj69+9Ut88slHXHbZFaH5IWKEEggRERERiWmLFi0+I3kA+Oc/3+Wvf/0zx48fo7m5ybv82LFjfe5z\n+vQZPVoaxo0bD0BlZUUQIo5tSiBEREREJKbl5eWfseyjjz7kRz96kCuvvIavfOVrno7SNr773X+h\no6P9nPuz2WxkZmb1WNaVoHR0dAQt7lilBEJEREREYprNZjtj2T//+Q4jR47iwQf/zbvM4XDQ0FAf\nztDikmaiFhEREZG409bWdsZQrm+99Q9cLleEIoofaoEQERERkZhgWZbf65533vl89NEH/PrXj7B4\n8RL27t3NSy+9QEZGZlDfZzBSAiEiIiIiMaG3UqWzufbaG6isrOAf/3iVV155iSlTpvGznz3Cgw9+\nt8/9BvI+g1HcHp2ODodVV9cS6TDiWk5OOgA6zqGjYxx6Osahp2McHjrOoadjHHo6xuGRk5NOcnJi\nv/MA9YEQERERERG/KYEQERERERG/qQ+EiMSNe1c+END6jy3/eYgiERERiV9qgRAREREREb8pgRAR\nEREREb8pgRAREREREb8pgRAREREREb8pgRAREREREb8pgRAREREREb8pgRAREREREb8pgRARERGR\nqPTGG6+xdOkC77/LL7+Q22//An/72/M4nc6QvW9Z2UmWLl3Am2++7l328MM/4uabrw1oP5s3b+QP\n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\nPNHYifpR4GfYCYAPeMh//6dAcGsJNzCsR51lWU8Dbwc2As8AHwU+D/x1FOIUEREREZFW+VqEAAAL\n+0lEQVQwJe2q0L6+AZ/q56JLdYrRp2McfTrG0adjHBs6ztGnYxx9OsaxkZ+fS2Zm+oTzgLhZAyEi\nIpJqHt3yybAe/83NX4pSJCIioYtGCZOIiIiIiCQpzUCIJCmNbIqIiEg0aAZCRERERERCpgRCRERE\nRERCpgRCRERERERCpgRCRERERERCpgRCRERERERCpgRCRERERERCpgRCRERERERCpgRCRERERERC\npgRCRERERERCpp2oRUREHKId4EUkEWkGQkREREREQqYZCJEkpZFNkcTy6JZPhvV4/Y2LiFM0AyEi\nIiIiIiFTAiEiIiIiIiFTAiEiIiIiIiFTAiEiIiIiIiFTAiEiIiIiIiFTAiEiIiIiIiFTAiEiIiIi\nIiFTAiEiIiIiIiFTAiEiIiIiIiFTAiEiIiIiIiFTAiEiIiIiIiFLdzoAERERgW9u/pLTIYhIkEe3\nfDKsx6fS37BmIEREREREJGRKIEREREREJGRKIEREREREJGRKIEREREREJGRKIEREREREJGRKIERE\nREREJGRKIEREREREJGRKIEREREREJGRKIEREREREJGRKIEREREREJGRKIEREREREJGTpTgcgIiIi\nIhJvvrn5S06HELc0AyEiIiIiIiFTAiEiIiIiIiFTAiEiIiIiIiFTAiEiIiIiIiFTAiEiIiIiIiFT\nAiEiIiIiIiFTAiEiIiIiIiFTAiEiIiIiIiFTAiEiIiIiIiFTAiEiIiIiIiFTAiEiIiIiIiFTAiEi\nIiIiIiFTAiEiIiIiIiFTAiEiIiIiIiFTAiEiIiIiIiFTAiEiIiIiIiFTAiEiIiIiIiFTAiEiIiIi\nIiFLj/QLGmM+DtwJrAdKgc9YlvWZEJ/7feC9o/zoq5ZlfTxiQYqIiIiIyIREPIEAPgC0Ar8C/hTw\nhfn8BuCBEd+ri0BcIiIiIiIySRFPICzLWgZgjEnDTiDC1WdZ1u7IRiUiIiIiIpEQzTUQrhg/T0RE\nREREoiwaJUyTVWKMaQTygbPAd4EvW5bldTYsERERERGJtwTiALAHOAZkA28FvggsBj7oYFwiIiIi\nIsI4CYQx5nXAcyG8zlbLsjZPNhjLsr424lvPGGM6gI8aY/7Jsqwzk/0dIiIiIiIycePNQGwHloTw\nOl0RiOV6Hgcew24LG3ICkZ7uJj8/N2pBiX2MAR3nKNIxjj4d4+jTMY4NHefo0zGOPh3j2Bg8zhN+\n/lg/tCyrG7Am9Rsc4na7tRhbRERERCTCEmEn6oex95JQa1cREREREYdFYyfq9UA5Q8nJcmPM2/23\nn/TPamCMeRGYZ1nWYv/9+cAPgJ8A54Ac4C3AHwLfsizrXKRjFRERERGR8ESjC9Oj2Bf9YM8cPOT/\n8gELgBr/z9xAWtDz2oBm4FNAKeAFTgAfsSzrP6IQp4iIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiI\niIiIiIiIiIiIiIiIiIiIiIiIiIiISCS5nA4gkowxZcBXgNdh/7e9ADxmWdZFRwNLIv5NAd8DVAFF\n2Pt6/BL4gmVZHU7GlsyMMc8A9wCftyzr752OJ1kYY94I/DWwFnvvGQv4pGVZLzkaWJIwxtwK/AOw\nGsgGTgHfsCzr/zkaWIIyxswF/gpYz9AxLbcsq2bE42YA/wK8GXtT1h3AxyzLOhrbiBNTKMfZGPM6\n4I+BjcBMoBZ4Dvi0ZVmNMQ86gYT6Ph7xnG8BHwJ+YlnWIzEJNMGFc5yNMRuB/wPcCGQAZ7GvN356\nvdd3X+8HicYYkwtsAQzwXuARYDHwkv9nEhl/CfRjX3TdC/wn8GfA88aYpEpI44Ux5t3AKv9dn5Ox\nJBNjzJ8Avwb2AA9ib3j5M+wLLpkkY8xa4Hns88z7gbdgH+vvGmP+1MnYEtgi7PfpVWDbaA/wfw7/\nFnvA4cPA27AvCF4yxsyJUZyJbtzjjH0xWwh8Dng98EXgAWCnMWZKLIJMYKEc3wBjzM3Aw9gbDusc\nGLqQjrMx5j7gZewk+N3Y7+NvA1ljvXg0dqJ2ygexd7o2lmWdBTDGHMYe8foT7JkJmbz7Lcu6GnR/\nmzHmGvAD4A5AI7cR5B9J/DfgMeB/HA4naRhjyoGvAp+wLOvrQT96zpmIktI7/P++ybKsLv/tF40x\nq7AHeb7lTFgJ7WXLsmYCGGM+gJ0kjPQAsAm407Ksl/2P3QGcAz4JfDRGsSayUI7zn1uW1RR0/xVj\njIV9IfYOQLNs1xfK8cX/8wzgv7ATNQ08hGfc42yMmYb9Xv2mZVkfD/rRlvFePGlmILA/NHcMJg8A\nlmWdB7ZjT+NKBIxIHgbt9f87O5axpIh/Bo6MNY0oE/LHwAC6iI2mNOzZyu4R328jycpnY8WyrFBG\nXx8ALg8mD/7ntWHPSuhcGIJQjvOI5GGQzoUhCPF9POj/w/68+Ff0uRGWEI/zQ9jl6P8a7usnUwKx\nHBitvvM4sCzGsaSa2/3/nnA0iiRjjLkFuxTvUadjSUK3ANXAHxhjzhhj+o0xp4wxf+50YEnku4AH\n+LoxZpYxJt8Y80FgM5oRjqaxzoXzVNIbVToXRpAxZhHwKezZngGn40lStwDXgNXGmCP+c2GNMeYf\njDFj5gjJlEDMAJpH+f41/88kCvw1tZ8Fnrcsa7/T8SQLY0wm9rTtv1iWdcrpeJLQbOw1Ul8CvgDc\njV2v/w1jzF84GViysCyrGrs2/CHgMvZn8TeAP7Es62dOxpbkCrj+uRB0PowKfynIV7ETtV87HE6y\n+E/gf4Nm07T+IfJmA7nAT4DvAXdhl6T/PfDlsZ6YTGsgJMaMMVOBJ4A+4H0Oh5NsPom9gOnzTgeS\npNzANOAPLcsaPNlv9a+N+Bvg69d7ooTGGLMC+B12Wce/Y5cyPQj8lzGm17Ks/3YyviSmi6wYM8ak\nY69RmwXcbFmW1+GQEp4x5j3AOqDS6ViSnBu7O9PfWpb1Vf/3thljCoFHjTGftiyrfbQnJlMC0czo\nIysFDI28SIQYY3Kwa2rLgdsty6p1NqLkYYyZhz1t+34gx3+sB2UbY6YD7TpJTcpVoAJ71iHY88C9\nxphSy7LqYx9WUvlHoAV7EfVg+cFL/hPT1wAlENHRjH3eG6kg6OcSIf4yjx9gl+bdp1a5k+cfnPw3\n7BnifmNMvv9HaUCm/xzYqbKmiBhc1zraufBPsZcA7BrticlUwnQMWDHK95dhTylKhPi7IvwCey+I\nN1qWdczhkJLNQuzZhx9jJ7+DXwCfwL4AGO29LqE7hhbkRdsy4PAoJ/k9QKExpsSBmFLBMex1ECMt\nAy4EdcSSyPgWdteld2n/mIgp8n99geHnwLnYx7oZeKNj0SWXCSe8yZRA/AbYaIxZMPgNfznCJv/P\nJAL8oy0/wW7Z+qBlWbudjSgpHcA+vsFfd/p/9iP//TMxjyq5/NL/770jvn8vcFGzDxFxCXthXsaI\n79+IXc6kmeHo+A0wxxhz2+A3jDF5wJvQuTCijDH/ij1T/EeWZenYRk4d9jnvDoafA+uxR8bvwO6w\nKZM3WMI72rmwGzhyvScmzQicv7PEIez/4L/zf/sfgSnAKo26RIYx5j+x99X4PPDkiB9ftCzrcuyj\nSg3GGC/wOcuy/sHpWJKBMeZF7N05P4XdI/8hhi4GfuhkbMnAGPNm4FfYe2v8B9CD3WL0z4F/syzr\nEw6Gl7CMMW/337wL+7P4z4EmoMGyrG3+jeReBcqwW2C2YK/rWQGs1md0aEI4zn+FvXnc97A33Qq+\nnmoIbikvv2+843ud55wHtlmW9d6YBJkEQjnOxpjvAe/E3on6APA67GqHz1qW9dnrvXbSrIGwLKvL\nGDPYHvBH2H/MLwCPKXmIqHuxF+l9yv8V7P9gd2QSSQQPYl8AfAZ7/dQJ4A8sy3rc0aiShGVZTxhj\nXo998fod7IV6p7FPYP/XydgSXHAHKx92cgawFdhsWZbPGHM/dgeV/8A+7q9hbyyn5CF0Yx5nhs6F\nf+z/Cvb9Ub4nw413fEejBgHhC+U4/wl2p7yPAKXYA2ofsyzr32MUo4iIiIiIiIiIiIiIiIiIiIiI\niIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiETU/w8DrQKpOz64rgAA\nAABJRU5ErkJggg==\n",
"text": [
"<matplotlib.figure.Figure at 0x2b2c849e0a10>"
]
}
],
"prompt_number": 21
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# tricky, since it uses recursion\n",
"\n",
"def print_tree(t, root=0, depth=1):\n",
" if depth == 1:\n",
" print 'def predict(X_i):'\n",
" indent = ' '*depth\n",
" print indent + '# node %s: impurity = %.2f' % (str(root), t.impurity[root])\n",
" left_child = t.children_left[root]\n",
" right_child = t.children_right[root]\n",
" \n",
" if left_child == sklearn.tree._tree.TREE_LEAF:\n",
" print indent + 'return %s # (node %d)' % (str(t.value[root]), root)\n",
" else:\n",
" print indent + 'if X_i[%d] < %.2f: # (node %d)' % (t.feature[root], t.threshold[root], root)\n",
" print_tree(t, root=left_child, depth=depth+1)\n",
" \n",
" print indent + 'else:'\n",
" print_tree(t,root=right_child, depth=depth+1)\n",
" \n",
"print_tree(dt.tree_)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"def predict(X_i):\n",
" # node 0: impurity = 0.46\n",
" if X_i[0] < 1.11: # (node 0)\n",
" # node 1: impurity = 0.08\n",
" if X_i[0] < 0.88: # (node 1)\n",
" # node 2: impurity = 0.04\n",
" if X_i[0] < 0.59: # (node 2)\n",
" # node 3: impurity = 0.02\n",
" return [[ 0.98872712]] # (node 3)\n",
" else:\n",
" # node 4: impurity = 0.02\n",
" return [[ 1.30906617]] # (node 4)\n",
" else:\n",
" # node 5: impurity = 0.00\n",
" if X_i[0] < 0.92: # (node 5)\n",
" # node 6: impurity = 0.00\n",
" return [[ 0.59581346]] # (node 6)\n",
" else:\n",
" # node 7: impurity = 0.00\n",
" return [[ 0.53263382]] # (node 7)\n",
" else:\n",
" # node 8: impurity = 0.43\n",
" if X_i[0] < 4.89: # (node 8)\n",
" # node 9: impurity = 0.18\n",
" if X_i[0] < 1.59: # (node 9)\n",
" # node 10: impurity = 0.13\n",
" return [[ 0.12991532]] # (node 10)\n",
" else:\n",
" # node 11: impurity = 0.14\n",
" return [[-0.39874553]] # (node 11)\n",
" else:\n",
" # node 12: impurity = 0.45\n",
" if X_i[0] < 7.48: # (node 12)\n",
" # node 13: impurity = 0.09\n",
" return [[ 0.79041947]] # (node 13)\n",
" else:\n",
" # node 14: impurity = 0.41\n",
" return [[-0.03795854]] # (node 14)\n"
]
}
],
"prompt_number": 22
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Copy-and-paste, you have a pure python version of the decision tree classifier:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def predict(X_i):\n",
" # node 0: impurity = 0.46\n",
" if X_i[0] < 1.11: # (node 0)\n",
" # node 1: impurity = 0.08\n",
" if X_i[0] < 0.88: # (node 1)\n",
" # node 2: impurity = 0.04\n",
" if X_i[0] < 0.59: # (node 2)\n",
" # node 3: impurity = 0.02\n",
" return [[ 0.98872712]] # (node 3)\n",
" else:\n",
" # node 4: impurity = 0.02\n",
" return [[ 1.30906617]] # (node 4)\n",
" else:\n",
" # node 5: impurity = 0.00\n",
" if X_i[0] < 0.92: # (node 5)\n",
" # node 6: impurity = 0.00\n",
" return [[ 0.59581346]] # (node 6)\n",
" else:\n",
" # node 7: impurity = 0.00\n",
" return [[ 0.53263382]] # (node 7)\n",
" else:\n",
" # node 8: impurity = 0.43\n",
" if X_i[0] < 4.89: # (node 8)\n",
" # node 9: impurity = 0.18\n",
" if X_i[0] < 1.59: # (node 9)\n",
" # node 10: impurity = 0.13\n",
" return [[ 0.12991532]] # (node 10)\n",
" else:\n",
" # node 11: impurity = 0.14\n",
" return [[-0.39874553]] # (node 11)\n",
" else:\n",
" # node 12: impurity = 0.45\n",
" if X_i[0] < 7.48: # (node 12)\n",
" # node 13: impurity = 0.09\n",
" return [[ 0.79041947]] # (node 13)\n",
" else:\n",
" # node 14: impurity = 0.41\n",
" return [[-0.03795854]] # (node 14)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 24
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"predict(X_true[0])"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 25,
"text": [
"[[0.98872712]]"
]
}
],
"prompt_number": 25
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"language": "python",
"metadata": {},
"outputs": []
}
],
"metadata": {}
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment