Skip to content

Instantly share code, notes, and snippets.

@preinoso
Created July 20, 2018 17:51
Show Gist options
  • Save preinoso/d1549be95a909dcefe81060aa2c809ce to your computer and use it in GitHub Desktop.
Save preinoso/d1549be95a909dcefe81060aa2c809ce to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"nbformat_minor": 1,
"cells": [
{
"source": "import numpy as np\nimport matplotlib.pyplot as plt\nimport sys\nimport types\nimport pandas as pd\nfrom botocore.client import Config\nimport ibm_boto3\n\ndef __iter__(self): return 0\n\n# @hidden_cell\n# The following code accesses a file in your IBM Cloud Object Storage. It includes your credentials.\n# You might want to remove those credentials before you share your notebook.\nclient_3c8e693d06af4365939817e0bbfe6d43 = ibm_boto3.client(service_name='s3',\n ibm_api_key_id='hyNVQyWI6KIWAEgAqb05slsmvJUx3pDh80q3wrmCpsSE',\n ibm_auth_endpoint=\"https://iam.ng.bluemix.net/oidc/token\",\n config=Config(signature_version='oauth'),\n endpoint_url='https://s3-api.us-geo.objectstorage.service.networklayer.com')\n\nbody = client_3c8e693d06af4365939817e0bbfe6d43.get_object(Bucket='prueba-donotdelete-pr-yxrhqnuprqs3rc',Key='ALTAS_PREPAGO_V1_3DIAS_V3_comma.csv')['Body']\n# add missing __iter__ method, so pandas accepts body as file-like object\nif not hasattr(body, \"__iter__\"): body.__iter__ = types.MethodType( __iter__, body )\n\ndf_data_1 = pd.read_csv(body)\ndf_data_1.head()\n\n",
"cell_type": "code",
"metadata": {},
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>PERIODO_PARQUE</th>\n <th>NUMERO_ABONADO</th>\n <th>FECHA_ALTA</th>\n <th>REC_SUM</th>\n <th>REC_MIN</th>\n <th>REC_MAX</th>\n <th>REC_AVG</th>\n <th>REC_Q</th>\n <th>F_REC_ACT</th>\n <th>F_REC_MES</th>\n <th>...</th>\n <th>F_DATOS_RRSS_ENTEL_2G</th>\n <th>F_DATOS_RRSS_ENTEL_3G</th>\n <th>F_DATOS_RRSS_MOVISTAR_2G</th>\n <th>F_DATOS_RRSS_MOVISTAR_3G</th>\n <th>DIAS_TRAF_DATOS</th>\n <th>F_ITX_MOU_ENT</th>\n <th>F_ITX_CANT_ENT</th>\n <th>F_ITX_MOU_SAL</th>\n <th>F_ITX_CANT_SAL</th>\n <th>DIAS_TRAF_VOZ</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>201801</td>\n <td>56934879798</td>\n <td>2018-01-03 00:00:00.000000</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>1</td>\n <td>...</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>3</td>\n <td>146</td>\n <td>2</td>\n <td>0</td>\n <td>0</td>\n <td>1</td>\n </tr>\n <tr>\n <th>1</th>\n <td>201801</td>\n <td>56935184362</td>\n <td>2018-01-31 00:00:00.000000</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>1</td>\n <td>...</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>3</td>\n <td>167</td>\n <td>4</td>\n <td>0</td>\n <td>0</td>\n <td>2</td>\n </tr>\n <tr>\n <th>2</th>\n <td>201802</td>\n <td>56949053934</td>\n <td>2018-02-19 00:00:00.000000</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>1</td>\n <td>...</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>3</td>\n <td>0</td>\n <td>0</td>\n <td>394</td>\n <td>6</td>\n <td>3</td>\n </tr>\n <tr>\n <th>3</th>\n <td>201802</td>\n <td>56935536688</td>\n <td>2018-02-24 00:00:00.000000</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>...</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>1</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n </tr>\n <tr>\n <th>4</th>\n <td>201802</td>\n <td>56933127291</td>\n <td>2018-02-25 00:00:00.000000</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>1</td>\n <td>1</td>\n <td>...</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>3</td>\n <td>0</td>\n <td>0</td>\n <td>11</td>\n <td>1</td>\n <td>1</td>\n </tr>\n </tbody>\n</table>\n<p>5 rows \u00d7 34 columns</p>\n</div>",
"text/plain": " PERIODO_PARQUE NUMERO_ABONADO FECHA_ALTA REC_SUM \\\n0 201801 56934879798 2018-01-03 00:00:00.000000 0 \n1 201801 56935184362 2018-01-31 00:00:00.000000 0 \n2 201802 56949053934 2018-02-19 00:00:00.000000 0 \n3 201802 56935536688 2018-02-24 00:00:00.000000 0 \n4 201802 56933127291 2018-02-25 00:00:00.000000 0 \n\n REC_MIN REC_MAX REC_AVG REC_Q F_REC_ACT F_REC_MES ... \\\n0 0 0 0 0 0 1 ... \n1 0 0 0 0 0 1 ... \n2 0 0 0 0 0 1 ... \n3 0 0 0 0 0 0 ... \n4 0 0 0 0 1 1 ... \n\n F_DATOS_RRSS_ENTEL_2G F_DATOS_RRSS_ENTEL_3G F_DATOS_RRSS_MOVISTAR_2G \\\n0 0 0 0 \n1 0 0 0 \n2 0 0 0 \n3 0 0 0 \n4 0 0 0 \n\n F_DATOS_RRSS_MOVISTAR_3G DIAS_TRAF_DATOS F_ITX_MOU_ENT F_ITX_CANT_ENT \\\n0 0 3 146 2 \n1 0 3 167 4 \n2 0 3 0 0 \n3 0 1 0 0 \n4 0 3 0 0 \n\n F_ITX_MOU_SAL F_ITX_CANT_SAL DIAS_TRAF_VOZ \n0 0 0 1 \n1 0 0 2 \n2 394 6 3 \n3 0 0 0 \n4 11 1 1 \n\n[5 rows x 34 columns]"
},
"execution_count": 1,
"metadata": {}
}
],
"execution_count": 1
},
{
"source": "y = df_data_1.iloc[:, 9].values\n\nX = df_data_1.iloc[:, [3,4,5,6,7,8,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33]].values",
"cell_type": "code",
"metadata": {},
"outputs": [],
"execution_count": 2
},
{
"source": "from sklearn.model_selection import train_test_split\nX_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.3, random_state = 0)",
"cell_type": "code",
"metadata": {},
"outputs": [],
"execution_count": 3
},
{
"source": "from sklearn.preprocessing import StandardScaler\nsc_X = StandardScaler()\nX_train = sc_X.fit_transform(X_train)\nX_test = sc_X.transform(X_test)",
"cell_type": "code",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"name": "stderr",
"text": "/opt/conda/envs/DSX-Python35/lib/python3.5/site-packages/sklearn/utils/validation.py:475: DataConversionWarning: Data with input dtype int64 was converted to float64 by StandardScaler.\n warnings.warn(msg, DataConversionWarning)\n"
}
],
"execution_count": 4
},
{
"source": "## Random Forest",
"cell_type": "markdown",
"metadata": {}
},
{
"source": "#Random Forest\nfrom sklearn.ensemble import RandomForestClassifier \nclassifier_rf = RandomForestClassifier(n_estimators = 100, criterion = 'entropy', random_state = 42)\nclassifier_rf.fit(X_train, y_train)\n\n# Predicting the Test set result\ny_pred_rf = classifier_rf.predict(X_test)\ny_pred_rf_p = classifier_rf.predict_proba(X_test)\n\n# Making the Confusion Matrix\nfrom sklearn.metrics import confusion_matrix\ncm_rf = confusion_matrix(y_test, y_pred_rf)\ncm_rf",
"cell_type": "code",
"metadata": {},
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": "array([[126490, 17850],\n [ 34673, 24104]])"
},
"execution_count": 5,
"metadata": {}
}
],
"execution_count": 5
},
{
"source": "#Precision-Recall Curve\nfrom sklearn.metrics import average_precision_score\nfrom sklearn.metrics import precision_recall_curve\n\naverage_precision = average_precision_score(y_test, y_pred_rf_p[:,1])\nprecision, recall, _ = precision_recall_curve(y_test, y_pred_rf_p[:,1])\n\nplt.step(recall, precision, color='b', alpha=0.2,\n where='post')\nplt.fill_between(recall, precision, step='post', alpha=0.2,\n color='b')\n\nplt.xlabel('Recall')\nplt.ylabel('Precision')\nplt.ylim([0.0, 1.05])\nplt.xlim([0.0, 1.0])\nplt.title('2-class Precision-Recall curve: AP={0:0.2f}'.format(average_precision))\nplt.show()",
"cell_type": "code",
"metadata": {},
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": "<matplotlib.figure.Figure at 0x7f9645abd7b8>"
},
"metadata": {}
}
],
"execution_count": 6
},
{
"source": "from sklearn.metrics import roc_curve\nfrom sklearn.metrics import roc_auc_score\n\nfpr_rf, tpr_rf, _ = roc_curve(y_test, y_pred_rf_p[:,1])\nauc_score_rf = roc_auc_score(y_test, y_pred_rf_p[:,1])\n\nplt.figure(1)\nplt.plot([0, 1], [0, 1], 'k--')\nplt.plot(fpr_rf, tpr_rf, label='RF')\nplt.xlabel('False positive rate')\nplt.ylabel('True positive rate')\nplt.title('ROC curve: AUC = {0:0.2f}'.format(auc_score_rf))\nplt.legend(loc='best')\nplt.show()",
"cell_type": "code",
"metadata": {},
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": "<matplotlib.figure.Figure at 0x7f9674152da0>"
},
"metadata": {}
}
],
"execution_count": 7
},
{
"source": "results = np.c_[y_pred_rf_p[:,1], y_test]\n#results = results[results[:,0].argsort(kind='mergesort')[::-1]]\nresults = results[results[:,0].argsort(kind='mergesort')]\n\nlabels = ['score', 'label']\n\ndf_deciles = pd.DataFrame({'score':results[:,0], 'label':results[:,1]})\n#resultados.head()\n\ndf_deciles['decile'] = pd.qcut(df_deciles['score'].rank(method='first'), 10, labels = False)\n\nresponses = df_deciles.groupby(['decile'])['label'].agg('sum')/df_deciles.groupby(['decile'])['label'].agg('count')*100\nprint(responses)\n\n##################################################\n# PLOT\n##################################################\ncategories = range(1,11)\ncounts = responses\n\nind = np.array(range(len(categories)))\nwidth = 0.35\n\nplt.figure(figsize=(10, 4))\nplt.bar(ind, counts, width=width, color='g', align='center')\nplt.ylabel('Q')\nplt.title('PORCENTAJE DE RECARGAS POR DECIL DE SCORE')\nplt.xticks(ind + width, categories)\nplt.show()",
"cell_type": "code",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": "decile\n0 8.123277\n1 5.218590\n2 8.207375\n3 15.591768\n4 23.316266\n5 30.840431\n6 37.628003\n7 44.970706\n8 52.875148\n9 62.603387\nName: label, dtype: float64\n"
},
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": "<matplotlib.figure.Figure at 0x7f9640610710>"
},
"metadata": {}
}
],
"execution_count": 8
},
{
"source": "## K-NN",
"cell_type": "markdown",
"metadata": {}
},
{
"source": "#KNN\nfrom sklearn.neighbors import KNeighborsClassifier\nclassifier_knn = KNeighborsClassifier(n_neighbors = 5, metric = 'minkowski', p = 2)\nclassifier_knn.fit(X_train, y_train)\n\n# Predicting the Test set result\ny_pred_knn = classifier_knn.predict(X_test)\ny_pred_knn_p = classifier_knn_p.predict_proba(X_test)\n\n# Making the Confusion Matrix\nfrom sklearn.metrics import confusion_matrix\ncm_knn = confusion_matrix(y_test, y_pred_knn_p)\ncm_knn",
"cell_type": "code",
"metadata": {},
"outputs": [
{
"output_type": "error",
"evalue": "name 'classifier_knn_p' is not defined",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-9-b23f1e97acd7>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0;31m# Predicting the Test set result\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0my_pred_knn\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mclassifier_knn\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpredict\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX_test\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 8\u001b[0;31m \u001b[0my_pred_knn_p\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mclassifier_knn_p\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpredict_proba\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX_test\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 9\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 10\u001b[0m \u001b[0;31m# Making the Confusion Matrix\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mNameError\u001b[0m: name 'classifier_knn_p' is not defined"
],
"ename": "NameError"
}
],
"execution_count": 9
},
{
"source": "fpr_knn, tpr_knn, _ = roc_curve(y_test, y_pred_knn_p[:,1])\nauc_score = roc_auc_score(y_test, y_pred_knn_p[:,1])\n\nplt.figure(1)\nplt.plot([0, 1], [0, 1], 'k--')\nplt.plot(fpr_knn, tpr_knn, label='RF')\nplt.xlabel('False positive rate')\nplt.ylabel('True positive rate')\nplt.title('ROC curve: AUC = {0:0.2f}'.format(auc_score))\nplt.legend(loc='best')\nplt.show()",
"cell_type": "code",
"metadata": {},
"outputs": [],
"execution_count": null
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3.5",
"name": "python3",
"language": "python"
},
"language_info": {
"mimetype": "text/x-python",
"nbconvert_exporter": "python",
"version": "3.5.5",
"name": "python",
"pygments_lexer": "ipython3",
"file_extension": ".py",
"codemirror_mode": {
"version": 3,
"name": "ipython"
}
}
},
"nbformat": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment