Skip to content

Instantly share code, notes, and snippets.

  • Save DustinAlandzes/505291e2539683eb24894de6198288e0 to your computer and use it in GitHub Desktop.
Save DustinAlandzes/505291e2539683eb24894de6198288e0 to your computer and use it in GitHub Desktop.
Gradient Boosting Machines Out of Bag - Sklearn.ipynb
{
"cells": [
{
"metadata": {},
"cell_type": "markdown",
"source": "### Gradient Boosting Machines OOB v.s Decision Tree Demo 99.30% Acc - Sklearn\n\n\nby John Ryan\n\n<div class=\"alert alert-block alert-info\" style=\"margin-top: 20px\">**Note:** Citation: Data Source: Lichman, M. (2013). UCI Machine Learning Repository [http://archive.ics.uci.edu/ml]. Irvine, CA: University of California, School of Information and Computer Science. UCI Machine learning Repository http://archive.ics.uci.edu/ml/datasets.html.</div>\n\n\nFor the purpose of this analysis we will look to machine learning as a method to predict diagnosis of cancers.\n\n**Question:** How do we predict the cancer status of a patient given their health measurements?\n\n\n#### Decision Trees & Gradient Boosting Machines - Ensemble Methods\n\nDecision Trees are a machine learning method that classifies data heuristically. The method divides data into increasingly smaller portions to identify patterns for prediction. It can be applied to a complex dataset and produce a series of specific choices that produce logical decisions. A decision tree can be viewed as flowchart where the data is constantly divided according to a new criterion to provide further tree nodes/choices. Decision trees can be problematic if they become ‘too’ big as accuracy is lost as more stringent rules are applied to the date. The use of bagging or boosting aims to minimize this issue by finding the optimal tree size that can be applied to the test data.\n"
},
{
"metadata": {},
"cell_type": "markdown",
"source": "#### Import Required Libaries"
},
{
"metadata": {
"collapsed": false,
"trusted": true
},
"cell_type": "code",
"source": "import os\nimport warnings\nimport pandas as pd\nimport numpy as np\nwarnings.filterwarnings(\"ignore\", category=DeprecationWarning,\n module=\"pandas, lineno=570\")\nfrom __future__ import print_function\nimport requests\nimport seaborn as sns\nimport matplotlib.pyplot as plt\nsns.set_style('whitegrid')\n%matplotlib inline\nfrom sklearn import preprocessing\nfrom sklearn.metrics import log_loss, auc, roc_auc_score\nfrom sklearn.preprocessing import LabelEncoder\nfrom sklearn.cross_validation import train_test_split\nfrom sklearn.ensemble import RandomForestClassifier \nfrom sklearn import metrics\nfrom matplotlib import pyplot",
"execution_count": 1,
"outputs": [
{
"output_type": "stream",
"text": "C:\\Users\\IBM_ADMIN\\Anaconda2\\lib\\site-packages\\sklearn\\cross_validation.py:44: DeprecationWarning: This module was deprecated in version 0.18 in favor of the model_selection module into which all the refactored classes and functions are moved. Also note that the interface of the new CV iterators are different from that of this module. This module will be removed in 0.20.\n \"This module will be removed in 0.20.\", DeprecationWarning)\n",
"name": "stderr"
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "#### Load the data"
},
{
"metadata": {
"collapsed": false,
"trusted": true
},
"cell_type": "code",
"source": "#Load the data\n# Make dataset a Pandas DataFrame\ndf = pd.read_csv(\"C:\\\\data\\\\wisc_bc_data.csv\")\ndf.head()",
"execution_count": 2,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": "<div>\n<style>\n .dataframe thead tr:only-child th {\n text-align: right;\n }\n\n .dataframe thead th {\n text-align: left;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>id</th>\n <th>diagnosis</th>\n <th>radius_mean</th>\n <th>texture_mean</th>\n <th>perimeter_mean</th>\n <th>area_mean</th>\n <th>smoothness_mean</th>\n <th>compactness_mean</th>\n <th>concavity_mean</th>\n <th>concave points_mean</th>\n <th>...</th>\n <th>radius_worst</th>\n <th>texture_worst</th>\n <th>perimeter_worst</th>\n <th>area_worst</th>\n <th>smoothness_worst</th>\n <th>compactness_worst</th>\n <th>concavity_worst</th>\n <th>concave points_worst</th>\n <th>symmetry_worst</th>\n <th>fractal_dimension_worst</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>842302</td>\n <td>M</td>\n <td>17.99</td>\n <td>10.38</td>\n <td>122.80</td>\n <td>1001.0</td>\n <td>0.11840</td>\n <td>0.27760</td>\n <td>0.3001</td>\n <td>0.14710</td>\n <td>...</td>\n <td>25.38</td>\n <td>17.33</td>\n <td>184.60</td>\n <td>2019.0</td>\n <td>0.1622</td>\n <td>0.6656</td>\n <td>0.7119</td>\n <td>0.2654</td>\n <td>0.4601</td>\n <td>0.11890</td>\n </tr>\n <tr>\n <th>1</th>\n <td>842517</td>\n <td>M</td>\n <td>20.57</td>\n <td>17.77</td>\n <td>132.90</td>\n <td>1326.0</td>\n <td>0.08474</td>\n <td>0.07864</td>\n <td>0.0869</td>\n <td>0.07017</td>\n <td>...</td>\n <td>24.99</td>\n <td>23.41</td>\n <td>158.80</td>\n <td>1956.0</td>\n <td>0.1238</td>\n <td>0.1866</td>\n <td>0.2416</td>\n <td>0.1860</td>\n <td>0.2750</td>\n <td>0.08902</td>\n </tr>\n <tr>\n <th>2</th>\n <td>84300903</td>\n <td>M</td>\n <td>19.69</td>\n <td>21.25</td>\n <td>130.00</td>\n <td>1203.0</td>\n <td>0.10960</td>\n <td>0.15990</td>\n <td>0.1974</td>\n <td>0.12790</td>\n <td>...</td>\n <td>23.57</td>\n <td>25.53</td>\n <td>152.50</td>\n <td>1709.0</td>\n <td>0.1444</td>\n <td>0.4245</td>\n <td>0.4504</td>\n <td>0.2430</td>\n <td>0.3613</td>\n <td>0.08758</td>\n </tr>\n <tr>\n <th>3</th>\n <td>84348301</td>\n <td>M</td>\n <td>11.42</td>\n <td>20.38</td>\n <td>77.58</td>\n <td>386.1</td>\n <td>0.14250</td>\n <td>0.28390</td>\n <td>0.2414</td>\n <td>0.10520</td>\n <td>...</td>\n <td>14.91</td>\n <td>26.50</td>\n <td>98.87</td>\n <td>567.7</td>\n <td>0.2098</td>\n <td>0.8663</td>\n <td>0.6869</td>\n <td>0.2575</td>\n <td>0.6638</td>\n <td>0.17300</td>\n </tr>\n <tr>\n <th>4</th>\n <td>84358402</td>\n <td>M</td>\n <td>20.29</td>\n <td>14.34</td>\n <td>135.10</td>\n <td>1297.0</td>\n <td>0.10030</td>\n <td>0.13280</td>\n <td>0.1980</td>\n <td>0.10430</td>\n <td>...</td>\n <td>22.54</td>\n <td>16.67</td>\n <td>152.20</td>\n <td>1575.0</td>\n <td>0.1374</td>\n <td>0.2050</td>\n <td>0.4000</td>\n <td>0.1625</td>\n <td>0.2364</td>\n <td>0.07678</td>\n </tr>\n </tbody>\n</table>\n<p>5 rows × 32 columns</p>\n</div>",
"text/plain": " id diagnosis radius_mean texture_mean perimeter_mean area_mean \\\n0 842302 M 17.99 10.38 122.80 1001.0 \n1 842517 M 20.57 17.77 132.90 1326.0 \n2 84300903 M 19.69 21.25 130.00 1203.0 \n3 84348301 M 11.42 20.38 77.58 386.1 \n4 84358402 M 20.29 14.34 135.10 1297.0 \n\n smoothness_mean compactness_mean concavity_mean concave points_mean \\\n0 0.11840 0.27760 0.3001 0.14710 \n1 0.08474 0.07864 0.0869 0.07017 \n2 0.10960 0.15990 0.1974 0.12790 \n3 0.14250 0.28390 0.2414 0.10520 \n4 0.10030 0.13280 0.1980 0.10430 \n\n ... radius_worst texture_worst perimeter_worst \\\n0 ... 25.38 17.33 184.60 \n1 ... 24.99 23.41 158.80 \n2 ... 23.57 25.53 152.50 \n3 ... 14.91 26.50 98.87 \n4 ... 22.54 16.67 152.20 \n\n area_worst smoothness_worst compactness_worst concavity_worst \\\n0 2019.0 0.1622 0.6656 0.7119 \n1 1956.0 0.1238 0.1866 0.2416 \n2 1709.0 0.1444 0.4245 0.4504 \n3 567.7 0.2098 0.8663 0.6869 \n4 1575.0 0.1374 0.2050 0.4000 \n\n concave points_worst symmetry_worst fractal_dimension_worst \n0 0.2654 0.4601 0.11890 \n1 0.1860 0.2750 0.08902 \n2 0.2430 0.3613 0.08758 \n3 0.2575 0.6638 0.17300 \n4 0.1625 0.2364 0.07678 \n\n[5 rows x 32 columns]"
},
"metadata": {},
"execution_count": 2
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "#### One Hot Encoder"
},
{
"metadata": {
"collapsed": false,
"trusted": true
},
"cell_type": "code",
"source": "#transform attributes to algortim readable numeric representations of the original data.\nfor feature in df.columns:\n if df[feature].dtype=='object':\n le = LabelEncoder()\n df[feature] = le.fit_transform(df[feature])\ndf.tail(3)",
"execution_count": 3,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": "<div>\n<style>\n .dataframe thead tr:only-child th {\n text-align: right;\n }\n\n .dataframe thead th {\n text-align: left;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>id</th>\n <th>diagnosis</th>\n <th>radius_mean</th>\n <th>texture_mean</th>\n <th>perimeter_mean</th>\n <th>area_mean</th>\n <th>smoothness_mean</th>\n <th>compactness_mean</th>\n <th>concavity_mean</th>\n <th>concave points_mean</th>\n <th>...</th>\n <th>radius_worst</th>\n <th>texture_worst</th>\n <th>perimeter_worst</th>\n <th>area_worst</th>\n <th>smoothness_worst</th>\n <th>compactness_worst</th>\n <th>concavity_worst</th>\n <th>concave points_worst</th>\n <th>symmetry_worst</th>\n <th>fractal_dimension_worst</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>566</th>\n <td>926954</td>\n <td>1</td>\n <td>16.60</td>\n <td>28.08</td>\n <td>108.30</td>\n <td>858.1</td>\n <td>0.08455</td>\n <td>0.10230</td>\n <td>0.09251</td>\n <td>0.05302</td>\n <td>...</td>\n <td>18.980</td>\n <td>34.12</td>\n <td>126.70</td>\n <td>1124.0</td>\n <td>0.11390</td>\n <td>0.30940</td>\n <td>0.3403</td>\n <td>0.1418</td>\n <td>0.2218</td>\n <td>0.07820</td>\n </tr>\n <tr>\n <th>567</th>\n <td>927241</td>\n <td>1</td>\n <td>20.60</td>\n <td>29.33</td>\n <td>140.10</td>\n <td>1265.0</td>\n <td>0.11780</td>\n <td>0.27700</td>\n <td>0.35140</td>\n <td>0.15200</td>\n <td>...</td>\n <td>25.740</td>\n <td>39.42</td>\n <td>184.60</td>\n <td>1821.0</td>\n <td>0.16500</td>\n <td>0.86810</td>\n <td>0.9387</td>\n <td>0.2650</td>\n <td>0.4087</td>\n <td>0.12400</td>\n </tr>\n <tr>\n <th>568</th>\n <td>92751</td>\n <td>0</td>\n <td>7.76</td>\n <td>24.54</td>\n <td>47.92</td>\n <td>181.0</td>\n <td>0.05263</td>\n <td>0.04362</td>\n <td>0.00000</td>\n <td>0.00000</td>\n <td>...</td>\n <td>9.456</td>\n <td>30.37</td>\n <td>59.16</td>\n <td>268.6</td>\n <td>0.08996</td>\n <td>0.06444</td>\n <td>0.0000</td>\n <td>0.0000</td>\n <td>0.2871</td>\n <td>0.07039</td>\n </tr>\n </tbody>\n</table>\n<p>3 rows × 32 columns</p>\n</div>",
"text/plain": " id diagnosis radius_mean texture_mean perimeter_mean area_mean \\\n566 926954 1 16.60 28.08 108.30 858.1 \n567 927241 1 20.60 29.33 140.10 1265.0 \n568 92751 0 7.76 24.54 47.92 181.0 \n\n smoothness_mean compactness_mean concavity_mean concave points_mean \\\n566 0.08455 0.10230 0.09251 0.05302 \n567 0.11780 0.27700 0.35140 0.15200 \n568 0.05263 0.04362 0.00000 0.00000 \n\n ... radius_worst texture_worst perimeter_worst \\\n566 ... 18.980 34.12 126.70 \n567 ... 25.740 39.42 184.60 \n568 ... 9.456 30.37 59.16 \n\n area_worst smoothness_worst compactness_worst concavity_worst \\\n566 1124.0 0.11390 0.30940 0.3403 \n567 1821.0 0.16500 0.86810 0.9387 \n568 268.6 0.08996 0.06444 0.0000 \n\n concave points_worst symmetry_worst fractal_dimension_worst \n566 0.1418 0.2218 0.07820 \n567 0.2650 0.4087 0.12400 \n568 0.0000 0.2871 0.07039 \n\n[3 rows x 32 columns]"
},
"metadata": {},
"execution_count": 3
}
]
},
{
"metadata": {
"collapsed": false,
"trusted": true
},
"cell_type": "code",
"source": "y = df.diagnosis.values\nX = df.drop('diagnosis', axis=1)",
"execution_count": 4,
"outputs": []
},
{
"metadata": {
"collapsed": true,
"trusted": true
},
"cell_type": "code",
"source": "#split the data into training and test data sets\nfrom sklearn.cross_validation import train_test_split\nX_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)",
"execution_count": 5,
"outputs": []
},
{
"metadata": {},
"cell_type": "markdown",
"source": "### Gradient Boosting Machine (GBM)"
},
{
"metadata": {
"collapsed": false,
"trusted": true
},
"cell_type": "code",
"source": "#Build a GBM classification model, create a variable to define the desired parameters to \n#opitmize performance and reduce over fitting\nfrom sklearn import ensemble\nparams = {'n_estimators': 1200, 'max_depth': 5, 'subsample': 0.5,\n 'learning_rate': 0.01, 'min_samples_leaf': 1, 'random_state': 3 }\ngbm1 = ensemble.GradientBoostingClassifier(**params)",
"execution_count": 6,
"outputs": []
},
{
"metadata": {
"collapsed": false,
"trusted": true
},
"cell_type": "code",
"source": "gbm1.fit(X_train, y_train)\nacc = gbm1.score(X_test, y_test)\nprint(\"Accuracy: {:.4f}\".format(acc))",
"execution_count": 7,
"outputs": [
{
"output_type": "stream",
"text": "Accuracy: 0.9720\n",
"name": "stdout"
}
]
},
{
"metadata": {
"collapsed": false,
"trusted": true
},
"cell_type": "code",
"source": "#Make class predictions for the test set\ny_predict_class_gbm = gbm1.predict(X_test)\n#Make prediction probabailties for the test set\ny_predict_proba_gbm = gbm1.predict_proba(X_test)[:,1]",
"execution_count": 8,
"outputs": []
},
{
"metadata": {},
"cell_type": "markdown",
"source": "### Improving performance: Gradient Boosting Machine - Decreased Learning Rate\n\nHaving summarized and examined the model, it was then applied to the test dataset further where a predicted score & confusion table was generated to compare performance against predicted values.\n\nBoosting is implemented to combine weak performer learners, creating a model which should improve accuracy. The parameters are specified (n_estimators': 1200, 'max_depth': 5, 'subsample': 0.5,'learning_rate': 0.01,'min_samples_leaf': 1,'random_state': 3) in such away to improve performance and reduce overfitting thus producing an out of the bag model, where the results were noted as having improved on the initial model.\n\n##### Learning Rate: \n\nGradient boosting Machines esembles in a stage-wise fashion like other boosting methods do, and it generalizes them by allowing optimization of an arbitrary differentiable loss function.\nThe number of weak learners (i.e. decision trees) is controlled by the number of estimators; The size of each tree can be controlled either by max_depth or the learning_rate is a hyper-parameter in the range (0.0, 1.0) that controls overfitting via shrinkage which gradually reduces the impact of predictions of each subsequent tree generated. however increased shrinkage lead to longer run times. In the model created below we set the learning rate to 0.05 which is shown to improve the model performance."
},
{
"metadata": {
"trusted": true,
"collapsed": false
},
"cell_type": "code",
"source": "from sklearn.ensemble import GradientBoostingClassifier as gbm\nparams_dict = {'n_estimators': 1200, 'random_state': 3}\nplt.figure()\nfor label, color, setting in [('Depth 2, Lr = 0.01', 'turquoise', {'learning_rate': 0.01, 'max_depth': 2}),\n ('Depth 4, Lr = 0.01', 'green', {'learning_rate': 0.01, 'max_depth': 4}),\n ('Depth 6, Lr = 0.01', 'blue', {'learning_rate':0.01, 'max_depth': 6 }),\n ('Depth 2, Lr= 0.05', 'red', {'learning_rate': 0.05, 'max_depth': 2}),\n ('Depth 4, Lr = 0.05', 'orange', {'learning_rate': 0.05, 'max_depth': 4}),\n ('Depth 6, Lr = 0.05', 'indigo', {'learning_rate':0.05, 'max_depth': 6 })]:\n params_1 = dict(params_dict)\n params_1.update(setting)\n gbm_lr = gbm(**params_1)\n gbm_lr.fit(X_train, y_train)\n #calcualte the area under the curce (auc) for the test set\n test_deviance = np.zeros((params_1['n_estimators'],), dtype=np.float64)\n for g, y_pred in enumerate(gbm_lr.staged_predict_proba(X_test)):\n test_deviance[g] =roc_auc_score(y_test, y_pred[:,1])\n plt.plot((np.arange(test_deviance.shape[0]) + 1), test_deviance, '-', color=color, label=label)\n\nplt.legend(loc='lower left')\npyplot.ylim(0.8, 1.0)\nplt.xlabel('Boosting Iterations')\npyplot.ylabel(\"validation auc\")\nplt.figure(figsize=(12,12))\nplt.show()",
"execution_count": 9,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\nAAAASUVORK5CYII=\n",
"text/plain": "<matplotlib.figure.Figure at 0xe80ada0>"
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": "<matplotlib.figure.Figure at 0xf2672e8>"
},
"metadata": {}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "### Visual examination of improved performance by tuning the hyper-paramters learning rate\n\nThe AUC plot below demonstrates the improved performance and algorithm control of the learning rate over time on the test data. We see as the tree depth increases from 2(turquoise line), 4(green line) & 6(blue line) with learning rate set 0.01 as the tree grows towards the max depth of 6 the learning on the data starts to stagnate as evident from the blue line above.\n\nOn review of the altering the learning rate to 0.05 we see better control and reduced shrinkage as eveident from the red, orange and indigo lines on the graph. Initially learning is slow but we see that improvement over time as the each line begins to gradually incline and straighten. "
},
{
"metadata": {},
"cell_type": "markdown",
"source": "#### Gradient Boosting Machine - alter model learning Rate to 0.5"
},
{
"metadata": {
"collapsed": true,
"trusted": true
},
"cell_type": "code",
"source": "params1 = {'n_estimators': 1200, 'max_depth': 5, 'subsample': 0.5,\n 'learning_rate': 0.05, 'min_samples_leaf': 1, 'random_state': 3 }\ngbm2 = ensemble.GradientBoostingClassifier(**params1)",
"execution_count": 10,
"outputs": []
},
{
"metadata": {
"collapsed": false,
"trusted": true
},
"cell_type": "code",
"source": "gbm2.fit(X_train, y_train)\nacc = gbm2.score(X_test, y_test)\nprint(\"Accuracy: {:.4f}\".format(acc))",
"execution_count": 11,
"outputs": [
{
"output_type": "stream",
"text": "Accuracy: 0.9790\n",
"name": "stdout"
}
]
},
{
"metadata": {
"trusted": true,
"collapsed": true
},
"cell_type": "code",
"source": "#Make class predictions for the test set\ny_predict_class_gbm2 = gbm2.predict(X_test)\n#Make prediction probabailties for the test set\ny_predict_proba_gbm2 = gbm2.predict_proba(X_test)[:,1]",
"execution_count": 12,
"outputs": []
},
{
"metadata": {},
"cell_type": "markdown",
"source": "### Decision Tree Classifier - Max Depth 4"
},
{
"metadata": {
"collapsed": false,
"trusted": true
},
"cell_type": "code",
"source": "#Create decision tree classifier with max depth 4 and print out the accuracy.\nfrom sklearn import tree\nparams2 = {'max_depth': 4 , 'min_samples_split': 2, 'min_samples_leaf': 2, 'min_weight_fraction_leaf': 0.5} \ntree1 = tree.DecisionTreeClassifier(**params2)\ntree1 = tree1.fit(X_test, y_test)\nacc2 = tree1.score(X_test, y_test)\nprint(\"Accuracy: {:.4f}\".format(acc2))",
"execution_count": 13,
"outputs": [
{
"output_type": "stream",
"text": "Accuracy: 0.9930\n",
"name": "stdout"
}
]
},
{
"metadata": {
"collapsed": false,
"trusted": true
},
"cell_type": "code",
"source": "#Make class predictions for the test set\ny_predict_class_tree1 = tree1.predict(X_test)\n#Make prediction probabailties for the test set\ny_predict_proba_tree1 = tree1.predict_proba(X_test)[:,1]",
"execution_count": 14,
"outputs": []
},
{
"metadata": {},
"cell_type": "markdown",
"source": "#### Area Under AUC Curve\n\nThe ROC curve helps to select a threshold value that balances sensitivity and specificity in a way that makes sense.\n\nAUC is a popular metric. I believe it is a good metric given the unbalaced classes seen above. It is used to judge predictions in binary response (0/1) problem. It is only sensitive to the order determined by the predictions and not their magnitudes.\n\nFor other evaluation methods, a user has to choose a cut-off point above which the target variable is part of the positive class (e.g. a logistic regression model returns any real number between 0 and 1 - the modeler might decide that predictions greater than 0.5 mean a positive class prediction while a prediction of less than 0.5 mean a negative class prediction). AUC evaluates entries at all cut-off points, giving better insight into how well the classifier is able to separate the two classes.\n"
},
{
"metadata": {},
"cell_type": "markdown",
"source": "#### ROC Curve for Cancer Prediction - Gradient Boosting Machine - learning rate 0.01"
},
{
"metadata": {
"collapsed": false,
"trusted": true
},
"cell_type": "code",
"source": "fpr, tpr, thresholds = metrics.roc_curve(y_test, y_predict_proba_gbm)\nplt.plot(fpr, tpr)\nplt.xlim([0.0,1.0])\nplt.ylim([0.0,1.0])\nplt.title('ROC Curve for Cancer Prediction Gradient Boosting Machine - learning rate 0.01')\nplt.xlabel('False Positive Rate(1 - specificity)')\nplt.ylabel('True Positive Rate(sensitivity)')\nplt.grid(True)",
"execution_count": 15,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": "<matplotlib.figure.Figure at 0x10c1f518>"
},
"metadata": {}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "#### ROC Curve for Cancer Prediction - Gradient Boosting Machine - learning rate 0.05"
},
{
"metadata": {
"collapsed": false,
"trusted": true
},
"cell_type": "code",
"source": "fpr, tpr, thresholds = metrics.roc_curve(y_test, y_predict_proba_gbm2)\nplt.plot(fpr, tpr)\nplt.xlim([0.0,1.0])\nplt.ylim([0.0,1.0])\nplt.title('ROC Curve for Cancer Prediction Gradient Boosting Machine - learning rate 0.05')\nplt.xlabel('False Positive Rate(1 - specificity)')\nplt.ylabel('True Positive Rate(sensitivity)')\nplt.grid(True)",
"execution_count": 16,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": "<matplotlib.figure.Figure at 0x10c85748>"
},
"metadata": {}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "#### ROC Curve for Cancer Prediction - Decison Tree - Max Depth 4"
},
{
"metadata": {
"trusted": true,
"collapsed": false
},
"cell_type": "code",
"source": "fpr, tpr, thresholds = metrics.roc_curve(y_test, y_predict_proba_tree1)\nplt.plot(fpr, tpr)\nplt.xlim([0.0,1.0])\nplt.ylim([0.0,1.0])\nplt.title('ROC Curve for Cancer Prediction - Decision Tree - Max Depth 4')\nplt.xlabel('False Positive Rate(1 - specificity)')\nplt.ylabel('True Positive Rate(sensitivity)')\nplt.grid(True)",
"execution_count": 17,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\njQAAAABJRU5ErkJggg==\n",
"text/plain": "<matplotlib.figure.Figure at 0xed29d30>"
},
"metadata": {}
}
]
}
],
"metadata": {
"kernelspec": {
"name": "python2",
"display_name": "Python 2",
"language": "python"
},
"language_info": {
"mimetype": "text/x-python",
"nbconvert_exporter": "python",
"name": "python",
"pygments_lexer": "ipython2",
"version": "2.7.11",
"file_extension": ".py",
"codemirror_mode": {
"version": 2,
"name": "ipython"
}
},
"gist": {
"id": "",
"data": {
"description": "Gradient Boosting Machines Out of Bag - Sklearn.ipynb",
"public": true
}
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment