{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Predict CO₂ levels with out-of-time validation modeling\n",
"\n",
"This notebook demonstrates how to use [out-of-time validation (OTV)](https://docs.datarobot.com/en/docs/modeling/special-workflows/otv.html) modeling with DataRobot's Python client to predict monthly CO₂ levels for one of Hawaii's active volcanoes, Mauna Loa. The dataset used in this notebook can be accessed [here](https://www.esrl.noaa.gov/gmd/ccgg/trends/data.html) (select the first dataset listed to emulate results displayed below), but DataRobot provides a ready-to-use version of this dataset below. For this notebook, the target feature is `interpolated` because `average` has a some missing values that should be skipped.\n",
"\n",
"OTV is a useful modeling method when you know that your data changes in distribution over time. If this is true of your data, random sampling of training and testing datasets would not yield an outcome that would be representative of the model accuracy when it is making predictions in a production environment. Note that OTV can be applied to both classification and regression projects. It partitions your data using the [backtesting](https://docs.datarobot.com/en/docs/modeling/special-workflows/otv.html#backtests) method, also used in time series modeling. \n",
"\n",
"### Requirements\n",
"\n",
"- Python version 3.7.3.\n",
"- DataRobot API version 2.21.0.\n",
"\n",
"Small adjustments to the code below may be required depending on the Python version and DataRobot API version used.\n",
"\n",
"Reference documentation for DataRobot's Python client [here](https://datarobot-public-api-client.readthedocs-hosted.com)."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Import libraries"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import datarobot as dr\n",
"import matplotlib.pyplot as plt\n",
"import pandas as pd\n",
"import seaborn as sns"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Import data\n",
"\n",
"You can download the sample training dataset [here](co2_mm_mlo.csv)."
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
year
\n",
"
month
\n",
"
decimal date
\n",
"
average
\n",
"
interpolated
\n",
"
trend
\n",
"
ndays
\n",
"
day
\n",
"
\n",
" \n",
" \n",
"
\n",
"
0
\n",
"
1958
\n",
"
3
\n",
"
1958.208
\n",
"
315.71
\n",
"
315.71
\n",
"
314.62
\n",
"
-1
\n",
"
1
\n",
"
\n",
"
\n",
"
1
\n",
"
1958
\n",
"
4
\n",
"
1958.292
\n",
"
317.45
\n",
"
317.45
\n",
"
315.29
\n",
"
-1
\n",
"
1
\n",
"
\n",
"
\n",
"
2
\n",
"
1958
\n",
"
5
\n",
"
1958.375
\n",
"
317.50
\n",
"
317.50
\n",
"
314.71
\n",
"
-1
\n",
"
1
\n",
"
\n",
"
\n",
"
3
\n",
"
1958
\n",
"
6
\n",
"
1958.458
\n",
"
-99.99
\n",
"
317.10
\n",
"
314.85
\n",
"
-1
\n",
"
1
\n",
"
\n",
"
\n",
"
4
\n",
"
1958
\n",
"
7
\n",
"
1958.542
\n",
"
315.86
\n",
"
315.86
\n",
"
314.98
\n",
"
-1
\n",
"
1
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" year month decimal date average interpolated trend ndays day\n",
"0 1958 3 1958.208 315.71 315.71 314.62 -1 1\n",
"1 1958 4 1958.292 317.45 317.45 315.29 -1 1\n",
"2 1958 5 1958.375 317.50 317.50 314.71 -1 1\n",
"3 1958 6 1958.458 -99.99 317.10 314.85 -1 1\n",
"4 1958 7 1958.542 315.86 315.86 314.98 -1 1"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data_path = \"https://docs.datarobot.com/en/docs/api/guide/common-case/co2_mm_mlo.csv\"\n",
"df = pd.read_csv(data_path) # Add your dataset here\n",
"df[\"day\"] = 1 # Displays an arbitrary \"day\" column to create an accurate \"date\" feature\n",
"df.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Connect to DataRobot\n",
"\n",
"Use the snippet below to authenticate and connect to DataRobot. You can read more about different options for [connecting to DataRobot from the client](https://docs.datarobot.com/en/docs/api/api-quickstart/index.html#configure-api-authentication)."
]
},
{
"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": [
"## Preprocessing\n",
"\n",
"Before you begin modeling, you must complete the following steps:\n",
"\n",
"- Create an accurate \"date\" feature.\n",
"- Remove all unnecessary features.\n",
"- Create two month lag features.\n",
"\n",
"You can create many more features (such as aggregates on a monthly level or percentages), but for the purposes of OTV, this is not required."
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
interpolated
\n",
"
trend
\n",
"
date
\n",
"
lag_1
\n",
"
lag_2
\n",
"
lag_3
\n",
"
lag_4
\n",
"
\n",
" \n",
" \n",
"
\n",
"
8
\n",
"
313.33
\n",
"
315.31
\n",
"
1958-11-01
\n",
"
312.66
\n",
"
313.20
\n",
"
314.93
\n",
"
315.86
\n",
"
\n",
"
\n",
"
9
\n",
"
314.67
\n",
"
315.61
\n",
"
1958-12-01
\n",
"
313.33
\n",
"
312.66
\n",
"
313.20
\n",
"
314.93
\n",
"
\n",
"
\n",
"
10
\n",
"
315.62
\n",
"
315.70
\n",
"
1959-01-01
\n",
"
314.67
\n",
"
313.33
\n",
"
312.66
\n",
"
313.20
\n",
"
\n",
"
\n",
"
11
\n",
"
316.38
\n",
"
315.88
\n",
"
1959-02-01
\n",
"
315.62
\n",
"
314.67
\n",
"
313.33
\n",
"
312.66
\n",
"
\n",
"
\n",
"
12
\n",
"
316.71
\n",
"
315.62
\n",
"
1959-03-01
\n",
"
316.38
\n",
"
315.62
\n",
"
314.67
\n",
"
313.33
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" interpolated trend date lag_1 lag_2 lag_3 lag_4\n",
"8 313.33 315.31 1958-11-01 312.66 313.20 314.93 315.86\n",
"9 314.67 315.61 1958-12-01 313.33 312.66 313.20 314.93\n",
"10 315.62 315.70 1959-01-01 314.67 313.33 312.66 313.20\n",
"11 316.38 315.88 1959-02-01 315.62 314.67 313.33 312.66\n",
"12 316.71 315.62 1959-03-01 316.38 315.62 314.67 313.33"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df[\"date\"] = pd.to_datetime(df[[\"year\", \"month\", \"day\"]])\n",
"df.drop([\"year\", \"month\", \"decimal date\", \"average\", \"ndays\", \"day\"], inplace=True, axis=1)\n",
"\n",
"# Create 2 month lag features\n",
"for i in range(1, 5):\n",
" df[\"lag_{}\".format(i)] = df[\"interpolated\"].shift(i)\n",
"\n",
"df = df.iloc[8:]\n",
"df.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Plot the data\n",
"\n",
"By plotting the data (displayed below), you can observe that it follows an upwards trend. Note that randomly partitioning the data for testing purposes would not work and you would not get representative accuracy metrics."
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"sns.lineplot(x=\"date\", y=\"interpolated\", data=df)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Define datetime partitioning\n",
"\n",
"Use the snippet below to define datetime partitioning for the data. You can also reference [a more complete example of Datetime Partitioning](https://github.com/datarobot-community/examples-for-data-scientists/blob/master/Advanced%20Tuning%20and%20Partitioning/Python/Datetime%20Partitioning.ipynb)."
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [],
"source": [
"spec = dr.DatetimePartitioningSpecification(\n",
" datetime_partition_column=\"date\", number_of_backtests=4, use_time_series=False\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Start the project\n",
"The snippet below passes the `spec` object as an input to the `partitioning_method` variable in the `set_target` method. This starts the project with the designated settings."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"project = dr.Project.create(df, project_name=\"Predicting CO2 levels for Mauna Loa\")\n",
"\n",
"project.set_target(\"interpolated\", partitioning_method=spec, worker_count=-1)\n",
"project.wait_for_autopilot()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Access insights\n",
"\n",
"All model insights are available via the API. The example below displays Feature Impact calculated for one of the trained models.\n",
"\n",
"Access more examples and sample code for extracting insights from [the DataRobot Community]( https://github.com/datarobot-community/examples-for-data-scientists/tree/master/Model%20Evaluation/Python)."
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [],
"source": [
"model = project.get_models()[0]\n",
"\n",
"# Get Feature Impact\n",
"feature_impact = model.get_or_request_feature_impact()\n",
"\n",
"# Save feature impact in pandas dataframe\n",
"fi_df = pd.DataFrame(feature_impact)"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fig, ax = plt.subplots(figsize=(12, 5))\n",
"\n",
"# Plot feature impact\n",
"sns.barplot(x=\"featureName\", y=\"impactNormalized\", data=fi_df[0:5], color=\"g\")"
]
}
],
"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
}