{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Loan default notebook\n",
"\n",
"Many credit decisioning systems are driven by scorecards, which are very simplistic rules-based systems. These are built by end-user organizations through industry knowledge or through simple statistical systems. Some organizations go a step further and obtain scorecards from third parties which may not be customized for an individual organization’s book. An AI-based approach can help financial institutions learn signals from their own book and assess risk at a more granular level. Once the risk is calculated, a strategy may be implemented to use this information for interventions. If you can predict someone is going to default, this may lead to intervention steps such as sending earlier notices or rejecting loan applications.\n",
"\n",
"## Setup\n",
"\n",
"This example assumes that the DataRobot Python client package has been installed and configured with the credentials of a DataRobot user with API access permissions. Retrieve your DataRobot API Token by logging into DataRobot and navigating to the Developer Tools in your profile.\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"autoscroll": "auto"
},
"outputs": [],
"source": [
"!pip install datarobot umap-learn nbformat hdbscan\n",
"\n",
"import datarobot as dr\n",
"import matplotlib.pyplot as plt\n",
"import matplotlib.ticker as mtick\n",
"import numpy as np\n",
"import pandas as pd\n",
"\n",
"light_blue = \"#598fd6\"\n",
"grey_blue = \"#5f728b\"\n",
"orange = \"#dd6b3d\""
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Connect to DataRobot\n",
"\n",
"Read more about different options for [connecting to DataRobot from the client](https://docs.datarobot.com/en/docs/api/api-quickstart/api-qs.html)."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# If the config file is not in the default location described in the API Quickstart guide, '~/.config/datarobot/drconfig.yaml', then you will need to call\n",
"# dr.Client(config_path='path-to-drconfig.yaml')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Import data\n",
"\n",
"The data file is hosted by DataRobot using the URL in the following cell. Read in the data directly from the URL into a [Pandas DataFrame](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.html) and display the results to verify all of the data looks correct. If you have your own data files you can access that data in several ways."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"autoscroll": "auto"
},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
id
\n",
"
member_id
\n",
"
loan_amnt
\n",
"
funded_amnt
\n",
"
installment
\n",
"
grade
\n",
"
sub_grade
\n",
"
emp_title
\n",
"
emp_length
\n",
"
home_ownership
\n",
"
...
\n",
"
revol_util
\n",
"
total_acc
\n",
"
initial_list_status
\n",
"
collections_12_mths_ex_med
\n",
"
mths_since_last_major_derog
\n",
"
application_type
\n",
"
acc_now_delinq
\n",
"
tot_coll_amt
\n",
"
tot_cur_bal
\n",
"
is_bad
\n",
"
\n",
" \n",
" \n",
"
\n",
"
0
\n",
"
3296446
\n",
"
4068857
\n",
"
11200
\n",
"
11200
\n",
"
343.89
\n",
"
A
\n",
"
A2
\n",
"
Nokia Siemens Network
\n",
"
10.0
\n",
"
OWN
\n",
"
...
\n",
"
66.20%
\n",
"
21
\n",
"
f
\n",
"
0
\n",
"
NaN
\n",
"
INDIVIDUAL
\n",
"
0
\n",
"
0.0
\n",
"
187717.0
\n",
"
False
\n",
"
\n",
"
\n",
"
1
\n",
"
3286412
\n",
"
4058853
\n",
"
10000
\n",
"
10000
\n",
"
328.06
\n",
"
B
\n",
"
B2
\n",
"
creative financial group
\n",
"
2.0
\n",
"
MORTGAGE
\n",
"
...
\n",
"
74.20%
\n",
"
11
\n",
"
f
\n",
"
0
\n",
"
NaN
\n",
"
INDIVIDUAL
\n",
"
0
\n",
"
0.0
\n",
"
16623.0
\n",
"
True
\n",
"
\n",
"
\n",
"
2
\n",
"
3286406
\n",
"
4058848
\n",
"
8000
\n",
"
8000
\n",
"
282.41
\n",
"
C
\n",
"
C4
\n",
"
Techtron Systems
\n",
"
7.0
\n",
"
RENT
\n",
"
...
\n",
"
72%
\n",
"
17
\n",
"
w
\n",
"
0
\n",
"
NaN
\n",
"
INDIVIDUAL
\n",
"
0
\n",
"
0.0
\n",
"
17938.0
\n",
"
False
\n",
"
\n",
"
\n",
"
3
\n",
"
3296434
\n",
"
4068843
\n",
"
16000
\n",
"
16000
\n",
"
500.65
\n",
"
A
\n",
"
A4
\n",
"
Bristol Hospital
\n",
"
10.0
\n",
"
MORTGAGE
\n",
"
...
\n",
"
75.20%
\n",
"
56
\n",
"
f
\n",
"
0
\n",
"
NaN
\n",
"
INDIVIDUAL
\n",
"
0
\n",
"
0.0
\n",
"
372771.0
\n",
"
False
\n",
"
\n",
"
\n",
"
4
\n",
"
3286395
\n",
"
4058836
\n",
"
4000
\n",
"
4000
\n",
"
125.17
\n",
"
A
\n",
"
A4
\n",
"
Aspen Skiing Company
\n",
"
10.0
\n",
"
MORTGAGE
\n",
"
...
\n",
"
95.50%
\n",
"
21
\n",
"
w
\n",
"
0
\n",
"
NaN
\n",
"
INDIVIDUAL
\n",
"
0
\n",
"
0.0
\n",
"
331205.0
\n",
"
False
\n",
"
\n",
"
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
\n",
"
\n",
"
95
\n",
"
3286021
\n",
"
4058369
\n",
"
4000
\n",
"
4000
\n",
"
146.12
\n",
"
D
\n",
"
D3
\n",
"
Morton Plant Hospital
\n",
"
6.0
\n",
"
MORTGAGE
\n",
"
...
\n",
"
84.80%
\n",
"
21
\n",
"
f
\n",
"
0
\n",
"
NaN
\n",
"
INDIVIDUAL
\n",
"
0
\n",
"
0.0
\n",
"
112600.0
\n",
"
False
\n",
"
\n",
"
\n",
"
96
\n",
"
2835185
\n",
"
3417435
\n",
"
8500
\n",
"
8500
\n",
"
264.88
\n",
"
A
\n",
"
A3
\n",
"
The Adocate/Hearst News
\n",
"
5.0
\n",
"
MORTGAGE
\n",
"
...
\n",
"
28.70%
\n",
"
19
\n",
"
w
\n",
"
0
\n",
"
NaN
\n",
"
INDIVIDUAL
\n",
"
0
\n",
"
0.0
\n",
"
112238.0
\n",
"
False
\n",
"
\n",
"
\n",
"
97
\n",
"
3241124
\n",
"
3984059
\n",
"
13000
\n",
"
13000
\n",
"
432.54
\n",
"
B
\n",
"
B3
\n",
"
Southwest ISD
\n",
"
3.0
\n",
"
MORTGAGE
\n",
"
...
\n",
"
57.90%
\n",
"
18
\n",
"
f
\n",
"
0
\n",
"
NaN
\n",
"
INDIVIDUAL
\n",
"
0
\n",
"
202.0
\n",
"
120076.0
\n",
"
False
\n",
"
\n",
"
\n",
"
98
\n",
"
3198040
\n",
"
3930968
\n",
"
20000
\n",
"
20000
\n",
"
608.72
\n",
"
A
\n",
"
A1
\n",
"
west texas a&m university
\n",
"
5.0
\n",
"
MORTGAGE
\n",
"
...
\n",
"
39.90%
\n",
"
27
\n",
"
f
\n",
"
0
\n",
"
NaN
\n",
"
INDIVIDUAL
\n",
"
0
\n",
"
0.0
\n",
"
230748.0
\n",
"
False
\n",
"
\n",
"
\n",
"
99
\n",
"
3188257
\n",
"
3921251
\n",
"
16000
\n",
"
16000
\n",
"
387.40
\n",
"
C
\n",
"
C3
\n",
"
Antea Group
\n",
"
1.0
\n",
"
MORTGAGE
\n",
"
...
\n",
"
54.60%
\n",
"
28
\n",
"
f
\n",
"
0
\n",
"
NaN
\n",
"
INDIVIDUAL
\n",
"
0
\n",
"
0.0
\n",
"
194506.0
\n",
"
False
\n",
"
\n",
" \n",
"
\n",
"
100 rows × 34 columns
\n",
"
"
],
"text/plain": [
" id member_id loan_amnt funded_amnt installment grade sub_grade \\\n",
"0 3296446 4068857 11200 11200 343.89 A A2 \n",
"1 3286412 4058853 10000 10000 328.06 B B2 \n",
"2 3286406 4058848 8000 8000 282.41 C C4 \n",
"3 3296434 4068843 16000 16000 500.65 A A4 \n",
"4 3286395 4058836 4000 4000 125.17 A A4 \n",
".. ... ... ... ... ... ... ... \n",
"95 3286021 4058369 4000 4000 146.12 D D3 \n",
"96 2835185 3417435 8500 8500 264.88 A A3 \n",
"97 3241124 3984059 13000 13000 432.54 B B3 \n",
"98 3198040 3930968 20000 20000 608.72 A A1 \n",
"99 3188257 3921251 16000 16000 387.40 C C3 \n",
"\n",
" emp_title emp_length home_ownership ... revol_util \\\n",
"0 Nokia Siemens Network 10.0 OWN ... 66.20% \n",
"1 creative financial group 2.0 MORTGAGE ... 74.20% \n",
"2 Techtron Systems 7.0 RENT ... 72% \n",
"3 Bristol Hospital 10.0 MORTGAGE ... 75.20% \n",
"4 Aspen Skiing Company 10.0 MORTGAGE ... 95.50% \n",
".. ... ... ... ... ... \n",
"95 Morton Plant Hospital 6.0 MORTGAGE ... 84.80% \n",
"96 The Adocate/Hearst News 5.0 MORTGAGE ... 28.70% \n",
"97 Southwest ISD 3.0 MORTGAGE ... 57.90% \n",
"98 west texas a&m university 5.0 MORTGAGE ... 39.90% \n",
"99 Antea Group 1.0 MORTGAGE ... 54.60% \n",
"\n",
" total_acc initial_list_status collections_12_mths_ex_med \\\n",
"0 21 f 0 \n",
"1 11 f 0 \n",
"2 17 w 0 \n",
"3 56 f 0 \n",
"4 21 w 0 \n",
".. ... ... ... \n",
"95 21 f 0 \n",
"96 19 w 0 \n",
"97 18 f 0 \n",
"98 27 f 0 \n",
"99 28 f 0 \n",
"\n",
" mths_since_last_major_derog application_type acc_now_delinq tot_coll_amt \\\n",
"0 NaN INDIVIDUAL 0 0.0 \n",
"1 NaN INDIVIDUAL 0 0.0 \n",
"2 NaN INDIVIDUAL 0 0.0 \n",
"3 NaN INDIVIDUAL 0 0.0 \n",
"4 NaN INDIVIDUAL 0 0.0 \n",
".. ... ... ... ... \n",
"95 NaN INDIVIDUAL 0 0.0 \n",
"96 NaN INDIVIDUAL 0 0.0 \n",
"97 NaN INDIVIDUAL 0 202.0 \n",
"98 NaN INDIVIDUAL 0 0.0 \n",
"99 NaN INDIVIDUAL 0 0.0 \n",
"\n",
" tot_cur_bal is_bad \n",
"0 187717.0 False \n",
"1 16623.0 True \n",
"2 17938.0 False \n",
"3 372771.0 False \n",
"4 331205.0 False \n",
".. ... ... \n",
"95 112600.0 False \n",
"96 112238.0 False \n",
"97 120076.0 False \n",
"98 230748.0 False \n",
"99 194506.0 False \n",
"\n",
"[100 rows x 34 columns]"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data_path = \"https://s3.amazonaws.com/datarobot-use-case-datasets/Lending+Club+Dataset+Train.csv\"\n",
"\n",
"pathfinder_df = pd.read_csv(data_path, encoding=\"ISO-8859-1\")\n",
"pathfinder_df.rename(columns={\"loan_is_bad\": \"is_bad\"}, inplace=True)\n",
"\n",
"pathfinder_df.head(100)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Visualize data\n",
"\n",
"Use the following snippets to display unique aspects of the data. The first cell groups the dataframe by average annual income for loans that default and those that do not. The second cell shows how often a loan defaults based on the `emp_length value`. The third cells shows the average default rate for loans for each state."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"autoscroll": "auto"
},
"outputs": [
{
"data": {
"text/html": [
"
"
],
"text/plain": [
" addr_state is_bad\n",
"0 AK 0.098837\n",
"1 AL 0.188563\n",
"2 AR 0.165803\n",
"3 AZ 0.168299\n",
"4 CA 0.151439\n",
"5 CO 0.138211\n",
"6 CT 0.155527\n",
"7 DC 0.091549\n",
"8 DE 0.157895\n",
"9 FL 0.180175\n",
"10 GA 0.153999\n",
"11 HI 0.192926\n",
"12 IL 0.129351\n",
"13 IN 0.166667\n",
"14 KS 0.127615\n",
"15 KY 0.140515\n",
"16 LA 0.161716\n",
"17 MA 0.150280\n",
"18 MD 0.165319\n",
"19 MI 0.173405\n",
"20 MN 0.138249\n",
"21 MO 0.153558\n",
"22 MT 0.131579\n",
"23 NC 0.147039\n",
"24 NE 1.000000\n",
"25 NH 0.101695\n",
"26 NJ 0.181864\n",
"27 NM 0.160000\n",
"28 NV 0.175192\n",
"29 NY 0.173567\n",
"30 OH 0.150431\n",
"31 OK 0.163121\n",
"32 OR 0.136858\n",
"33 PA 0.159287\n",
"34 RI 0.200855\n",
"35 SC 0.145000\n",
"36 SD 0.104839\n",
"37 TN 0.000000\n",
"38 TX 0.133150\n",
"39 UT 0.161290\n",
"40 VA 0.164849\n",
"41 VT 0.208696\n",
"42 WA 0.159657\n",
"43 WI 0.149385\n",
"44 WV 0.110092\n",
"45 WY 0.103448"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"avg_value_df = pathfinder_df.groupby(\"addr_state\").agg({\"is_bad\": \"mean\"}).reset_index()\n",
"\n",
"avg_value_df"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Initiate modeling\n",
" \n",
"Create a DataRobot project to train models against the assembled dataset."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"autoscroll": "auto"
},
"outputs": [],
"source": [
"EXISTING_PROJECT_ID = None # If you've already created a project, replace None with the ID here\n",
"if EXISTING_PROJECT_ID is None:\n",
" # Create project and pass in data\n",
" project = dr.Project.create(sourcedata=pathfinder_df, project_name=\"Predict loan defaults\")\n",
"\n",
" # Set the project target to the appropriate feature. Use the LogLoss metric to measure performance\n",
" project.set_target(target=\"is_bad\", mode=dr.AUTOPILOT_MODE.QUICK, worker_count=\"-1\")\n",
"else:\n",
" # Fetch the existing project\n",
" project = dr.Project.get(EXISTING_PROJECT_ID)\n",
"\n",
"project.wait_for_autopilot(check_interval=30)\n",
"# Uncomment and replace the project ID if the project already exists\n",
"# project = dr.Project.get(\"612cb904ce5d5617d67af394\")\n",
"\n",
"# Get the project metric (i.e LogLoss, RMSE, etc...)\n",
"metric = project.metric\n",
"\n",
"# Get project URL\n",
"project_url = project.get_leaderboard_ui_permalink()\n",
"\n",
"# Get project ID\n",
"project_id = project.id"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### View project in UI\n",
"\n",
"If you want to view any aspects of the project in the DataRobot UI, you can retrieve the URL for the project with the snippet below and use it to navigate to the DataRobot application in your browser."
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'https://app.datarobot.com/projects/62cda041ab0bc3275f7a4a86/models'"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Display project URL\n",
"project_url"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Initiate modeling"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"autoscroll": "auto"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"In progress: 0, queued: 0 (waited: 0s)\n"
]
}
],
"source": [
"project.wait_for_autopilot(check_interval=30)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Evaluate model performance \n",
"\n",
"In order to measure model performance, first select the top model based on a specific performance metric (i.e., `LogLoss`) and then evaluate several different types of charts, such as Lift Chart, ROC Curve, and Feature Importance. There are two helper functions (detailed below) that assist in producing these charts.\n",
"\n",
"You can reference more information about how to evaluate model performance in the [DataRobot platform documentation](https://docs.datarobot.com/en/docs/modeling/analyze-models/index.html).\n",
"\n",
"In the snippet below, use models built during Autopilot to create a list of the top-performing models based on their accuracy.\n"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"autoscroll": "auto"
},
"outputs": [],
"source": [
"def sorted_by_metric(models, test_set, metric):\n",
" models_with_score = [model for model in models if model.metrics[metric][test_set] is not None]\n",
"\n",
" return sorted(models_with_score, key=lambda model: model.metrics[metric][test_set])"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"autoscroll": "auto"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The top performing model is Model('Elastic-Net Classifier (L2 / Binomial Deviance)') using metric, LogLoss\n"
]
}
],
"source": [
"models = project.get_models()\n",
"\n",
"# Uncomment if this is not set above in the create project cell\n",
"metric = project.metric\n",
"\n",
"# Get the top-performing model\n",
"model_top = sorted_by_metric(models, \"crossValidation\", metric)[0]\n",
"\n",
"print(\n",
" \"\"\"The top performing model is {model} using metric, {metric}\"\"\".format(\n",
" model=str(model_top), metric=metric\n",
" )\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"autoscroll": "auto"
},
"outputs": [],
"source": [
"# Set styling\n",
"dr_dark_blue = \"#08233F\"\n",
"dr_blue = \"#1F77B4\"\n",
"dr_orange = \"#FF7F0E\"\n",
"dr_red = \"#BE3C28\"\n",
"\n",
"# Function to build histograms\n",
"\n",
"\n",
"def rebin_df(raw_df, number_of_bins):\n",
" cols = [\"bin\", \"actual_mean\", \"predicted_mean\", \"bin_weight\"]\n",
" new_df = pd.DataFrame(columns=cols)\n",
" current_prediction_total = 0\n",
" current_actual_total = 0\n",
" current_row_total = 0\n",
" x_index = 1\n",
" bin_size = 60 / number_of_bins\n",
" for rowId, data in raw_df.iterrows():\n",
" current_prediction_total += data[\"predicted\"] * data[\"bin_weight\"]\n",
" current_actual_total += data[\"actual\"] * data[\"bin_weight\"]\n",
" current_row_total += data[\"bin_weight\"]\n",
"\n",
" if (rowId + 1) % bin_size == 0:\n",
" x_index += 1\n",
" bin_properties = {\n",
" \"bin\": ((round(rowId + 1) / 60) * number_of_bins),\n",
" \"actual_mean\": current_actual_total / current_row_total,\n",
" \"predicted_mean\": current_prediction_total / current_row_total,\n",
" \"bin_weight\": current_row_total,\n",
" }\n",
"\n",
" new_df = new_df.append(bin_properties, ignore_index=True)\n",
" current_prediction_total = 0\n",
" current_actual_total = 0\n",
" current_row_total = 0\n",
" return new_df"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Lift chart\n",
"\n",
"A [lift chart](https://docs.datarobot.com/en/docs/modeling/analyze-models/evaluate/lift-chart.html#lift-chart) shows you how close model predictions are to the actual values of the target in the training data. The lift chart data includes the average predicted value and the average actual values of the target, sorted by the prediction values in ascending order and split into up to 60 bins.\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Function to build lift charts\n",
"\n",
"\n",
"def matplotlib_lift(bins_df, bin_count, ax):\n",
" grouped = rebin_df(bins_df, bin_count)\n",
" ax.plot(\n",
" range(1, len(grouped) + 1),\n",
" grouped[\"predicted_mean\"],\n",
" marker=\"+\",\n",
" lw=1,\n",
" color=dr_blue,\n",
" label=\"predicted\",\n",
" )\n",
" ax.plot(\n",
" range(1, len(grouped) + 1),\n",
" grouped[\"actual_mean\"],\n",
" marker=\"*\",\n",
" lw=1,\n",
" color=dr_orange,\n",
" label=\"actual\",\n",
" )\n",
" ax.set_xlim([0, len(grouped) + 1])\n",
" ax.set_facecolor(dr_dark_blue)\n",
" ax.legend(loc=\"best\")\n",
" ax.set_title(\"Lift chart {} bins\".format(bin_count))\n",
" ax.set_xlabel(\"Sorted Prediction\")\n",
" ax.set_ylabel(\"Value\")\n",
" return grouped"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"autoscroll": "auto"
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"No handles with labels found to put in legend.\n",
"No handles with labels found to put in legend.\n"
]
},
{
"data": {
"image/png": "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",
"text/plain": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"lift_chart = model_top.get_lift_chart(\"validation\")\n",
"\n",
"# Save the result into a Pandas dataframe\n",
"lift_df = pd.DataFrame(lift_chart.bins)\n",
"\n",
"bin_counts = [10, 15]\n",
"f, axarr = plt.subplots(len(bin_counts))\n",
"f.set_size_inches((8, 4 * len(bin_counts)))\n",
"\n",
"rebinned_dfs = []\n",
"for i in range(len(bin_counts)):\n",
" rebinned_dfs.append(matplotlib_lift(lift_df, bin_counts[i], axarr[i]))\n",
"\n",
"plt.tight_layout()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### ROC Curve\n",
"\n",
"The receiver operating characteristic curve, or [ROC curve](https://docs.datarobot.com/en/docs/modeling/analyze-models/evaluate/roc-curve-tab/roc-curve.html#roc-curve), is a graphical plot that illustrates the performance of a binary classifier system as its discrimination threshold is varied. The curve is created by plotting the true positive rate (TPR) against the false positive rate (FPR) at various threshold settings.\n"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"autoscroll": "auto"
},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
accuracy
\n",
"
f1_score
\n",
"
false_negative_score
\n",
"
true_negative_score
\n",
"
true_positive_score
\n",
"
false_positive_score
\n",
"
true_negative_rate
\n",
"
false_positive_rate
\n",
"
true_positive_rate
\n",
"
matthews_correlation_coefficient
\n",
"
positive_predictive_value
\n",
"
negative_predictive_value
\n",
"
threshold
\n",
"
fraction_predicted_as_positive
\n",
"
fraction_predicted_as_negative
\n",
"
lift_positive
\n",
"
lift_negative
\n",
"
\n",
" \n",
" \n",
"
\n",
"
0
\n",
"
0.843687
\n",
"
0.000000
\n",
"
1238
\n",
"
6682
\n",
"
0
\n",
"
0
\n",
"
1.000000
\n",
"
0.000000
\n",
"
0.000000
\n",
"
0.000000
\n",
"
0.000000
\n",
"
0.843687
\n",
"
1.000000
\n",
"
0.000000
\n",
"
1.000000
\n",
"
0.000000
\n",
"
1.000000
\n",
"
\n",
"
\n",
"
1
\n",
"
0.844066
\n",
"
0.004835
\n",
"
1235
\n",
"
6682
\n",
"
3
\n",
"
0
\n",
"
1.000000
\n",
"
0.000000
\n",
"
0.002423
\n",
"
0.045224
\n",
"
1.000000
\n",
"
0.844007
\n",
"
0.514413
\n",
"
0.000379
\n",
"
0.999621
\n",
"
6.397415
\n",
"
1.000379
\n",
"
\n",
"
\n",
"
2
\n",
"
0.843939
\n",
"
0.006431
\n",
"
1234
\n",
"
6680
\n",
"
4
\n",
"
2
\n",
"
0.999701
\n",
"
0.000299
\n",
"
0.003231
\n",
"
0.038695
\n",
"
0.666667
\n",
"
0.844074
\n",
"
0.477247
\n",
"
0.000758
\n",
"
0.999242
\n",
"
4.264943
\n",
"
1.000459
\n",
"
\n",
"
\n",
"
3
\n",
"
0.844318
\n",
"
0.014388
\n",
"
1229
\n",
"
6678
\n",
"
9
\n",
"
4
\n",
"
0.999401
\n",
"
0.000599
\n",
"
0.007270
\n",
"
0.059846
\n",
"
0.692308
\n",
"
0.844568
\n",
"
0.449702
\n",
"
0.001641
\n",
"
0.998359
\n",
"
4.428980
\n",
"
1.001045
\n",
"
\n",
"
\n",
"
4
\n",
"
0.844444
\n",
"
0.025316
\n",
"
1222
\n",
"
6672
\n",
"
16
\n",
"
10
\n",
"
0.998503
\n",
"
0.001497
\n",
"
0.012924
\n",
"
0.072549
\n",
"
0.615385
\n",
"
0.845199
\n",
"
0.423901
\n",
"
0.003283
\n",
"
0.996717
\n",
"
3.936871
\n",
"
1.001792
\n",
"
\n",
"
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
\n",
"
\n",
"
110
\n",
"
0.184848
\n",
"
0.276071
\n",
"
7
\n",
"
233
\n",
"
1231
\n",
"
6449
\n",
"
0.034870
\n",
"
0.965130
\n",
"
0.994346
\n",
"
0.061893
\n",
"
0.160286
\n",
"
0.970833
\n",
"
0.043229
\n",
"
0.969697
\n",
"
0.030303
\n",
"
1.025419
\n",
"
1.150703
\n",
"
\n",
"
\n",
"
111
\n",
"
0.175253
\n",
"
0.274061
\n",
"
5
\n",
"
155
\n",
"
1233
\n",
"
6527
\n",
"
0.023197
\n",
"
0.976803
\n",
"
0.995961
\n",
"
0.049450
\n",
"
0.158892
\n",
"
0.968750
\n",
"
0.039698
\n",
"
0.979798
\n",
"
0.020202
\n",
"
1.016497
\n",
"
1.148234
\n",
"
\n",
"
\n",
"
112
\n",
"
0.165657
\n",
"
0.272086
\n",
"
3
\n",
"
77
\n",
"
1235
\n",
"
6605
\n",
"
0.011523
\n",
"
0.988477
\n",
"
0.997577
\n",
"
0.033049
\n",
"
0.157526
\n",
"
0.962500
\n",
"
0.033700
\n",
"
0.989899
\n",
"
0.010101
\n",
"
1.007756
\n",
"
1.140826
\n",
"
\n",
"
\n",
"
113
\n",
"
0.156439
\n",
"
0.270394
\n",
"
0
\n",
"
1
\n",
"
1238
\n",
"
6681
\n",
"
0.000150
\n",
"
0.999850
\n",
"
1.000000
\n",
"
0.004837
\n",
"
0.156333
\n",
"
1.000000
\n",
"
0.019673
\n",
"
0.999874
\n",
"
0.000126
\n",
"
1.000126
\n",
"
1.185274
\n",
"
\n",
"
\n",
"
114
\n",
"
0.156313
\n",
"
0.270365
\n",
"
0
\n",
"
0
\n",
"
1238
\n",
"
6682
\n",
"
0.000000
\n",
"
1.000000
\n",
"
1.000000
\n",
"
0.000000
\n",
"
0.156313
\n",
"
0.000000
\n",
"
0.000044
\n",
"
1.000000
\n",
"
0.000000
\n",
"
1.000000
\n",
"
0.000000
\n",
"
\n",
" \n",
"
\n",
"
115 rows × 17 columns
\n",
"
"
],
"text/plain": [
" accuracy f1_score false_negative_score true_negative_score \\\n",
"0 0.843687 0.000000 1238 6682 \n",
"1 0.844066 0.004835 1235 6682 \n",
"2 0.843939 0.006431 1234 6680 \n",
"3 0.844318 0.014388 1229 6678 \n",
"4 0.844444 0.025316 1222 6672 \n",
".. ... ... ... ... \n",
"110 0.184848 0.276071 7 233 \n",
"111 0.175253 0.274061 5 155 \n",
"112 0.165657 0.272086 3 77 \n",
"113 0.156439 0.270394 0 1 \n",
"114 0.156313 0.270365 0 0 \n",
"\n",
" true_positive_score false_positive_score true_negative_rate \\\n",
"0 0 0 1.000000 \n",
"1 3 0 1.000000 \n",
"2 4 2 0.999701 \n",
"3 9 4 0.999401 \n",
"4 16 10 0.998503 \n",
".. ... ... ... \n",
"110 1231 6449 0.034870 \n",
"111 1233 6527 0.023197 \n",
"112 1235 6605 0.011523 \n",
"113 1238 6681 0.000150 \n",
"114 1238 6682 0.000000 \n",
"\n",
" false_positive_rate true_positive_rate \\\n",
"0 0.000000 0.000000 \n",
"1 0.000000 0.002423 \n",
"2 0.000299 0.003231 \n",
"3 0.000599 0.007270 \n",
"4 0.001497 0.012924 \n",
".. ... ... \n",
"110 0.965130 0.994346 \n",
"111 0.976803 0.995961 \n",
"112 0.988477 0.997577 \n",
"113 0.999850 1.000000 \n",
"114 1.000000 1.000000 \n",
"\n",
" matthews_correlation_coefficient positive_predictive_value \\\n",
"0 0.000000 0.000000 \n",
"1 0.045224 1.000000 \n",
"2 0.038695 0.666667 \n",
"3 0.059846 0.692308 \n",
"4 0.072549 0.615385 \n",
".. ... ... \n",
"110 0.061893 0.160286 \n",
"111 0.049450 0.158892 \n",
"112 0.033049 0.157526 \n",
"113 0.004837 0.156333 \n",
"114 0.000000 0.156313 \n",
"\n",
" negative_predictive_value threshold fraction_predicted_as_positive \\\n",
"0 0.843687 1.000000 0.000000 \n",
"1 0.844007 0.514413 0.000379 \n",
"2 0.844074 0.477247 0.000758 \n",
"3 0.844568 0.449702 0.001641 \n",
"4 0.845199 0.423901 0.003283 \n",
".. ... ... ... \n",
"110 0.970833 0.043229 0.969697 \n",
"111 0.968750 0.039698 0.979798 \n",
"112 0.962500 0.033700 0.989899 \n",
"113 1.000000 0.019673 0.999874 \n",
"114 0.000000 0.000044 1.000000 \n",
"\n",
" fraction_predicted_as_negative lift_positive lift_negative \n",
"0 1.000000 0.000000 1.000000 \n",
"1 0.999621 6.397415 1.000379 \n",
"2 0.999242 4.264943 1.000459 \n",
"3 0.998359 4.428980 1.001045 \n",
"4 0.996717 3.936871 1.001792 \n",
".. ... ... ... \n",
"110 0.030303 1.025419 1.150703 \n",
"111 0.020202 1.016497 1.148234 \n",
"112 0.010101 1.007756 1.140826 \n",
"113 0.000126 1.000126 1.185274 \n",
"114 0.000000 1.000000 0.000000 \n",
"\n",
"[115 rows x 17 columns]"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"roc = model_top.get_roc_curve(\"validation\")\n",
"\n",
"# Save the result into a pandas dataframe\n",
"roc_df = pd.DataFrame(roc.roc_points)\n",
"\n",
"roc_df"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"dr_roc_green = \"#03c75f\"\n",
"white = \"#ffffff\"\n",
"dr_purple = \"#65147D\"\n",
"dr_dense_green = \"#018f4f\"\n",
"\n",
"threshold = roc.get_best_f1_threshold()\n",
"fig = plt.figure(figsize=(8, 8))\n",
"axes = fig.add_subplot(1, 1, 1, facecolor=dr_dark_blue)\n",
"\n",
"plt.scatter(roc_df.false_positive_rate, roc_df.true_positive_rate, color=dr_roc_green)\n",
"plt.plot(roc_df.false_positive_rate, roc_df.true_positive_rate, color=dr_roc_green)\n",
"plt.plot([0, 1], [0, 1], color=white, alpha=0.25)\n",
"plt.title(\"ROC curve\")\n",
"plt.xlabel(\"False Positive Rate\")\n",
"plt.xlim([0, 1])\n",
"plt.ylabel(\"True Positive Rate\")\n",
"plt.ylim([0, 1])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Feature Impact\n",
"\n",
"[Feature Impact](https://docs.datarobot.com/en/docs/modeling/analyze-models/understand/feature-impact.html) measures how important a feature is in the context of a model. It measures how much the accuracy of a model would decrease if that feature was removed.\n",
"\n",
"Feature Impact is available for all model types and works by altering input data and observing the effect on a model’s score. It is an on-demand feature, meaning that you must initiate a calculation to see the results. Once DataRobot computes the feature impact for a model, that information is saved with the project.\n"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {
"autoscroll": "auto"
},
"outputs": [
{
"data": {
"text/plain": [
"Text(0.5, 1.04, 'Feature Impact')"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"feature_impacts = model_top.get_or_request_feature_impact()\n",
"\n",
"# Limit size to make chart look good. Display top 25 values\n",
"if len(feature_impacts) > 25:\n",
" feature_impacts = feature_impacts[0:24]\n",
"\n",
"# Formats the ticks from a float into a percent\n",
"percent_tick_fmt = mtick.PercentFormatter(xmax=1.0)\n",
"\n",
"impact_df = pd.DataFrame(feature_impacts)\n",
"impact_df.sort_values(by=\"impactNormalized\", ascending=True, inplace=True)\n",
"\n",
"# Positive values are blue, negative are red\n",
"bar_colors = impact_df.impactNormalized.apply(lambda x: dr_red if x < 0 else dr_blue)\n",
"\n",
"ax = impact_df.plot.barh(\n",
" x=\"featureName\", y=\"impactNormalized\", legend=False, color=bar_colors, figsize=(10, 8)\n",
")\n",
"ax.xaxis.set_major_formatter(percent_tick_fmt)\n",
"ax.xaxis.set_tick_params(labeltop=True)\n",
"ax.xaxis.grid(True, alpha=0.2)\n",
"ax.set_facecolor(dr_dark_blue)\n",
"\n",
"plt.ylabel(\"\")\n",
"plt.xlabel(\"Effect\")\n",
"plt.xlim((None, 1)) # Allow for negative impact\n",
"plt.title(\"Feature Impact\", y=1.04);"
]
},
{
"cell_type": "markdown",
"metadata": {
"tags": []
},
"source": [
"## Make predictions\n",
"\n",
"### Test predictions\n",
"\n",
"After determining the top-performing model from the Leaderboard, upload the prediction test dataset to verify that the model generates predictions successfully before deploying the model to a production environment. The predictions are returned as a Pandas dataframe. "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"data_path_scoring = (\n",
" \"https://s3.amazonaws.com/datarobot-use-case-datasets/Lending+Club+Dataset+Pred.csv\"\n",
")\n",
"scoring_df = pd.read_csv(data_path_scoring, encoding=\"ISO-8859-1\")\n",
"pathfinder_df.rename(columns={\"loan_is_bad\": \"is_bad\"}, inplace=True)\n",
"\n",
"prediction_dataset = project.upload_dataset(scoring_df)\n",
"predict_job = model_top.request_predictions(prediction_dataset.id)\n",
"prediction_dataset.id\n",
"\n",
"predictions = predict_job.get_result_when_complete()\n",
"pd.concat([scoring_df, predictions], axis=1)\n",
"predictions.positive_probability.plot(kind=\"hist\", title=\"Predicted Probabilities\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Deploy a model to production\n",
"\n",
"\n",
"If you are happy with the model's performance, you can deploy it to a production environment with [MLOps](https://docs.datarobot.com/en/mlops/index.html). Deploying the model will free up workers, as data scored through the deployment doesn't use any modeling workers. Furthermore, you are no longer restricted on the amount of data to score; score over 100GB with the deployment. Deployments also offer many model management benefits: monitoring service, data drift, model comparison, retraining, and more."
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {
"autoscroll": "auto"
},
"outputs": [
{
"data": {
"text/plain": [
"Deployment(Late Shipment Predictions)"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Retrieve a prediction server\n",
"prediction_server = dr.PredictionServer.list()[0]\n",
"\n",
"# Get the top performing model. Uncomment if this did not execute in the previous section\n",
"# model_top = sorted_by_metric(models, 'crossValidation', metric)[0]\n",
"deployment = dr.Deployment.create_from_learning_model(\n",
" model_top.id,\n",
" label=\"Predicting Loan Defaults\",\n",
" description=\"Predicting Loan Defaults\",\n",
" default_prediction_server_id=prediction_server.id,\n",
")\n",
"deployment.id"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Configure batch predictions\n",
"\n",
"After the model has been deployed, DataRobot creates an endpoint for real-time scoring. The deployment allows you to use DataRobot's batch prediction API to score large datasets with a deployed DataRobot model. \n",
"\n",
"The batch prediction API provides flexible intake and output options when scoring large datasets using prediction servers. The API is exposed through the DataRobot Public API and can be consumed using a REST-enabled client or Public API bindings for DataRobot's Python client."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Set the deployment ID"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Before proceeding, provide the deployed model's deployment ID (retrieved from the deployment's [Overview tab](https://docs.datarobot.com/en/docs/mlops/monitor/dep-overview.html) or from the Deployment object in the Python client: `deployment.id`)."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"deployment_id = \"YOUR_DEPLOYMENT_ID\""
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Determine input and output options\n",
"\n",
"DataRobot's batch prediction API allows you to score data from and to multiple sources. You can take advantage of the credentials and data sources you have already established previously through the UI for easy scoring. Credentials are usernames and passwords, while data sources are any databases with which you have previously established a connection (e.g., Snowflake). View the example code below outlining how to query credentials and data sources.\n",
"\n",
"You can reference the full list of DataRobot's supported [input](https://docs.datarobot.com/en/docs/predictions/batch/batch-prediction-api/intake-options.html) and [output options](https://docs.datarobot.com/en/docs/predictions/batch/batch-prediction-api/output-options.html).\n",
"\n",
"Reference the DataRobot documentation for more information about [data connections](https://docs.datarobot.com/en/docs/data/connect-data/data-conn.html)."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The snippet below shows how you can query all credentials tied to a DataRobot account."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"dr.Credential.list()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The output above returns multiple sets of credentials. The alphanumeric string included in each item of the list is the credentials ID. You can use that ID to access credentials through the API."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The snippet below shows how you can query all data sources tied to a DataRobot account. The second line lists each datastore with an alphanumeric string; that is the datastore ID."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"5e6696ff820e737a5bd78430\n"
]
}
],
"source": [
"dr.DataStore.list()\n",
"print(dr.DataStore.list()[0].id)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Scoring examples"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The snippets below demonstrate how to score data with the Batch Prediction API. Edit the `intake_settings` and `output_settings` to suit your needs. You can mix and match until you get the outcome you prefer."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Score from CSV to CSV"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Scoring without Prediction Explanations\n",
"if False:\n",
" dr.BatchPredictionJob.score(\n",
" deployment_id,\n",
" intake_settings={\n",
" 'type': 'localFile',\n",
" 'file': 'inputfile.csv' # Provide the filepath, Pandas dataframe, or file-like object here\n",
" },\n",
" output_settings={\n",
" 'type': 'localFile',\n",
" 'path: 'outputfile.csv'\n",
" }\n",
" )\n",
"\n",
"#Scoring with Prediction Explanations\n",
"if False:\n",
" dr.BatchPredictionJob.score(\n",
" deployment_id,\n",
" intake_settings={\n",
" 'type': 'localFile',\n",
" 'file': 'inputfile.csv' # Provide the filepath, Pandas dataframe, or file-like object here\n",
" },\n",
" output_settings={\n",
" 'type': 'localFile',\n",
" 'path': 'outputfile.csv'\n",
" },\n",
" \n",
" max_explanations=3 #Compute Prediction Explanations for the amount of features indicated here\n",
" \n",
" )"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Score from S3 to S3"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"if False:\n",
" dr.BatchPredictionJob.score(\n",
" deployment_id,\n",
" intake_settings={\n",
" \"type\": \"s3\",\n",
" \"url\": \"s3://theos-test-bucket/lending_club_scoring.csv\", # Provide the URL of your datastore here\n",
" \"credential_id\": \"YOUR_CREDENTIAL_ID_FROM_ABOVE\", # Provide your credentials here\n",
" },\n",
" output_settings={\n",
" \"type\": \"s3\",\n",
" \"url\": \"s3://theos-test-bucket/lending_club_scored2.csv\",\n",
" \"credential_id\": \"YOUR_CREDENTIAL_ID_FROM_ABOVE\",\n",
" },\n",
" )"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Score from JDBC to JDBC"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"if False:\n",
" dr.BatchPredictionJob.score(\n",
" deployment_id,\n",
" intake_settings={\n",
" \"type\": \"jdbc\",\n",
" \"table\": \"table_name\",\n",
" \"schema\": \"public\",\n",
" \"dataStoreId\": data_store.id, # Provide the ID of your datastore here\n",
" \"credentialId\": cred.credential_id, # Provide your credentials here\n",
" },\n",
" output_settings={\n",
" \"type\": \"jdbc\",\n",
" \"table\": \"table_name\",\n",
" \"schema\": \"public\",\n",
" \"statementType\": \"insert\",\n",
" \"dataStoreId\": data_store.id,\n",
" \"credentialId\": cred.credential_id,\n",
" },\n",
" )"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.8"
}
},
"nbformat": 4,
"nbformat_minor": 4
}