Skip to content

Instantly share code, notes, and snippets.

@sl8r000
Created May 8, 2016 00:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save sl8r000/cd7d560a346a565225d2942c8a5944e4 to your computer and use it in GitHub Desktop.
Save sl8r000/cd7d560a346a565225d2942c8a5944e4 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Populating the interactive namespace from numpy and matplotlib\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/usr/local/lib/python2.7/site-packages/IPython/html.py:14: ShimWarning: The `IPython.html` package has been deprecated. You should import from `notebook` instead. `IPython.html.widgets` has moved to `ipywidgets`.\n",
" \"`IPython.html.widgets` has moved to `ipywidgets`.\", ShimWarning)\n"
]
}
],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"import requests\n",
"\n",
"from sklearn.preprocessing import LabelEncoder\n",
"from sklearn.ensemble import GradientBoostingClassifier\n",
"from sklearn.cross_validation import KFold\n",
"from sklearn.metrics import roc_auc_score, roc_curve\n",
"\n",
"%pylab inline\n",
"import seaborn as sns\n",
"sns.set_style('darkgrid')"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.text.Text at 0x106c07b50>"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\nEZF6CTtbfuHChUycOJH8/HyGDx/OLbfcwqOPPtoYsVWruzupye4tIiISD8Im95deeokJEyaQl5fH\neeedx5tvvsmHH37YGLFVa3BaRpPdW0REJB5EtK9sVlYWK1asYODAgTgcDjwej9VxiYiISD2FTe5d\nu3bluuuu44cffqB///7ceuut/PKXv2yM2ERERKQewhaOmTFjBl988QXdunXD5XIxZswYzj777MaI\nTUREROohbHL3+XwsW7aM3NxcAoEAv/rVr+jXrx8OR9i3ioiISBMI+1h+6tSplJeXM2PGDB544AH8\nfj+TJ09ujNhERESkHsJ2v7/66iveeOONyt/vvfdehg8fbmlQIiIiUn9he+6maVJYWFj5e2FhIXa7\n3dKgREREpP7C9tyvuuoqLr744spKcEuXLuXaa6+1PDARERGpn7DJfezYsfTs2ZPVq1cTDAZ57LHH\nOPHEExsjNhEREamHGpN7MBhk/vz5fPfdd5x22mlcfvnljRmXiIiI1FONY+5TpkzhnXfeITk5mSef\nfJLZs2c3ZlwiIiJSTzUm99WrV/PCCy/wpz/9ieeff5533323MeMSERGReqoxubvdbgzDACA7O7vy\nZxEREYltNSb3I5O5zRZRjRkRERFpYjVOqNu1axcTJ06s8ffc3FxrIxMREZF6qTG533XXXVV+79ev\nn+XBiIiINNT8+c/zyisv8eqrb+J0Opkx4z7OP38o/fqdUXnOqFFDef31/wDwwQfLefXVBZimidfr\n5bLLrmDgwPNqvP7KlR/w/PP/wOFwMHz4SH7zm9FVju/evZsZM6YQDAbJzMxk4sTJpKWlsXz5+8yf\n/zyGYWPIkGHk5IyzpgGoJbmPGTPGspuKiIhY5d133+H884fy3nv/4cILR9RwVmjoef36dSxc+BIP\nP/w33O4kCgsPcN11v6NTpy507Hj8Ue/y+/3Mnv0oTz89D7c7ieuvv5qzzz6X7OzsynMef3wmo0Zd\nxHnnXUBe3mKeeWYuN930R+bOfZynn36BpKQkrrgih6FDLyQjI9OCFohgExsREZG6eGXpt6zeuCeq\n1+zbvTWXDO4a9rwvvlhD+/btGT16LFOn3lNLcg95883FXHLJZbjdSQBkZGTy97//k7S0NL77bjuL\nFr3CbbdNqDx/x47vaN++A6mpaQD88pe9Wbfu/6r09Ldv38aECZMA6NmzN4sWLcRmszF//qvYbDYK\nCvIJBk0cDmed2yFSmiUnIiIJIy9vMSNGjKZDh+NwOp18/fWGas+rmDT+888/c+yx7ascS0sLJe7j\nj+9UJbEDlJQUVyZ2gJSUVIqLi6uc063biaxcuQKAlStXUFZWBoQmpq9YsYyrrvotp556GsnJyQ34\npLWLqOdeWlrK999/z4knnkhZWRkpKSmWBSQiIvHtksFdI+plR1tRURGrVn1MQcF+Xn31ZUpKSvjX\nv14hJSUVr9db5dxAIABA27Zt2bNnN126HIp3/fp1tGjRknbtqiZ9gNTUNEpLSyp/Ly0tIT09vco5\nN954K48++iBvvfUmZ5xxJllZWZXHzj13EOeeO4hp0ybzzjv/Dvtkob7C9txXrVrFqFGjuOGGG9iz\nZw+DBg1i5cqVlgQjIiJSX//5z78ZMWIUjzzyGH/96yyeeupZVq/+lGOPbceKFUsrz1u37guOP74T\nAMOHj+TFF+dRXl4OQEFBPjNm3IfHU17tPTp2PJ4ffthJUVERPp+PtWu/4JRTflnlnM8++4TrrruJ\nWbOexGaz0bfvGZSWlnDTTdfi8/kASEpKtnT/mLA990ceeYQXX3yRa665hjZt2jB//nxuu+02zj77\nbMuCEhERqat///sN7rlnauXvbncSAwcOxuMpJyUlhd/97rekpqbhcDi48867AejRoycjR47hj3+8\nAbvdgdfr5frrb6Fz567Vjrk7HA5uvvk2brvtRkwTfvObURxzzDEUFhby4IPTmDbtQTp2PJ6pUyfh\ncDho2/ZY7rprEm53EkOHDufGG6/B6XTSpUtXhg4dbllbGKZpmrWdMHbsWP71r38xevRoFi9eDMDI\nkSN54403LAuqJvff+hIXjNpCh55/bPR7NxetWqWzd29RU4eR8NTO1lMbW09t3DhatUoPf9IRwvbc\n27Zty7JlyzAMg8LCQubPn8+xxx5brwBFRETEemHH3KdOncqbb77JTz/9xPnnn88333zD1KlTw71N\nREREmkjYnnvLli155JFHGiMWERERiYKwyX3w4MHVzuh7//33LQlIREREGiZscp83b17lz36/nyVL\nlhy1XrAxOVJPaLJ7i4iIxIOwY+7t2rWr/N+OHTvyv//7v7z33nuNEVu1XMcMaLJ7i4iIxIOwPffV\nq1dX/myaJlu2bMHj8VgalIiISH01dVW4goJ87rtvEn6/n4yMTCZPnobb7WbJknd46aV5uN1uBg48\nj0svvdyaBiCC5D5r1qzKnw3DIDs7m/vvv9+ygERERBqiqavCvfzyiwwcOJjRoy/mqafmkJf3OkOG\nDOWpp+bw7LMvkpqays03X0efPqdzwgknWtACEST3Cy+8kN/+9reW3FxERBLPom/z+GLP+qhe89TW\nPbmoa/h92GOhKpzb7aawsBAI7T3fpk1bfvzxB7p27VZZlOaUU3qydu0XliX3sGPuL774Yr0vbpom\nkydPZty4cVx55ZXs3Lmz2vPuvfdeLbcTEZEGi4WqcMOH/4ZFixYyfvwlfPLJKgYNOp/27Y9j+/Zt\nFBQUUF5ezpo1qykvL2vw561JRDvUXXnllfTq1Qu32135+k033RT24u+99x5er5cFCxawbt06cnNz\nmTNnTpVzFixYwObNm+nXr189whcRkVhzUdcREfWyoy1WqsI98MA07r57Cn37/opVq1Yybdq9PPjg\nTG6++Y9MmnQnGRmZnHhidzIzs468fNSE7bn37t2bfv36VUnskVqzZg0DBoRmt/fq1YsNG6p+g/ri\niy9Yv34948aNq/O1RUREDhcrVeHKyspITU0FoGXLYygqKiIQCLBx49c8/vjfmTo1ly1bNnPaaX2t\naAaglp77a6+9xpgxYyLqodekuLi4yjcah8NBMBjEZrOxd+9eZs+ezZw5c3jrrbfqfQ8RERGInapw\nt912JzNnPozNZsM0TW6//S7sdjt2u52rr74Cu93O6NFjq30yEC01VoUbM2YMr732WoMufv/999O7\nd2+GDRsGwMCBA1m+fDkQ2hxn8eLFpKamsnfvXjweD7fccgujR4+u+Xq3vsTVU4bR+rBZiSIiIlJV\n2DH3hujTpw/Lli1j2LBhrF27lm7dulUeGz9+POPHjwdCTwm2b99ea2KvkJ9fguG3NOxmTSUcG4fa\n2XpqY+upjRtHVEu+btmyhfPOO3oRv2maGIYR0d7yQ4YM4aOPPqocU8/NzSUvL4+ysjJycnLqHKyI\niIiEV2Ny79ixI0899VSDLm4YBvfdd1+V1zp16nTUeWPGjGnQfUREROSQGpO70+mkXbt2jRmLiIiI\nREGNS+H69OnTmHGIiIhIlNSY3O+9997GjENERESiJOwmNiIiIvFk/vznGTVqGD6fD4AZM+7js88+\nqXLOqFFDK3/+4IPl3HLL/+Pmm6/juut+x/LltU8YX7nyA6655kquv/5q3nxz8VHHd+/ezS23/D9u\nuula7r77jqO2p33wwenMnft4fT9eRJTcRUQkoRxeFa5mVavCPfTQTB57bC4PPTSTuXMfZ8eO76p9\nV0VVuJkz5/DYY0/xxhuLKCgoqHLO44/PZNSoi5g9+yn69z+Lp5+eW3ls8eJ/sX371oZ+xLC0YFxE\nRKJq78IFFH2+OqrXTD+9L61ywm9VHgtV4bZv38aECZMA6NmzN4sWLQRgw4Yv2bjxa0aOvIjvv99R\ntwaoI/XcRUQkYcRCVbhu3U5k5coVAKxcuYKysjL27fuZZ575O3/8450N+4ARUs9dRESiqlXOuIh6\n2dEWK1XhbrzxVh599EHeeutNzjjjLLKysli+/H0KCw9wxx23sm/fz3g8Ho47rmPYJwv1peQuIiIJ\noaIq3A033AKAx1NOTs4oLrtsPCtWLOXss88Bjq4KN3fubE499XSSkpIqq8JNn/5gtfc4vCpcUlIS\na9d+wWWXXVnlnM8++4TrrruJDh2OY8GCF+jb9wzGjr2UsWMvBeDtt/P4/vsdliV2UHIXEZEEEStV\n4Tp2PJ6pUyfhcDho2/ZY7rprUqO3RY1V4WLR/be+xOhbBtAyI7OpQ0lYKgTRONTO1lMbW09t3Djq\nUzhGE+pEREQSjJK7iIhIglFyFxERSTBK7iIiIglGyV1ERCTBKLmLiIgkGK1zFxGRhDJ//vO88spL\nvPrqmzidTmbMuI/zzx9Kv35nVJ4zatRQXn89VFjmgw+W8+qrCzBNE6/Xy2WXXVFlr/gjrVz5Ac8/\n/w8cDgfDh4/kN78ZXeV4QUE+9903Cb/fT0ZGJpMnT6OkpJjJk/+MYRiYpsmWLZu5/vqbGTXqIkva\nQMldREQSyuFV4WreBa5qVbiHH/4bbncShYUHuO6639GpUxc6djz+qHdVVIV7+ul5uN1JXH/91Zx9\n9rlkZ2dXnvPyyy8ycOBgRo++mKeemkNe3uuMHXsJjz0Wqg63YcN6/v73Jxg5cky0P3olJXcREYmq\nj5duZdvGPVG9ZufurTlzcJew58VCVTi3201hYSEQ2nu+TZu2Ve45c+ZDTJkyvbJ4jRWU3EVEJGHE\nQlW44cN/w3XX/Y4lS97B5/Nz9dXXVR5bufIDOnfuQvv2Her/ISOg5C4iIlF15uAuEfWyoy1WqsI9\n8MA07r57Cn37/opVq1Yybdq9PPjgTADeffdtLrnksqh95ppotryIiCSEiqpwjzzyGH/96yyeeupZ\nVq/+lGOPbceKFUsrzzuyKtyLL86jvLwcoLIqnMdTXu09Dq8K5/P5WLv2C0455ZdVzikrKyM1NRWA\nli2Poajo0P77Gzd+TY8eVc+3gnruIiKSEGKlKtxtt93JzJkPY7PZME2z8v379++vfORvNVWFkypU\n5alxqJ2tpza2ntq4cagqnIiIiCi5i4iIJBoldxERkQSj5C4iIpJglNxFREQSjJK7iIhIgtE6dxER\nSShNXRVu9+7dzJgxhWAwSGZmJhMnTiYtLY3ly99n/vznMQwbQ4YMIydnnDUNgJK7iIgkmKauCvf4\n4zMZNeoizjvvAvLyFvPMM3O56aY/Mnfu4zz99AskJSVxxRU5DB16IRkW7dui5C4iIlFV8OMSSvd/\nHdVrpmSdTHa7IWHPi4WqcNu3b2PChEkA9OzZm0WLFmKz2Zg//1VsNhsFBfkEgyYOh7PO7RApjbmL\niEjCiIWqcN26ncjKlSsAWLlyBWVlZQDYbDZWrFjGVVf9llNPPY3k5OQGfNLaqecuIiJRld1uSES9\n7GiLlapwN954K48++iBvvfUmZ5xxJllZWZXHzj13EOeeO4hp0ybzzjv/Dvtkob7UcxcRkYQQK1Xh\nPvvsE6677iZmzXoSm81G375nUFpawk03XYvP5wMgKSm58umBFdRzFxGRhBArVeE6djyeqVMn4XA4\naNv2WO66axJudxJDhw7nxhuvwel00qVLV4YOHW5ZW6gqnFShKk+NQ+1sPbWx9dTGjUNV4URERETJ\nXUREJNEouYuIiCQYJXcREZEEo+QuIiKSYJTcRUREEozWuYuISEKJxapwXq+HyZP/jGEYmKbJli2b\nuf76mxk16iJL2kDJXUREEkqsVYV7+um53Hrr7Tz22FwANmxYz9///gQjR46J9kevpOQuIiJR9fbO\nvazPLw5/Yh30bJHGhR1ahT0vVqvCHW7mzIeYMmW6pdvPasxdREQSRixXhQv9/gGdO3ehffsO9fyE\nkVHPXUREourCDq0i6mVHWzxUhXv33be55JLLovJ5a6Oeu4iIJIRYrgpXYePGr+nR45dHXjbq1HMX\nEZGEEMtV4QD2799f+cjfaqoKJ1WoylPjUDtbT21sPbVx46hPVThLe+6maTJlyhQ2bdqEy+Vi+vTp\ndOhwaBJBXl4e//znP3E4HHTr1o0pU6ZYGY6IiEizYOmY+3vvvYfX62XBggXcfvvt5ObmVh7zeDzM\nmjWLF154gRdffJGioiKWLVtmZTgiIiLNgqXJfc2aNQwYMACAXr16sWHDoSUJLpeLBQsW4HK5gNDG\nAG6328pwREREmgVLk3txcXGVJQIOh4NgMAiE1hi2aNECgHnz5lFWVsaZZ55pZTgiIiLNgqVj7mlp\naZSUHFoPGAwGsdkOfZ8wTZMHH3yQHTt2MHv27Iiu2aJFKq2y6z65QCJXn8kbUndqZ+upja2nNo5N\nlib3Pn36sGzZMoYNG8batWvp1q1bleP33HMPSUlJzJkzJ+Jr5ueXYPi1gs8qmv3aONTO1lMbW09t\n3Dhibrb8kCFD+Oijjxg3bhwAubm55OXlUVZWximnnMKiRYs47bTTGD9+PIZhcOWVV3L++edbGZKI\niCS4WKwKl5aWxiuvvMibby4mOzs0JH3HHX+mQ4fjLGgBi5O7YRjcd999VV7r1KlT5c9ff/21lbcX\nEZFmKFarwm3a9A333DOVbt26W/Cpq9LzbRERiapXln7L6o17onrNvt1bc8ngrmHPi+WqcJs2bWTe\nvOfYt+9n+vc/m/Hjr6pTG9SF9pYXEZGEEctV4c4/fyh33DGRWbOeZP36taxatbIBn7R26rmLiEhU\nXTK4a0S97GiL9apwOTnjKr8Y9O9/Nps3b6J//7Oj8+GPoJ67iIgkhFiuCldSUsyVV46jvLwc0zRZ\ns2Y1J554kkUtoZ67iIgkiFiuCheafHczN998LS6Xm9NO68sZZ1i3cZuqwkkVWrfaONTO1lMbW09t\n3Djqs85dj+VFREQSjJK7iIhIglFyFxERSTBK7iIiIglGyV1ERCTBKLmLiIgkGK1zFxGRhNLUVeEK\nCvK5775J+P1+MjIymTx5Gm63myVL3uGll+bhdrsZOPA8Lr30cmsaACV3ERFJME1dFe7ll19k4MDB\njB59MU89NYe8vNcZMmQoTz01h2effZHU1FRuvvk6+vQ5nRNOONGCFlByFxGRKFv0bR5f7Fkf1Wue\n2ronF3WtvcIbxEZVOLfbTWFhIRDae75Nm7b8+OMPdO3arbIozSmn9GTt2i8sS+4acxcRkYQRC1Xh\nhg//DYsWLWT8+Ev45JNVDBp0Pu3bH8f27dsoKCigvLycNWtWU15e1uDPWxP13EVEJKou6joiol52\ntMVKVbgHHpjG3XdPoW/fX7Fq1UqmTbuXBx+cyc03/5FJk+4kIyOTE0/sTmZmVjQ/fhXquYuISEKI\nlapwZWVlpKamAtCy5TEUFRURCATYuPFrHn/870ydmsuWLZs57bS+VjQDoJ67iIgkiFipCnfbbXcy\ncwVBmA0AAAzYSURBVObD2Gw2TNPk9tvvwm63Y7fbufrqK7Db7YwePbbaJwPRoqpwUoWqPDUOtbP1\n1MbWUxs3DlWFExERESV3ERGRRKPkLiIikmCU3EVERBKMkruIiEiCUXIXERFJMFrnLiIiCaWpq8Lt\n3r2bGTOmEAwGyczMZOLEyaSlpbFkyTssXLgAh8NB585d+dOf7rKmAVDPXUREEszhVeFqVrUq3EMP\nzeSxx+by0EMzmTv3cXbs+K7ad1VUhZs5cw6PPfYUb7yxiIKCgirnPP74TEaNuojZs5+if/+zeOaZ\nuXg8Hp5+ei6zZz/FnDn/oLi4iI8++jBKn/ho6rmLiEhU7V24gKLPV0f1mumn96VVzriw58VCVbjt\n27cxYcIkAHr27M2iRQtxu9088cQzuFwuILS3fcXPVlDPXUREEkYsVIXr1u1EVq5cAcDKlSsoKwtV\nf6uo+f7qqwsoLy+jb99f1fdjhqWeu4iIRFWrnHER9bKjLVaqwt144608+uiDvPXWm5xxxplkZYWq\nv5mmyZw5s/jhh++ZPv2hqH3u6qjnLiIiCSFWqsJ99tknXHfdTcya9SQ2m42+fUMT+R58cDo+n5fc\n3L9a+kge1HMXEZEEEStV4Tp2PJ6pUyfhcDho2/ZY7rprEps3b+Stt97kl7/szc03X4dhGOTkjGPA\ngIGWtIWqwkkVqvLUONTO1lMbW09t3DhUFU5ERESU3EVERBKNkruIiEiCUXIXERFJMEruIiIiCUbJ\nXUREJMFonbuIiCQUVYVTz11ERBKMqsKp5y4iIlH28dKtbNu4J6rX7Ny9NWcO7hL2PFWFC1HPXURE\nEoaqwoWo5y4iIlF15uAuEfWyo01V4Q5Rz11ERBKCqsIdop67iIgkBFWFO0RV4aQKVXlqHGpn66mN\nrac2bhyqCiciIiJK7iIiIolGyV1ERCTBKLmLiIgkGCV3ERGRBBNfyd3YS7IjqamjEBERiWmWJnfT\nNJk8eTLjxo3jyiuvZOfOnVWOL126lIsvvphx48axcOHCsNfb1uF4kpOtXfgvIiIS7yxN7u+99x5e\nr5cFCxZw++23k5ubW3nM7/dz//3389xzzzFv3jxefvll8vPza73eU7ePrNwPWERERKpnaXJfs2YN\nAwYMAKBXr15s2HBoA/+tW7fSsWNH0tLScDqdnHbaaaxevdrKcERERJoFS5N7cXFxlQ31HQ4HwWCw\n2mOpqakUFWmnIxERkYaydG/5tLQ0SkoOVc8JBoPYbLbKY4eXySspKSEjIyPsNeuzDZ/Ujdq4caid\nrac2tp7aODZZ2nPv06cPK1aEatquXbuWbt26VR7r0qULO3bsoLCwEK/Xy+rVq+ndu7eV4YiIiDQL\nlhaOMU2TKVOmsGnTJgByc3P56quvKCsrIycnh+XLlzN79mxM0+Tiiy/msssusyoUERGRZiOuqsKJ\niIhIePG1iY2IiIiEpeQuIiKSYJTcRUREEkxMJvdob1srRwvXxnl5eVxyySX89re/ZcqUKU0TZJwL\n18YV7r33Xh555JFGji4xhGvjL7/8kssvv5zLL7+c2267DZ/P10SRxrdw7bxkyRLGjh1LTk4OL730\nUhNFmRjWrVvH+PHjj3q9znnPjEHvvvuuedddd5mmaZpr1641r7/++spjPp/PHDJkiFlUVGR6vV5z\n7Nix5r59+5oq1LhVWxuXl5ebQ4YMMT0ej2mapnnbbbeZS5cubZI441ltbVzhpZdeMi+99FLzr3/9\na2OHlxDCtfGoUaPM77//3jRN03zllVfMbdu2NXqMiSBcOw8aNMgsLCw0vV6vOWTIELOwsLApwox7\nf//7380RI0aYl176/9u7t5CoujeO418PeajAISolKDGUIosSM6Ewc0gjD/POWJri4cLIoMQsULLM\nCjITqchUygtFa8AUD5SVBokpKRWl5E0nMKQyCbORUDR13otoyLTRv+8/xpmez9Wwt5v1+DDwm732\nzFp7JhyfTe7NyTt3Wbb2zzPWYzs7O8rLy7Gz+75Jz+joKPb29iap05wZ6zFAe3s7nZ2dREVFmaI8\ni2Csx11dXSgUCkpKSoiLi2NgYAA3NzdTlWrWpnsvz5s3D51Ox/DwMIDsATJLrq6uFBQUTDo+m9yb\nk+Euy9b+ecZ6bGVlxaJFiwC4du0aQ0NDbN682SR1mjNjPf706RP5+flkZmail1+jzpqxHvf399PR\n0UFcXBwlJSW0trby6NEjU5Vq1oz1GSAhIYFdu3YRFhbGtm3bWLhwoSnKNHuBgYHY2NhMOj6b3JuT\n4f4nlq0VExnrMXx/xpaTk0NbWxv5+fmmKNHsGetxfX09X758Yd++fRQVFVFXV0dtba2pSjVbxnqs\nUChYsWIFbm5u2Nra4ufnN+mOU8yMsT739PRw/fp1GhsbaWxspK+vj4aGBlOVapFmk3tzMtxl2do/\nz1iPAU6cOMG3b98oLCw0TM+L/42xHsfFxVFVVUVZWRmJiYmEhoaiVqtNVarZMtbj5cuXMzg4aPjy\n19OnT3F3dzdJnebOWJ+Hh4exsbHBzs7OMOs3MDBgqlItwq+zebPJvT+6ccxsBQYG8vDhQ8OzyOzs\nbOrq6gzL1qanp5OQkIBeryciIoKlS5eauGLzY6zHnp6eVFdX4+3tTVxcHFZWVsTHx7N9+3YTV21e\npnsfi/9uuh5nZWVx5MgRALy8vPD39zdluWZruj6r1WqioqJwcHBgxYoVaDQaE1ds3n58Z+G/5J4s\nPyuEEEJYmDk5LS+EEEKI2ZNwF0IIISyMhLsQQghhYSTchRBCCAsj4S6EEEJYGAl3IYQQwsLMyd+5\nC/G3e//+PTt27MDDwwP4vqiFlZUVV65cwdnZecprfqwkmJSUNOtxa2pqOHfuHMuWLUOv1zM8PIyP\njw+nTp2asILhTOTl5bFu3ToCAgKIj4+nrKwMAI1GQ01NzaxrFEJMT8JdiDnK2dnZJCGoVCrJzs4G\nvn+oiI2NRavVTrkNpTHJycmG148fPza8lmAX4s+TaXkhzMzr16+Jj48nIiICpVLJ9evXJ5wfHR0l\nLS2N8PBwwsPDDXs/9/X1cfDgQcO+221tbdOOZWVlhZeXF2/fvgWgqqqKsLAwVCoV6enpDA0N/Xa8\n9PR0ampqOHPmDAB79uwBYPXq1YyPj+Pn58fnz58B0Ol0+Pn5MTY2RnNzMxEREYSHh5OcnIxOpwMg\nJycHtVpNeHi47HcgxDQk3IWYo3p7e9FoNKjVajQaDcXFxQBUVlZy4MABKisrKS0t5cKFCxOua29v\nR6fTUV1dTXFxMc+ePQMgKyuL3bt3U1VVRWFhIZmZmQwODhqtob+/n+bmZry9vXn16hVXr15Fq9Vy\n8+ZNHB0duXz58m/Hg+8fDjIyMgC4ceOG4Zi1tTU7d+7k7t27ANy7d4/AwEB0Oh0XLlyguLiY6upq\ntmzZQm5uLh8+fKClpYXa2lrKy8vp7u5mZGTk/9NoISyQTMsLMUf9blr+6NGjtLS0UFRUxMuXLxka\nGppw3sPDg7dv37J37178/f1JTU0FoLW1la6uLi5dugTA2NgY3d3drF69esL1jY2NaDQaxsfH0ev1\nBAUFERwcjFarRalUGnajioyM5NixY+zfv3/K8aajUqnIzs4mJiaGuro6Dh8+zPPnz+np6SE+Ph69\nXs/4+DgKhQIXFxccHByIjo4mICCAlJQU2dBICCMk3IUwM4cOHUKhUBAQEEBwcDB37tyZcF6hUHDr\n1i3a2tpoampCrVZz+/Zt9Ho9paWlhnDu7e2dcvOJn5+5/+zn/bt/GBsbw8nJadJ4v9Y0lbVr16LT\n6ejs7KS3t5cNGzZw//59vL29KSwsBGBkZISvX79ibW1NRUUFT5484cGDB0RGRqLVanF1dZ1Rz4T4\n28i0vBBz1O/2dGprayM5ORmlUmn4otrPf9vU1ERqair+/v4cP36cBQsW8PHjR3x9fdFqtQC8efMG\nlUo16a7fmE2bNtHY2GjYzrOiogJfX98px+vp6Zlwra2treHDwc+1hoaGcvLkSUJCQgBYv349HR0d\nhmf8BQUF5Obm8uLFC2JjY/Hx8SEtLQ13d3e6urpmXLsQfxu5cxdijvqx7eOvkpKSiI6OZsmSJWzc\nuJGVK1fy7t07w3k/Pz/q6+sJCQnB3t6eoKAgPDw8yMjIIDMzE5VKBcD58+eZP3/+jOtZtWoViYmJ\nxMTEMDY2hqenJ6dPn8bOzo6GhoZJ4/1MqVTyzz//UFVVNeH/UqlU5OXlcfHiRQAWL17M2bNnSUlJ\nYXx8HBcXF3Jzc3FycsLLy4uQkBAcHR1Zs2YNW7dunXHtQvxtZMtXIYQQwsLItLwQQghhYSTchRBC\nCAsj4S6EEEJYGAl3IYQQwsJIuAshhBAWRsJdCCGEsDAS7kIIIYSFkXAXQgghLMy/y8s3tH7aDGQA\nAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10c0b9a50>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Get data\n",
"df = pd.read_csv('https://www.sgi.com/tech/mlc/db/churn.all')\n",
"df.columns = [x[:x.find(':')].replace(' ','_') for x in requests.get('https://www.sgi.com/tech/mlc/db/churn.names').text.split('\\n')[4:-1]] + ['is_churned']\n",
"\n",
"\n",
"# Preprocess\n",
"state_le = LabelEncoder()\n",
"df['state'] = state_le.fit_transform(df['state'])\n",
"del df['phone_number']\n",
"\n",
"for col in ['international_plan', 'voice_mail_plan', 'is_churned']:\n",
" df[col] = df[col].map(lambda x: x.strip())\n",
" df[col] = df[col].map({'no': 0, 'yes': 1, 'True.': 1, 'False.': 0})\n",
"\n",
" \n",
"\n",
"# Model & cross fold validate\n",
"X = df[[c for c in df.columns if c != 'is_churned']]\n",
"y = df['is_churned']\n",
"clf = GradientBoostingClassifier()\n",
"\n",
"scores = []\n",
"for train_index, test_index in KFold(len(df), n_folds=10, shuffle=True, random_state=2016):\n",
" clf.fit(X.iloc[train_index], y.iloc[train_index])\n",
" predictions = clf.predict_proba(X.iloc[test_index])[:,1]\n",
" \n",
" scores.append(roc_auc_score(y.iloc[test_index], predictions))\n",
" fpr, tpr, _ = roc_curve(y.iloc[test_index], predictions)\n",
" plt.plot(fpr, tpr)\n",
" \n",
"plt.legend(['AUC: {:.2f}'.format(s) for s in scores], loc=4)\n",
"plt.title('ROC Curves')\n",
"plt.xlabel('False Positives')\n",
"plt.ylabel('True Positives')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 2",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.11"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment