Skip to content

Instantly share code, notes, and snippets.

@arbennett
Created April 1, 2022 19:00
Show Gist options
  • Save arbennett/df50755671dff0e32e43cd46b9f06c9e to your computer and use it in GitHub Desktop.
Save arbennett/df50755671dff0e32e43cd46b9f06c9e to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"id": "ff3348ab-85f8-4d5b-89f1-8d77128b08c9",
"metadata": {},
"source": [
"# Example of training and XGBoost regressor on a spatiotemporal dataset"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "blind-graph",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Populating the interactive namespace from numpy and matplotlib\n"
]
}
],
"source": [
"%pylab inline\n",
"import xarray as xr\n",
"import pandas as pd\n",
"import xgboost as xgb\n",
"import dask.array as da\n",
"import dask.distributed\n",
"from glob import glob"
]
},
{
"cell_type": "markdown",
"id": "98ece1c0-aece-4f13-8340-dc7ca3cd5cc0",
"metadata": {},
"source": [
"# Setting up the target data\n",
"\n",
"Here the goal was to predict the VIC-modeled soil moisture percentile for some simulations run in the Columbia river basin. The percentiles were pre-computed in a different piece of code, but we open them up via `xarray`, then grab some particular timestamp that we want to predict, and then finally flatten the latitudes and longitudes down to a flat vector which becomes the DataFrame's index."
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "92127b1e-de71-4133-bcce-65c7e78bcbc9",
"metadata": {},
"outputs": [
{
"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></th>\n",
" <th>smpercentile</th>\n",
" </tr>\n",
" <tr>\n",
" <th>lat</th>\n",
" <th>lon</th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>41.21875</th>\n",
" <th>-116.21875</th>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th rowspan=\"4\" valign=\"top\">41.28125</th>\n",
" <th>-116.28125</th>\n",
" <td>3.333333</td>\n",
" </tr>\n",
" <tr>\n",
" <th>-116.21875</th>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>-116.15625</th>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>-116.09375</th>\n",
" <td>3.333333</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" smpercentile\n",
"lat lon \n",
"41.21875 -116.21875 0.000000\n",
"41.28125 -116.28125 3.333333\n",
" -116.21875 0.000000\n",
" -116.15625 0.000000\n",
" -116.09375 3.333333"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"files = glob('./output/post_processing/cdf_results/us/vic-metdata_smpercentile_*')\n",
"dates = pd.DatetimeIndex(sorted([f.split('_')[-1].split('.')[0] for f in files]))\n",
"\n",
"smpercentile = xr.concat([\n",
" xr.open_dataset(f).expand_dims({'time': 1})\n",
" for i, f in enumerate(files)\n",
"], dim='time')\n",
"smpercentile['time'] = dates\n",
"\n",
"time_sample_idx = 24\n",
"percentiles = smpercentile.isel(time=time_sample_idx)['smpercentile']\n",
"time = percentiles['time'].values[()]\n",
"\n",
"\n",
"target_ds = percentiles.stack(z=['lat', 'lon']).dropna(dim='z').drop('time')\n",
"target_df = target_ds.to_dataframe()[['smpercentile']]\n",
"target_df.head()"
]
},
{
"cell_type": "markdown",
"id": "467983cc-6fae-43d9-a857-c0b7aa323328",
"metadata": {},
"source": [
"# Setting up the input data\n",
"\n",
"First we open up the raw data which contains the meteorological forcing data, VIC parameters, and some domain information. \n",
"As inputs to the XGBoost regressor we will use the soil density, daily minimum and maximum temperatures, daily precipitation, elevation, and the annual average precipitation. 14 days of antecedent values for the temperature and precipitation will be included as inputs. These are all merged together into a single `xarray` dataset, which is printed out below..."
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "d8cc83a7-dde2-447c-aacc-1e86851220a6",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div><svg style=\"position: absolute; width: 0; height: 0; overflow: hidden\">\n",
"<defs>\n",
"<symbol id=\"icon-database\" viewBox=\"0 0 32 32\">\n",
"<path d=\"M16 0c-8.837 0-16 2.239-16 5v4c0 2.761 7.163 5 16 5s16-2.239 16-5v-4c0-2.761-7.163-5-16-5z\"></path>\n",
"<path d=\"M16 17c-8.837 0-16-2.239-16-5v6c0 2.761 7.163 5 16 5s16-2.239 16-5v-6c0 2.761-7.163 5-16 5z\"></path>\n",
"<path d=\"M16 26c-8.837 0-16-2.239-16-5v6c0 2.761 7.163 5 16 5s16-2.239 16-5v-6c0 2.761-7.163 5-16 5z\"></path>\n",
"</symbol>\n",
"<symbol id=\"icon-file-text2\" viewBox=\"0 0 32 32\">\n",
"<path d=\"M28.681 7.159c-0.694-0.947-1.662-2.053-2.724-3.116s-2.169-2.030-3.116-2.724c-1.612-1.182-2.393-1.319-2.841-1.319h-15.5c-1.378 0-2.5 1.121-2.5 2.5v27c0 1.378 1.122 2.5 2.5 2.5h23c1.378 0 2.5-1.122 2.5-2.5v-19.5c0-0.448-0.137-1.23-1.319-2.841zM24.543 5.457c0.959 0.959 1.712 1.825 2.268 2.543h-4.811v-4.811c0.718 0.556 1.584 1.309 2.543 2.268zM28 29.5c0 0.271-0.229 0.5-0.5 0.5h-23c-0.271 0-0.5-0.229-0.5-0.5v-27c0-0.271 0.229-0.5 0.5-0.5 0 0 15.499-0 15.5 0v7c0 0.552 0.448 1 1 1h7v19.5z\"></path>\n",
"<path d=\"M23 26h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n",
"<path d=\"M23 22h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n",
"<path d=\"M23 18h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n",
"</symbol>\n",
"</defs>\n",
"</svg>\n",
"<style>/* CSS stylesheet for displaying xarray objects in jupyterlab.\n",
" *\n",
" */\n",
"\n",
":root {\n",
" --xr-font-color0: var(--jp-content-font-color0, rgba(0, 0, 0, 1));\n",
" --xr-font-color2: var(--jp-content-font-color2, rgba(0, 0, 0, 0.54));\n",
" --xr-font-color3: var(--jp-content-font-color3, rgba(0, 0, 0, 0.38));\n",
" --xr-border-color: var(--jp-border-color2, #e0e0e0);\n",
" --xr-disabled-color: var(--jp-layout-color3, #bdbdbd);\n",
" --xr-background-color: var(--jp-layout-color0, white);\n",
" --xr-background-color-row-even: var(--jp-layout-color1, white);\n",
" --xr-background-color-row-odd: var(--jp-layout-color2, #eeeeee);\n",
"}\n",
"\n",
"html[theme=dark],\n",
"body.vscode-dark {\n",
" --xr-font-color0: rgba(255, 255, 255, 1);\n",
" --xr-font-color2: rgba(255, 255, 255, 0.54);\n",
" --xr-font-color3: rgba(255, 255, 255, 0.38);\n",
" --xr-border-color: #1F1F1F;\n",
" --xr-disabled-color: #515151;\n",
" --xr-background-color: #111111;\n",
" --xr-background-color-row-even: #111111;\n",
" --xr-background-color-row-odd: #313131;\n",
"}\n",
"\n",
".xr-wrap {\n",
" display: block;\n",
" min-width: 300px;\n",
" max-width: 700px;\n",
"}\n",
"\n",
".xr-text-repr-fallback {\n",
" /* fallback to plain text repr when CSS is not injected (untrusted notebook) */\n",
" display: none;\n",
"}\n",
"\n",
".xr-header {\n",
" padding-top: 6px;\n",
" padding-bottom: 6px;\n",
" margin-bottom: 4px;\n",
" border-bottom: solid 1px var(--xr-border-color);\n",
"}\n",
"\n",
".xr-header > div,\n",
".xr-header > ul {\n",
" display: inline;\n",
" margin-top: 0;\n",
" margin-bottom: 0;\n",
"}\n",
"\n",
".xr-obj-type,\n",
".xr-array-name {\n",
" margin-left: 2px;\n",
" margin-right: 10px;\n",
"}\n",
"\n",
".xr-obj-type {\n",
" color: var(--xr-font-color2);\n",
"}\n",
"\n",
".xr-sections {\n",
" padding-left: 0 !important;\n",
" display: grid;\n",
" grid-template-columns: 150px auto auto 1fr 20px 20px;\n",
"}\n",
"\n",
".xr-section-item {\n",
" display: contents;\n",
"}\n",
"\n",
".xr-section-item input {\n",
" display: none;\n",
"}\n",
"\n",
".xr-section-item input + label {\n",
" color: var(--xr-disabled-color);\n",
"}\n",
"\n",
".xr-section-item input:enabled + label {\n",
" cursor: pointer;\n",
" color: var(--xr-font-color2);\n",
"}\n",
"\n",
".xr-section-item input:enabled + label:hover {\n",
" color: var(--xr-font-color0);\n",
"}\n",
"\n",
".xr-section-summary {\n",
" grid-column: 1;\n",
" color: var(--xr-font-color2);\n",
" font-weight: 500;\n",
"}\n",
"\n",
".xr-section-summary > span {\n",
" display: inline-block;\n",
" padding-left: 0.5em;\n",
"}\n",
"\n",
".xr-section-summary-in:disabled + label {\n",
" color: var(--xr-font-color2);\n",
"}\n",
"\n",
".xr-section-summary-in + label:before {\n",
" display: inline-block;\n",
" content: '►';\n",
" font-size: 11px;\n",
" width: 15px;\n",
" text-align: center;\n",
"}\n",
"\n",
".xr-section-summary-in:disabled + label:before {\n",
" color: var(--xr-disabled-color);\n",
"}\n",
"\n",
".xr-section-summary-in:checked + label:before {\n",
" content: '▼';\n",
"}\n",
"\n",
".xr-section-summary-in:checked + label > span {\n",
" display: none;\n",
"}\n",
"\n",
".xr-section-summary,\n",
".xr-section-inline-details {\n",
" padding-top: 4px;\n",
" padding-bottom: 4px;\n",
"}\n",
"\n",
".xr-section-inline-details {\n",
" grid-column: 2 / -1;\n",
"}\n",
"\n",
".xr-section-details {\n",
" display: none;\n",
" grid-column: 1 / -1;\n",
" margin-bottom: 5px;\n",
"}\n",
"\n",
".xr-section-summary-in:checked ~ .xr-section-details {\n",
" display: contents;\n",
"}\n",
"\n",
".xr-array-wrap {\n",
" grid-column: 1 / -1;\n",
" display: grid;\n",
" grid-template-columns: 20px auto;\n",
"}\n",
"\n",
".xr-array-wrap > label {\n",
" grid-column: 1;\n",
" vertical-align: top;\n",
"}\n",
"\n",
".xr-preview {\n",
" color: var(--xr-font-color3);\n",
"}\n",
"\n",
".xr-array-preview,\n",
".xr-array-data {\n",
" padding: 0 5px !important;\n",
" grid-column: 2;\n",
"}\n",
"\n",
".xr-array-data,\n",
".xr-array-in:checked ~ .xr-array-preview {\n",
" display: none;\n",
"}\n",
"\n",
".xr-array-in:checked ~ .xr-array-data,\n",
".xr-array-preview {\n",
" display: inline-block;\n",
"}\n",
"\n",
".xr-dim-list {\n",
" display: inline-block !important;\n",
" list-style: none;\n",
" padding: 0 !important;\n",
" margin: 0;\n",
"}\n",
"\n",
".xr-dim-list li {\n",
" display: inline-block;\n",
" padding: 0;\n",
" margin: 0;\n",
"}\n",
"\n",
".xr-dim-list:before {\n",
" content: '(';\n",
"}\n",
"\n",
".xr-dim-list:after {\n",
" content: ')';\n",
"}\n",
"\n",
".xr-dim-list li:not(:last-child):after {\n",
" content: ',';\n",
" padding-right: 5px;\n",
"}\n",
"\n",
".xr-has-index {\n",
" font-weight: bold;\n",
"}\n",
"\n",
".xr-var-list,\n",
".xr-var-item {\n",
" display: contents;\n",
"}\n",
"\n",
".xr-var-item > div,\n",
".xr-var-item label,\n",
".xr-var-item > .xr-var-name span {\n",
" background-color: var(--xr-background-color-row-even);\n",
" margin-bottom: 0;\n",
"}\n",
"\n",
".xr-var-item > .xr-var-name:hover span {\n",
" padding-right: 5px;\n",
"}\n",
"\n",
".xr-var-list > li:nth-child(odd) > div,\n",
".xr-var-list > li:nth-child(odd) > label,\n",
".xr-var-list > li:nth-child(odd) > .xr-var-name span {\n",
" background-color: var(--xr-background-color-row-odd);\n",
"}\n",
"\n",
".xr-var-name {\n",
" grid-column: 1;\n",
"}\n",
"\n",
".xr-var-dims {\n",
" grid-column: 2;\n",
"}\n",
"\n",
".xr-var-dtype {\n",
" grid-column: 3;\n",
" text-align: right;\n",
" color: var(--xr-font-color2);\n",
"}\n",
"\n",
".xr-var-preview {\n",
" grid-column: 4;\n",
"}\n",
"\n",
".xr-var-name,\n",
".xr-var-dims,\n",
".xr-var-dtype,\n",
".xr-preview,\n",
".xr-attrs dt {\n",
" white-space: nowrap;\n",
" overflow: hidden;\n",
" text-overflow: ellipsis;\n",
" padding-right: 10px;\n",
"}\n",
"\n",
".xr-var-name:hover,\n",
".xr-var-dims:hover,\n",
".xr-var-dtype:hover,\n",
".xr-attrs dt:hover {\n",
" overflow: visible;\n",
" width: auto;\n",
" z-index: 1;\n",
"}\n",
"\n",
".xr-var-attrs,\n",
".xr-var-data {\n",
" display: none;\n",
" background-color: var(--xr-background-color) !important;\n",
" padding-bottom: 5px !important;\n",
"}\n",
"\n",
".xr-var-attrs-in:checked ~ .xr-var-attrs,\n",
".xr-var-data-in:checked ~ .xr-var-data {\n",
" display: block;\n",
"}\n",
"\n",
".xr-var-data > table {\n",
" float: right;\n",
"}\n",
"\n",
".xr-var-name span,\n",
".xr-var-data,\n",
".xr-attrs {\n",
" padding-left: 25px !important;\n",
"}\n",
"\n",
".xr-attrs,\n",
".xr-var-attrs,\n",
".xr-var-data {\n",
" grid-column: 1 / -1;\n",
"}\n",
"\n",
"dl.xr-attrs {\n",
" padding: 0;\n",
" margin: 0;\n",
" display: grid;\n",
" grid-template-columns: 125px auto;\n",
"}\n",
"\n",
".xr-attrs dt, dd {\n",
" padding: 0;\n",
" margin: 0;\n",
" float: left;\n",
" padding-right: 10px;\n",
" width: auto;\n",
"}\n",
"\n",
".xr-attrs dt {\n",
" font-weight: normal;\n",
" grid-column: 1;\n",
"}\n",
"\n",
".xr-attrs dt:hover span {\n",
" display: inline-block;\n",
" background: var(--xr-background-color);\n",
" padding-right: 10px;\n",
"}\n",
"\n",
".xr-attrs dd {\n",
" grid-column: 2;\n",
" white-space: pre-wrap;\n",
" word-break: break-all;\n",
"}\n",
"\n",
".xr-icon-database,\n",
".xr-icon-file-text2 {\n",
" display: inline-block;\n",
" vertical-align: middle;\n",
" width: 1em;\n",
" height: 1.5em !important;\n",
" stroke-width: 0;\n",
" stroke: currentColor;\n",
" fill: currentColor;\n",
"}\n",
"</style><pre class='xr-text-repr-fallback'>&lt;xarray.Dataset&gt;\n",
"Dimensions: (nlayer: 3, time: 14, z: 20810)\n",
"Coordinates:\n",
" * time (time) datetime64[ns] 2021-01-16 2021-01-17 ... 2021-01-29\n",
" * z (z) MultiIndex\n",
" - lat (z) float64 41.22 41.28 41.28 41.28 ... 49.09 49.09 49.09\n",
" - lon (z) float64 -116.2 -116.3 -116.2 ... -114.3 -114.2 -114.2\n",
"Dimensions without coordinates: nlayer\n",
"Data variables:\n",
" soil_density (nlayer, z) float64 2.62e+03 2.62e+03 ... 2.62e+03 2.62e+03\n",
" t_min (time, z) float32 dask.array&lt;chunksize=(14, 20810), meta=np.ndarray&gt;\n",
" t_max (time, z) float32 dask.array&lt;chunksize=(14, 20810), meta=np.ndarray&gt;\n",
" prec (time, z) float32 dask.array&lt;chunksize=(14, 20810), meta=np.ndarray&gt;\n",
" elev (z) float64 1.817e+03 1.936e+03 ... 1.791e+03 1.969e+03\n",
" annual_prec (z) float64 458.9 466.3 288.1 288.1 ... 1.407e+03 540.8 540.8</pre><div class='xr-wrap' hidden><div class='xr-header'><div class='xr-obj-type'>xarray.Dataset</div></div><ul class='xr-sections'><li class='xr-section-item'><input id='section-e6f9efa5-b1d6-4627-a285-ebea87332087' class='xr-section-summary-in' type='checkbox' disabled ><label for='section-e6f9efa5-b1d6-4627-a285-ebea87332087' class='xr-section-summary' title='Expand/collapse section'>Dimensions:</label><div class='xr-section-inline-details'><ul class='xr-dim-list'><li><span>nlayer</span>: 3</li><li><span class='xr-has-index'>time</span>: 14</li><li><span class='xr-has-index'>z</span>: 20810</li></ul></div><div class='xr-section-details'></div></li><li class='xr-section-item'><input id='section-05150a79-82bb-44bf-9d37-674374f1f8d6' class='xr-section-summary-in' type='checkbox' checked><label for='section-05150a79-82bb-44bf-9d37-674374f1f8d6' class='xr-section-summary' >Coordinates: <span>(2)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><ul class='xr-var-list'><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>time</span></div><div class='xr-var-dims'>(time)</div><div class='xr-var-dtype'>datetime64[ns]</div><div class='xr-var-preview xr-preview'>2021-01-16 ... 2021-01-29</div><input id='attrs-7e66605f-e1ab-4c2a-a1c1-75fefe54e118' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-7e66605f-e1ab-4c2a-a1c1-75fefe54e118' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-c8c12fbe-dbfe-4edb-a7a1-0f505e86f635' class='xr-var-data-in' type='checkbox'><label for='data-c8c12fbe-dbfe-4edb-a7a1-0f505e86f635' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>standard_name :</span></dt><dd>time</dd><dt><span>long_name :</span></dt><dd>time</dd><dt><span>axis :</span></dt><dd>T</dd></dl></div><div class='xr-var-data'><pre>array([&#x27;2021-01-16T00:00:00.000000000&#x27;, &#x27;2021-01-17T00:00:00.000000000&#x27;,\n",
" &#x27;2021-01-18T00:00:00.000000000&#x27;, &#x27;2021-01-19T00:00:00.000000000&#x27;,\n",
" &#x27;2021-01-20T00:00:00.000000000&#x27;, &#x27;2021-01-21T00:00:00.000000000&#x27;,\n",
" &#x27;2021-01-22T00:00:00.000000000&#x27;, &#x27;2021-01-23T00:00:00.000000000&#x27;,\n",
" &#x27;2021-01-24T00:00:00.000000000&#x27;, &#x27;2021-01-25T00:00:00.000000000&#x27;,\n",
" &#x27;2021-01-26T00:00:00.000000000&#x27;, &#x27;2021-01-27T00:00:00.000000000&#x27;,\n",
" &#x27;2021-01-28T00:00:00.000000000&#x27;, &#x27;2021-01-29T00:00:00.000000000&#x27;],\n",
" dtype=&#x27;datetime64[ns]&#x27;)</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>z</span></div><div class='xr-var-dims'>(z)</div><div class='xr-var-dtype'>MultiIndex</div><div class='xr-var-preview xr-preview'>(lat, lon)</div><input id='attrs-fef095a5-450a-436e-82aa-274cf8c83456' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-fef095a5-450a-436e-82aa-274cf8c83456' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-25e5a6b4-0bff-4409-8578-8f1de505c026' class='xr-var-data-in' type='checkbox'><label for='data-25e5a6b4-0bff-4409-8578-8f1de505c026' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'></dl></div><div class='xr-var-data'><pre>array([(41.21875, -116.21875), (41.28125, -116.28125), (41.28125, -116.21875),\n",
" ..., (49.09375, -114.28125), (49.09375, -114.21875),\n",
" (49.09375, -114.15625)], dtype=object)</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>lat</span></div><div class='xr-var-dims'>(z)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>41.22 41.28 41.28 ... 49.09 49.09</div><input id='attrs-7a3ef87f-fed1-46b9-8f8e-29fca02c4f88' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-7a3ef87f-fed1-46b9-8f8e-29fca02c4f88' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-64da73f5-1683-419d-b74b-de206030bec7' class='xr-var-data-in' type='checkbox'><label for='data-64da73f5-1683-419d-b74b-de206030bec7' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'></dl></div><div class='xr-var-data'><pre>array([41.21875, 41.28125, 41.28125, ..., 49.09375, 49.09375, 49.09375])</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>lon</span></div><div class='xr-var-dims'>(z)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>-116.2 -116.3 ... -114.2 -114.2</div><input id='attrs-863738e5-4a1f-49a7-ad44-e9b11fa6fc5b' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-863738e5-4a1f-49a7-ad44-e9b11fa6fc5b' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-fede86c8-6906-4378-9002-1b4f77d132c7' class='xr-var-data-in' type='checkbox'><label for='data-fede86c8-6906-4378-9002-1b4f77d132c7' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'></dl></div><div class='xr-var-data'><pre>array([-116.21875, -116.28125, -116.21875, ..., -114.28125, -114.21875,\n",
" -114.15625])</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-c84729b7-758f-43ed-a154-0c29ee6c94a7' class='xr-section-summary-in' type='checkbox' checked><label for='section-c84729b7-758f-43ed-a154-0c29ee6c94a7' class='xr-section-summary' >Data variables: <span>(6)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><ul class='xr-var-list'><li class='xr-var-item'><div class='xr-var-name'><span>soil_density</span></div><div class='xr-var-dims'>(nlayer, z)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>2.62e+03 2.62e+03 ... 2.62e+03</div><input id='attrs-e1120720-7a16-48cb-a4e9-fa7d7bac90e1' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-e1120720-7a16-48cb-a4e9-fa7d7bac90e1' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-b9cedf48-b922-4f49-b763-eea0f6d14250' class='xr-var-data-in' type='checkbox'><label for='data-b9cedf48-b922-4f49-b763-eea0f6d14250' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>units :</span></dt><dd>kg/m3</dd><dt><span>description :</span></dt><dd>Soil particle density, normally 2685 kg/m3</dd><dt><span>long_name :</span></dt><dd>soil_density</dd></dl></div><div class='xr-var-data'><pre>array([[2620.28 , 2620.28 , 2642.96 , ..., 2619.1001, 2620.28 ,\n",
" 2620.28 ],\n",
" [2620.28 , 2620.28 , 2642.96 , ..., 2619.1001, 2620.28 ,\n",
" 2620.28 ],\n",
" [2620.28 , 2620.28 , 2642.96 , ..., 2619.1001, 2620.28 ,\n",
" 2620.28 ]])</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>t_min</span></div><div class='xr-var-dims'>(time, z)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>dask.array&lt;chunksize=(14, 20810), meta=np.ndarray&gt;</div><input id='attrs-3415bc6e-b006-454d-b4b1-9c1c4da27515' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-3415bc6e-b006-454d-b4b1-9c1c4da27515' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-a176cef8-5977-46b6-85fd-4cf30da9d581' class='xr-var-data-in' type='checkbox'><label for='data-a176cef8-5977-46b6-85fd-4cf30da9d581' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>standard_name :</span></dt><dd>tmmn</dd><dt><span>long_name :</span></dt><dd>tmmn</dd><dt><span>units :</span></dt><dd>K</dd><dt><span>description :</span></dt><dd>Daily Minimum Temperature (2m)</dd><dt><span>dimensions :</span></dt><dd>lon lat time</dd><dt><span>coordinate_system :</span></dt><dd>WGS84,EPSG:4326</dd></dl></div><div class='xr-var-data'><table>\n",
"<tr>\n",
"<td>\n",
"<table>\n",
" <thead>\n",
" <tr><td> </td><th> Array </th><th> Chunk </th></tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr><th> Bytes </th><td> 1.17 MB </td> <td> 1.17 MB </td></tr>\n",
" <tr><th> Shape </th><td> (14, 20810) </td> <td> (14, 20810) </td></tr>\n",
" <tr><th> Count </th><td> 19 Tasks </td><td> 1 Chunks </td></tr>\n",
" <tr><th> Type </th><td> float32 </td><td> numpy.ndarray </td></tr>\n",
" </tbody>\n",
"</table>\n",
"</td>\n",
"<td>\n",
"<svg width=\"170\" height=\"75\" style=\"stroke:rgb(0,0,0);stroke-width:1\" >\n",
"\n",
" <!-- Horizontal lines -->\n",
" <line x1=\"0\" y1=\"0\" x2=\"120\" y2=\"0\" style=\"stroke-width:2\" />\n",
" <line x1=\"0\" y1=\"25\" x2=\"120\" y2=\"25\" style=\"stroke-width:2\" />\n",
"\n",
" <!-- Vertical lines -->\n",
" <line x1=\"0\" y1=\"0\" x2=\"0\" y2=\"25\" style=\"stroke-width:2\" />\n",
" <line x1=\"120\" y1=\"0\" x2=\"120\" y2=\"25\" style=\"stroke-width:2\" />\n",
"\n",
" <!-- Colored Rectangle -->\n",
" <polygon points=\"0.0,0.0 120.0,0.0 120.0,25.412616514582485 0.0,25.412616514582485\" style=\"fill:#ECB172A0;stroke-width:0\"/>\n",
"\n",
" <!-- Text -->\n",
" <text x=\"60.000000\" y=\"45.412617\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" >20810</text>\n",
" <text x=\"140.000000\" y=\"12.706308\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(0,140.000000,12.706308)\">14</text>\n",
"</svg>\n",
"</td>\n",
"</tr>\n",
"</table></div></li><li class='xr-var-item'><div class='xr-var-name'><span>t_max</span></div><div class='xr-var-dims'>(time, z)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>dask.array&lt;chunksize=(14, 20810), meta=np.ndarray&gt;</div><input id='attrs-6e4b6c9b-da96-4eff-99ac-592511ddf7af' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-6e4b6c9b-da96-4eff-99ac-592511ddf7af' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-3d84daba-2c53-4c10-bef4-a01873cc0d30' class='xr-var-data-in' type='checkbox'><label for='data-3d84daba-2c53-4c10-bef4-a01873cc0d30' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>standard_name :</span></dt><dd>tmmx</dd><dt><span>long_name :</span></dt><dd>tmmx</dd><dt><span>units :</span></dt><dd>K</dd><dt><span>description :</span></dt><dd>Daily Maximum Temperature (2m)</dd><dt><span>dimensions :</span></dt><dd>lon lat time</dd><dt><span>coordinate_system :</span></dt><dd>WGS84,EPSG:4326</dd></dl></div><div class='xr-var-data'><table>\n",
"<tr>\n",
"<td>\n",
"<table>\n",
" <thead>\n",
" <tr><td> </td><th> Array </th><th> Chunk </th></tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr><th> Bytes </th><td> 1.17 MB </td> <td> 1.17 MB </td></tr>\n",
" <tr><th> Shape </th><td> (14, 20810) </td> <td> (14, 20810) </td></tr>\n",
" <tr><th> Count </th><td> 19 Tasks </td><td> 1 Chunks </td></tr>\n",
" <tr><th> Type </th><td> float32 </td><td> numpy.ndarray </td></tr>\n",
" </tbody>\n",
"</table>\n",
"</td>\n",
"<td>\n",
"<svg width=\"170\" height=\"75\" style=\"stroke:rgb(0,0,0);stroke-width:1\" >\n",
"\n",
" <!-- Horizontal lines -->\n",
" <line x1=\"0\" y1=\"0\" x2=\"120\" y2=\"0\" style=\"stroke-width:2\" />\n",
" <line x1=\"0\" y1=\"25\" x2=\"120\" y2=\"25\" style=\"stroke-width:2\" />\n",
"\n",
" <!-- Vertical lines -->\n",
" <line x1=\"0\" y1=\"0\" x2=\"0\" y2=\"25\" style=\"stroke-width:2\" />\n",
" <line x1=\"120\" y1=\"0\" x2=\"120\" y2=\"25\" style=\"stroke-width:2\" />\n",
"\n",
" <!-- Colored Rectangle -->\n",
" <polygon points=\"0.0,0.0 120.0,0.0 120.0,25.412616514582485 0.0,25.412616514582485\" style=\"fill:#ECB172A0;stroke-width:0\"/>\n",
"\n",
" <!-- Text -->\n",
" <text x=\"60.000000\" y=\"45.412617\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" >20810</text>\n",
" <text x=\"140.000000\" y=\"12.706308\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(0,140.000000,12.706308)\">14</text>\n",
"</svg>\n",
"</td>\n",
"</tr>\n",
"</table></div></li><li class='xr-var-item'><div class='xr-var-name'><span>prec</span></div><div class='xr-var-dims'>(time, z)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>dask.array&lt;chunksize=(14, 20810), meta=np.ndarray&gt;</div><input id='attrs-d43674c1-b21b-49b1-92bc-a0c9ac1a7ba8' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-d43674c1-b21b-49b1-92bc-a0c9ac1a7ba8' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-1f525852-f605-4e5b-8528-6c3f48f82ad1' class='xr-var-data-in' type='checkbox'><label for='data-1f525852-f605-4e5b-8528-6c3f48f82ad1' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>standard_name :</span></dt><dd>pr</dd><dt><span>long_name :</span></dt><dd>pr</dd><dt><span>units :</span></dt><dd>mm</dd><dt><span>description :</span></dt><dd>Daily Accumulated Precipitation</dd><dt><span>dimensions :</span></dt><dd>lon lat time</dd><dt><span>coordinate_system :</span></dt><dd>WGS84,EPSG:4326</dd></dl></div><div class='xr-var-data'><table>\n",
"<tr>\n",
"<td>\n",
"<table>\n",
" <thead>\n",
" <tr><td> </td><th> Array </th><th> Chunk </th></tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr><th> Bytes </th><td> 1.17 MB </td> <td> 1.17 MB </td></tr>\n",
" <tr><th> Shape </th><td> (14, 20810) </td> <td> (14, 20810) </td></tr>\n",
" <tr><th> Count </th><td> 19 Tasks </td><td> 1 Chunks </td></tr>\n",
" <tr><th> Type </th><td> float32 </td><td> numpy.ndarray </td></tr>\n",
" </tbody>\n",
"</table>\n",
"</td>\n",
"<td>\n",
"<svg width=\"170\" height=\"75\" style=\"stroke:rgb(0,0,0);stroke-width:1\" >\n",
"\n",
" <!-- Horizontal lines -->\n",
" <line x1=\"0\" y1=\"0\" x2=\"120\" y2=\"0\" style=\"stroke-width:2\" />\n",
" <line x1=\"0\" y1=\"25\" x2=\"120\" y2=\"25\" style=\"stroke-width:2\" />\n",
"\n",
" <!-- Vertical lines -->\n",
" <line x1=\"0\" y1=\"0\" x2=\"0\" y2=\"25\" style=\"stroke-width:2\" />\n",
" <line x1=\"120\" y1=\"0\" x2=\"120\" y2=\"25\" style=\"stroke-width:2\" />\n",
"\n",
" <!-- Colored Rectangle -->\n",
" <polygon points=\"0.0,0.0 120.0,0.0 120.0,25.412616514582485 0.0,25.412616514582485\" style=\"fill:#ECB172A0;stroke-width:0\"/>\n",
"\n",
" <!-- Text -->\n",
" <text x=\"60.000000\" y=\"45.412617\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" >20810</text>\n",
" <text x=\"140.000000\" y=\"12.706308\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(0,140.000000,12.706308)\">14</text>\n",
"</svg>\n",
"</td>\n",
"</tr>\n",
"</table></div></li><li class='xr-var-item'><div class='xr-var-name'><span>elev</span></div><div class='xr-var-dims'>(z)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>1.817e+03 1.936e+03 ... 1.969e+03</div><input id='attrs-3cab6fb5-3c78-4acb-89ef-975518000c96' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-3cab6fb5-3c78-4acb-89ef-975518000c96' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-0abbb0a3-076d-41d8-b3f1-a9ec8b3b4a9f' class='xr-var-data-in' type='checkbox'><label for='data-0abbb0a3-076d-41d8-b3f1-a9ec8b3b4a9f' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>units :</span></dt><dd>m</dd><dt><span>description :</span></dt><dd>Average elevation of grid cell</dd><dt><span>long_name :</span></dt><dd>elev</dd></dl></div><div class='xr-var-data'><pre>array([1816.9 , 1935.8 , 1794.9 , ..., 1926.0928, 1790.6862,\n",
" 1969.4869])</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>annual_prec</span></div><div class='xr-var-dims'>(z)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>458.9 466.3 288.1 ... 540.8 540.8</div><input id='attrs-17590be0-da46-4ede-869b-91b634fc1b68' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-17590be0-da46-4ede-869b-91b634fc1b68' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-f299fbe3-7f6a-431a-9f5d-5dae1aaa1f29' class='xr-var-data-in' type='checkbox'><label for='data-f299fbe3-7f6a-431a-9f5d-5dae1aaa1f29' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>units :</span></dt><dd>mm</dd><dt><span>description :</span></dt><dd>Average annual precipitation.</dd><dt><span>long_name :</span></dt><dd>annual_prec</dd></dl></div><div class='xr-var-data'><pre>array([ 458.894, 466.341, 288.096, ..., 1406.53 , 540.784, 540.784])</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-0de313cd-1137-49ea-afef-3fc8ae68be0e' class='xr-section-summary-in' type='checkbox' disabled ><label for='section-0de313cd-1137-49ea-afef-3fc8ae68be0e' class='xr-section-summary' title='Expand/collapse section'>Attributes: <span>(0)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><dl class='xr-attrs'></dl></div></li></ul></div></div>"
],
"text/plain": [
"<xarray.Dataset>\n",
"Dimensions: (nlayer: 3, time: 14, z: 20810)\n",
"Coordinates:\n",
" * time (time) datetime64[ns] 2021-01-16 2021-01-17 ... 2021-01-29\n",
" * z (z) MultiIndex\n",
" - lat (z) float64 41.22 41.28 41.28 41.28 ... 49.09 49.09 49.09\n",
" - lon (z) float64 -116.2 -116.3 -116.2 ... -114.3 -114.2 -114.2\n",
"Dimensions without coordinates: nlayer\n",
"Data variables:\n",
" soil_density (nlayer, z) float64 2.62e+03 2.62e+03 ... 2.62e+03 2.62e+03\n",
" t_min (time, z) float32 dask.array<chunksize=(14, 20810), meta=np.ndarray>\n",
" t_max (time, z) float32 dask.array<chunksize=(14, 20810), meta=np.ndarray>\n",
" prec (time, z) float32 dask.array<chunksize=(14, 20810), meta=np.ndarray>\n",
" elev (z) float64 1.817e+03 1.936e+03 ... 1.791e+03 1.969e+03\n",
" annual_prec (z) float64 458.9 466.3 288.1 288.1 ... 1.407e+03 540.8 540.8"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ant_days = 14\n",
"ts = slice(time - pd.Timedelta(f'{ant_days-1}D'), time)\n",
"\n",
"input_vars = ['soil_density', 't_min', 't_max', 'prec', 'elev', 'annual_prec']\n",
"domain = xr.open_dataset('./input/domain.vic.us_columbia0.0625deg.20180117.nc')\n",
"params = xr.open_dataset('./input/us_columbia_0.0625deg.vic_5.0.0_parameters.nc')\n",
"met = xr.open_mfdataset(['./input/metGrid.nc', './input/metGridstate.nc'])\n",
"input_ds = xr.merge([domain, params, met])\n",
"input_ds = input_ds[input_vars]\n",
"input_ds = input_ds.sel(time=ts).stack(z=['lat', 'lon']).sel(z=target_ds['z'])\n",
"input_ds"
]
},
{
"cell_type": "markdown",
"id": "5cbd36e7-9832-45fd-a698-13efa1f93403",
"metadata": {},
"source": [
"### Setting up the input data continued\n",
"\n",
"Now, with a nicely preprocessed dataset we need to morph this into a tabular dataframe so that XGBoost knows how to handle it. To do so I make a column for each of the soil layers `soil_density` values, labeling them `soil_density_i` where `i` is the index of the depth layer. Then, for each of the other input variables I pull them out into columns. The variables where there is time dependence have each of the antecedent days (up to 14) pulled out separately into columns which are labeled `varname_timestep`. This is all concatenated together, giving a total of 47 input features. Explicitly they are:\n",
"\n",
"* 1 for elevation\n",
"* 1 for annual mean precipitation\n",
"* 14 for daily minimum temperature\n",
"* 14 for daily maximum temperature\n",
"* 14 for daily total precipitation\n",
"* 3 for soil layer density"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "25789f2b-d73c-4d23-abdd-4953d5c182db",
"metadata": {},
"outputs": [
{
"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></th>\n",
" <th>t_min_0</th>\n",
" <th>t_min_1</th>\n",
" <th>t_min_2</th>\n",
" <th>t_min_3</th>\n",
" <th>t_min_4</th>\n",
" <th>t_min_5</th>\n",
" <th>t_min_6</th>\n",
" <th>t_min_7</th>\n",
" <th>t_min_8</th>\n",
" <th>t_min_9</th>\n",
" <th>...</th>\n",
" <th>prec_9</th>\n",
" <th>prec_10</th>\n",
" <th>prec_11</th>\n",
" <th>prec_12</th>\n",
" <th>prec_13</th>\n",
" <th>elev</th>\n",
" <th>annual_prec</th>\n",
" <th>soil_density_0</th>\n",
" <th>soil_density_1</th>\n",
" <th>soil_density_2</th>\n",
" </tr>\n",
" <tr>\n",
" <th>lat</th>\n",
" <th>lon</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>41.21875</th>\n",
" <th>-116.21875</th>\n",
" <td>-5.400009</td>\n",
" <td>-5.699997</td>\n",
" <td>-6.400009</td>\n",
" <td>-9.900009</td>\n",
" <td>-10.600006</td>\n",
" <td>-6.100006</td>\n",
" <td>-3.699997</td>\n",
" <td>-9.199997</td>\n",
" <td>-11.500000</td>\n",
" <td>-11.699997</td>\n",
" <td>...</td>\n",
" <td>1.2</td>\n",
" <td>0.7</td>\n",
" <td>5.8</td>\n",
" <td>3.6</td>\n",
" <td>3.2</td>\n",
" <td>1816.9000</td>\n",
" <td>458.894</td>\n",
" <td>2620.28</td>\n",
" <td>2620.28</td>\n",
" <td>2620.28</td>\n",
" </tr>\n",
" <tr>\n",
" <th rowspan=\"4\" valign=\"top\">41.28125</th>\n",
" <th>-116.28125</th>\n",
" <td>-5.000000</td>\n",
" <td>-4.900009</td>\n",
" <td>-7.800003</td>\n",
" <td>-9.800003</td>\n",
" <td>-9.400009</td>\n",
" <td>-4.900009</td>\n",
" <td>-4.500000</td>\n",
" <td>-13.000000</td>\n",
" <td>-14.800003</td>\n",
" <td>-12.300003</td>\n",
" <td>...</td>\n",
" <td>1.6</td>\n",
" <td>0.6</td>\n",
" <td>5.5</td>\n",
" <td>3.7</td>\n",
" <td>3.3</td>\n",
" <td>1935.8000</td>\n",
" <td>466.341</td>\n",
" <td>2620.28</td>\n",
" <td>2620.28</td>\n",
" <td>2620.28</td>\n",
" </tr>\n",
" <tr>\n",
" <th>-116.21875</th>\n",
" <td>-5.199997</td>\n",
" <td>-5.600006</td>\n",
" <td>-6.699997</td>\n",
" <td>-9.800003</td>\n",
" <td>-10.400009</td>\n",
" <td>-5.699997</td>\n",
" <td>-3.900009</td>\n",
" <td>-10.199997</td>\n",
" <td>-12.300003</td>\n",
" <td>-11.500000</td>\n",
" <td>...</td>\n",
" <td>1.3</td>\n",
" <td>0.7</td>\n",
" <td>5.6</td>\n",
" <td>3.1</td>\n",
" <td>1.7</td>\n",
" <td>1794.9000</td>\n",
" <td>288.096</td>\n",
" <td>2642.96</td>\n",
" <td>2642.96</td>\n",
" <td>2642.96</td>\n",
" </tr>\n",
" <tr>\n",
" <th>-116.15625</th>\n",
" <td>-6.100006</td>\n",
" <td>-6.500000</td>\n",
" <td>-5.600006</td>\n",
" <td>-10.400009</td>\n",
" <td>-11.699997</td>\n",
" <td>-7.199997</td>\n",
" <td>-3.800003</td>\n",
" <td>-8.000000</td>\n",
" <td>-10.500000</td>\n",
" <td>-12.300003</td>\n",
" <td>...</td>\n",
" <td>0.6</td>\n",
" <td>0.7</td>\n",
" <td>5.7</td>\n",
" <td>3.3</td>\n",
" <td>3.2</td>\n",
" <td>1775.0000</td>\n",
" <td>288.096</td>\n",
" <td>2642.96</td>\n",
" <td>2642.96</td>\n",
" <td>2642.96</td>\n",
" </tr>\n",
" <tr>\n",
" <th>-116.09375</th>\n",
" <td>-6.400009</td>\n",
" <td>-6.400009</td>\n",
" <td>-7.000000</td>\n",
" <td>-10.600006</td>\n",
" <td>-10.699997</td>\n",
" <td>-6.600006</td>\n",
" <td>-4.500000</td>\n",
" <td>-10.600006</td>\n",
" <td>-13.100006</td>\n",
" <td>-13.000000</td>\n",
" <td>...</td>\n",
" <td>0.0</td>\n",
" <td>0.6</td>\n",
" <td>4.4</td>\n",
" <td>3.0</td>\n",
" <td>4.6</td>\n",
" <td>1971.8766</td>\n",
" <td>461.644</td>\n",
" <td>2620.28</td>\n",
" <td>2620.28</td>\n",
" <td>2620.28</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>5 rows × 47 columns</p>\n",
"</div>"
],
"text/plain": [
" t_min_0 t_min_1 t_min_2 t_min_3 t_min_4 \\\n",
"lat lon \n",
"41.21875 -116.21875 -5.400009 -5.699997 -6.400009 -9.900009 -10.600006 \n",
"41.28125 -116.28125 -5.000000 -4.900009 -7.800003 -9.800003 -9.400009 \n",
" -116.21875 -5.199997 -5.600006 -6.699997 -9.800003 -10.400009 \n",
" -116.15625 -6.100006 -6.500000 -5.600006 -10.400009 -11.699997 \n",
" -116.09375 -6.400009 -6.400009 -7.000000 -10.600006 -10.699997 \n",
"\n",
" t_min_5 t_min_6 t_min_7 t_min_8 t_min_9 ... \\\n",
"lat lon ... \n",
"41.21875 -116.21875 -6.100006 -3.699997 -9.199997 -11.500000 -11.699997 ... \n",
"41.28125 -116.28125 -4.900009 -4.500000 -13.000000 -14.800003 -12.300003 ... \n",
" -116.21875 -5.699997 -3.900009 -10.199997 -12.300003 -11.500000 ... \n",
" -116.15625 -7.199997 -3.800003 -8.000000 -10.500000 -12.300003 ... \n",
" -116.09375 -6.600006 -4.500000 -10.600006 -13.100006 -13.000000 ... \n",
"\n",
" prec_9 prec_10 prec_11 prec_12 prec_13 elev \\\n",
"lat lon \n",
"41.21875 -116.21875 1.2 0.7 5.8 3.6 3.2 1816.9000 \n",
"41.28125 -116.28125 1.6 0.6 5.5 3.7 3.3 1935.8000 \n",
" -116.21875 1.3 0.7 5.6 3.1 1.7 1794.9000 \n",
" -116.15625 0.6 0.7 5.7 3.3 3.2 1775.0000 \n",
" -116.09375 0.0 0.6 4.4 3.0 4.6 1971.8766 \n",
"\n",
" annual_prec soil_density_0 soil_density_1 \\\n",
"lat lon \n",
"41.21875 -116.21875 458.894 2620.28 2620.28 \n",
"41.28125 -116.28125 466.341 2620.28 2620.28 \n",
" -116.21875 288.096 2642.96 2642.96 \n",
" -116.15625 288.096 2642.96 2642.96 \n",
" -116.09375 461.644 2620.28 2620.28 \n",
"\n",
" soil_density_2 \n",
"lat lon \n",
"41.21875 -116.21875 2620.28 \n",
"41.28125 -116.28125 2620.28 \n",
" -116.21875 2642.96 \n",
" -116.15625 2642.96 \n",
" -116.09375 2620.28 \n",
"\n",
"[5 rows x 47 columns]"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"layer_var = input_ds['soil_density']\n",
"unraveled = []\n",
"for i in range(len(layer_var['nlayer'])):\n",
" unraveled.append(layer_var.isel(nlayer=i).rename( f'{layer_var.name}_{i}')) \n",
"unraveled = xr.merge(unraveled).drop('z')\n",
"soil_layer_dfs = [pd.DataFrame(unraveled[v].values.T) for v in unraveled.variables]\n",
"\n",
"for v, df in zip(unraveled.variables, soil_layer_dfs):\n",
" df.columns = [v]\n",
" df.index = target_df.index\n",
"\n",
"df_list = []\n",
"for v in input_vars:\n",
" if v == 'soil_density':\n",
" continue\n",
" var_df = pd.DataFrame(input_ds[v].values.T)\n",
" if 'time' in input_ds[v].dims:\n",
" var_df.columns = [f'{v}_{i}' for i in range(ant_days)]\n",
" else:\n",
" var_df.columns = [v]\n",
" var_df.index = target_df.index\n",
" df_list.append(var_df)\n",
"\n",
"df_list = [*df_list, *soil_layer_dfs]\n",
"input_df = pd.concat(df_list, axis=1)\n",
"input_df.head()"
]
},
{
"cell_type": "markdown",
"id": "ff1b76d5-b1fe-408a-bd37-a94060620842",
"metadata": {},
"source": [
"# Splitting out the test/validation data"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "522c72fb-c318-41c6-a524-04e7b5c38b02",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Training dataset has shapes: (16648, 47) (16648, 1)\n",
"Validation dataset has shapes: (4162, 47) (4162, 1)\n"
]
}
],
"source": [
"idx_randomizer = np.arange(len(input_df))\n",
"np.random.shuffle(idx_randomizer)\n",
"valid_frac = 0.2\n",
"valid_idx = int((1-valid_frac) * len(idx_randomizer))\n",
"test_idx, valid_idx = idx_randomizer[0:valid_idx], idx_randomizer[valid_idx:]\n",
"\n",
"X_train = input_df.iloc[test_idx]\n",
"y_train = target_df.iloc[test_idx]\n",
"\n",
"X_valid = input_df.iloc[valid_idx]\n",
"y_valid = target_df.iloc[valid_idx]\n",
"print('Training dataset has shapes: ', X_train.shape, y_train.shape)\n",
"print('Validation dataset has shapes: ', X_valid.shape, y_valid.shape)"
]
},
{
"cell_type": "markdown",
"id": "f23ea507-3fa0-4d57-9af5-2f625ee2f92c",
"metadata": {},
"source": [
"# Create the XGBoost regressor, and train it"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "hydraulic-slope",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"XGBRegressor(base_score=0.5, booster='gbtree', colsample_bylevel=1,\n",
" colsample_bynode=1, colsample_bytree=1, gamma=0, gpu_id=-1,\n",
" importance_type='gain', interaction_constraints='',\n",
" learning_rate=0.03, max_delta_step=0, max_depth=6,\n",
" min_child_weight=1, missing=nan, monotone_constraints='()',\n",
" n_estimators=10000, n_jobs=12, num_parallel_tree=1, random_state=0,\n",
" reg_alpha=0, reg_lambda=1, scale_pos_weight=1, subsample=1,\n",
" tree_method='exact', validate_parameters=1, verbosity=None)"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model = xgb.XGBRegressor(\n",
" objective='reg:squarederror', \n",
" max_depth=6, \n",
" n_estimators=10000, \n",
" n_jobs=12, \n",
" learning_rate=0.03\n",
")\n",
"model.fit(X_train, y_train)"
]
},
{
"cell_type": "markdown",
"id": "46094d67-fb5d-4b30-a4d2-6e7b40e6f7ef",
"metadata": {},
"source": [
"# Make a prediction and simple plot!"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "worst-violin",
"metadata": {},
"outputs": [],
"source": [
"y_hat_xgb = model.predict(X_valid)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "spectacular-grave",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x7fbed2e9aa58>]"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.scatter(y_valid, y_hat_xgb, alpha=0.3)\n",
"plt.xlabel('VIC Soil Moisture Percentile')\n",
"plt.ylabel('XGBoost Predicted Soil Moisture Percentile')\n",
"plt.plot([0, 100], [0,100], color='black')"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "alert-horse",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "all",
"language": "python",
"name": "all"
},
"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.7.3"
},
"widgets": {
"application/vnd.jupyter.widget-state+json": {
"state": {},
"version_major": 2,
"version_minor": 0
}
}
},
"nbformat": 4,
"nbformat_minor": 5
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment