{ "cells": [ { "cell_type": "markdown", "metadata": { "id": "uKpOdQvxbeB4" }, "source": [ "# MagNet: Model the Geomagnetic Field Chapter 2\n", "## Explainable AI (XAI)\n", "\n", "![HELIO_GRAPHIC_URL](https://ngdc.noaa.gov/geomag/img/challenge-banner.png \"HELIO\")\n", "\n", "* Creator(s): Rob.Redmon@noaa.gov (1,2), Manoj.C.Nair@noaa.gov (2,3), LiYin.Young@noaa.gov (2,3)\n", "* Affiliation(s):\n", " * 1. National Centers for Environmental Information ([NCEI](https://www.ncei.noaa.gov/)), National Oceanic and Atmospheric Administration (NOAA),\n", " * 2. NOAA Center for Artificial Intelligence ([NCAI](https://noaa.gov/ai)),\n", " * 3. Cooperative Institute for Research for Environmental Sciences [CIRES](https://cires.colorado.edu/).\n", "* History\n", " * 2023-08: Content reorganized for the [NCAI](https://noaa.gov/ai) Learning Journey library. No significant technical changes from previous version.\n", " * 2022-06: Initial notebook version developed for the [TAI4ES 2022 Summer School](https://www2.cisl.ucar.edu/events/tai4es-2022-summer-school).\n", "* Acknowledgements:\n", " * Original funding support was provided by the NCEI Innovates program.\n", " * Post-model inference and evaluation were created for the NCAR and [AI2ES](https://www.ai2es.org/) [TAI4ES 2022 Summer School](https://www2.cisl.ucar.edu/events/tai4es-2022-summer-school)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Overview\n", "Chapter 2 \"Explainable AI (XAI)\", of the two notebook series, focuses on evaluating the benchmark model developed in Chapter 1 \"Develop the LSTM Model\" for predicting the disturbance-storm-time (Dst) index space weather storm indicator." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Prerequisites\n", "\n", "* Chapter 1: The first chapter builds the model with benchmark or user defined hyper parameter settings.\n", "* Python intermediate proficiency for data science: SciPy, Pandas, NumPy, MatplotLib,\n", "* Machine Learning intermediate experience: ML for supervised modeling of time series data using neural networks. We use the Keras framework for TensorFlow in this notebook to create a Long Short-Term Memory (LSTM) recurrent neural network,\n", "* Space Weather introductory knowledge: Basic familiarity of the Solar Wind and the Disturbance Storm Time activity index (Dst). For introductory materials on space weather and its effects on the technological systems we rely on, two resources are:\n", " * [NASA's Space Place](https://spaceplace.nasa.gov/spaceweather/),\n", " * [NOAA's Space Weather Prediction Center (SWPC)](https://www.swpc.noaa.gov/), in particular their community dashboards." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Targeted Level\n", "This notebook is targeted towards learners with beginner to intermediate experience in space weather topics, and intermediate experience in modeling time series data with neural networks." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Learning Outcomes\n", "\n", "By engaging in this notebook series, the learner will get introductory experience with Explainable AI (XAI) topics through:\n", "1. Evaluating input (feature) relative importance to model performance via the \"permutation importance\" technique,\n", "2. Evaluating the trained model on classical space weather events." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "Info: \n", "In this notebook, you'll notice color-coded boxes, which provide hints, exercises, and warnings. Here is the color-coding breakdown:\n", "
\n", "\n", "* Hint/Tip/Info: Helpful context and guidance, as a blue alert-info box\n", "* Exercise: Interactive activity / exercise, as a green alert-success box\n", "* Be Aware: Caution / Caveat, as a yellow alert-warn box\n", "* Danger: Conditions under which code may create an error, as a red alert-danger box" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Tutorial Material" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "Info: See Chapter 1 in the MagNet LSTM series.\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Software\n", "This notebook has been tested using the following environments:\n", "* Google Colaboratory (Python 3.10.12) with no need to install additional packages.\n", " * CPU, GPU, TPU tested\n", "* Anaconda (Python 3.9.16) with the following key package versions:\n", " * Keras TensorFlow 2.8.0\n", " * Pandas 1.5.3\n", " * Matplotlib 3.7.1\n", " * CPU, and GPU tested" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---" ] }, { "cell_type": "markdown", "metadata": { "id": "She8zOM6Evvk" }, "source": [ "### Acquire Data" ] }, { "cell_type": "markdown", "metadata": { "id": "hRXm1TTrEvvm" }, "source": [ "
\n", "Info: \n", "The competition discussed above used public data for development and the public leaderboard. A private dataset was kept internal during the competition for use in scoring by the organizers. Since the competition has passed, both datasets are publicly accessible from NOAA. We will build and evaluate the model using the competition's public data and evaluate storm event case studies using the competition's private data.\n", "
" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "id": "sEnsRahUEvvm" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Downloaded https://ngdc.noaa.gov/geomag/data/geomag/magnet/public.zip , now unzipping.\n", "Downloaded https://ngdc.noaa.gov/geomag/data/geomag/magnet/private.zip , now unzipping.\n", "\n", "Data files for input (features) and output Dst (labels):\n", "data/public/\n", "\t satellite_positions.csv\n", "\t dst_labels.csv\n", "\t solar_wind.csv\n", "\t sunspots.csv\n", "data/private/\n", "\t satellite_positions.csv\n", "\t dst_labels.csv\n", "\t solar_wind.csv\n", "\t sunspots.csv\n" ] } ], "source": [ "# Download data we need: If directory \"data/\" already exists, we'll assume the data are already downloaded.\n", "# The files are 381 MB zipped and 1.2 GB unzipped\n", "# Retrieving these files from NOAA takes 30-60 seconds on a home internet connection.\n", "\n", "import os, urllib, zipfile\n", "\n", "dir_data = 'data/'\n", "if not os.path.isdir(dir_data):\n", " os.mkdir(dir_data)\n", "\n", " # Zenodo URLs\n", " urls = ['https://zenodo.org/record/8197443/files/public.zip?download=1',\n", " 'https://zenodo.org/record/8197443/files/private.zip?download=1']\n", " \n", " # NOAA URLs (same exact data as on Zenodo) -- uncomment to download from NOAA\n", " # urls = ['https://ngdc.noaa.gov/geomag/data/geomag/magnet/public.zip',\n", " # 'https://ngdc.noaa.gov/geomag/data/geomag/magnet/private.zip']\n", "\n", " # Download and unzip each file\n", " for url in urls:\n", " zip_path, _ = urllib.request.urlretrieve(url)\n", " with zipfile.ZipFile(zip_path, \"r\") as f:\n", " print('Downloaded ', url, ', now unzipping.')\n", " f.extractall(dir_data)\n", "\n", "# Print list of data files:\n", "print('\\nData files for input (features) and output Dst (labels):')\n", "for dir_pubpriv in ['public/', 'private/']:\n", " print(dir_data+dir_pubpriv)\n", " for path, dirs, files in os.walk(dir_data+dir_pubpriv): \n", " for f in files: print('\\t', f)" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "id": "9DmJY2oQEvvk" }, "outputs": [], "source": [ "# Modules we need to get started and Matplotlib configuration:\n", "import numpy as np, pandas as pd, pprint\n", "import matplotlib.pyplot as plt\n", "\n", "# The next two lines are nice for Jupyter, but not available for Colab:\n", "#%load_ext nb_black\n", "#%matplotlib inline\n", "\n", "# Matplotlib Configuration\n", "import matplotlib.pyplot as plt\n", "font = {'family' : 'sans-serif',\n", " 'weight' : 'normal',\n", " 'size' : 14}\n", "plt.rc('font', **font)" ] }, { "cell_type": "markdown", "metadata": { "id": "_p0ic5qPEvvm" }, "source": [ "#### Import Input (Features) and Output (Labels) as Pandas DataFrames\n", "
\n", "Info: As described above, the input data is a time series of solar wind measurements at L1 along with sunspot number, and the output data is a time series of Dst. Recall that for the past competition, the competitors did not have the real geophysical date/time. So here, we will recreate a new column of real geophysical date/time from our timedelta and the table shown in \"Data Summary\".\n", "
" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "id": "l6kkNSINEvvm" }, "outputs": [], "source": [ "# From our time range table in the \"Data Summary\" section:\n", "period_ranges = {\n", " 'train_a':[pd.Timestamp('1998/2/16 00:00:00'), pd.Timestamp('2001/5/31 23:59:00')],\n", " 'train_b':[pd.Timestamp('2013/6/1 00:00:00'), pd.Timestamp('2019/5/31 23:59:00')],\n", " 'train_c':[pd.Timestamp('2004/5/1 00:00:00'), pd.Timestamp('2010/12/31 23:59:00')],\n", " 'test_a' :[pd.Timestamp('2001/6/1 00:00:00'), pd.Timestamp('2004/4/30 23:59:00')],\n", " 'test_b' :[pd.Timestamp('2011/1/1 00:00:00'), pd.Timestamp('2013/5/31 23:59:00')],\n", " 'test_c' :[pd.Timestamp('2019/6/1 00:00:00'), pd.Timestamp('2020/10/31 23:59:00')]}\n", "\n", "def convert_timedelta_to_datetime( df ):\n", " \"\"\"Adds real geophysical datetimes to our DataFrame using the original \"index\" timestamps.\n", " \n", " The relative \"index\" timestamps were used in the MagNet competition datasets since all of the data\n", " were in the public domain.\n", " \n", " Parameters\n", " ----------\n", " df: pd.DataFrame\n", " Includes index time\n", " \n", " Returns\n", " -------\n", " df_datetimes: pd.DataFrame\n", " Adds datetimes to the input pd.DataFrame\n", " \"\"\"\n", " df_datetimes = pd.DataFrame(index=df.index)\n", " df_datetimes['datetime'] = pd.NaT # like Numpy NaN\n", "\n", " i = 0\n", " for period_name, timedelta in df.index:\n", " start_time = period_ranges[period_name][0]\n", " datetime = timedelta + start_time # add Pandas Timedelta to Pandas Timestamp\n", " df_datetimes['datetime'].values[i] = datetime\n", " i += 1\n", "\n", " #print('%s: %s + %s = %s' % (period_name, timedelta, start_time, df['datetime'].values[i]))\n", "\n", " return df_datetimes" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "id": "J6uYH3zGEvvm" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Reading in the Dst output data...\n", "Reading in the Sunspot input data...\n", "Reading in the Solarwind input data...\n", "Reading in the Satellite position input data...\n" ] } ], "source": [ "# Import as Pandas DataFrames\n", "from pathlib import Path\n", "DATA_PATH = Path(\"data/public/\")\n", "\n", "print('Reading in the Dst output data...')\n", "dst = pd.read_csv(DATA_PATH / \"dst_labels.csv\")\n", "dst.timedelta = pd.to_timedelta(dst.timedelta)\n", "dst.set_index([\"period\", \"timedelta\"], inplace=True)\n", "\n", "print('Reading in the Sunspot input data...')\n", "sunspots = pd.read_csv(DATA_PATH / \"sunspots.csv\")\n", "sunspots.timedelta = pd.to_timedelta(sunspots.timedelta)\n", "sunspots.set_index([\"period\", \"timedelta\"], inplace=True)\n", "\n", "print('Reading in the Solarwind input data...')\n", "solar_wind = pd.read_csv(DATA_PATH / \"solar_wind.csv\")\n", "solar_wind.timedelta = pd.to_timedelta(solar_wind.timedelta)\n", "solar_wind.set_index([\"period\", \"timedelta\"], inplace=True)\n", "\n", "print('Reading in the Satellite position input data...')\n", "satellite_positions = pd.read_csv(DATA_PATH / \"satellite_positions.csv\")\n", "satellite_positions.timedelta = pd.to_timedelta(satellite_positions.timedelta)\n", "satellite_positions.set_index([\"period\", \"timedelta\"], inplace=True)\n" ] }, { "cell_type": "markdown", "metadata": { "id": "uB6NzWi0Evvr", "tags": [] }, "source": [ "### Feature Relationships" ] }, { "cell_type": "markdown", "metadata": { "id": "k0H4VUz2Evvq" }, "source": [ "Data gaps in the Solar Wind data are a common issue with real-time data\n", "\n", "
\n", "Be Aware: Gaps in our input (features) are something we'll need to deal carefully with, i.e. in the preprocessing steps below.\n", "
" ] }, { "cell_type": "markdown", "metadata": { "id": "WTaLLrKFEvvr" }, "source": [ "
\n", "Info: There are several challenges when working with these \"operational\" observations of the solar wind will we need to solve before modeling (e.g. missing data).\n", "
" ] }, { "cell_type": "markdown", "metadata": { "id": "aZXj0zgCEvv2" }, "source": [ "### Feature Generation" ] }, { "cell_type": "markdown", "metadata": { "id": "Me6lZ5KyEvv3" }, "source": [ "#### Set seeds for reproducibility" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "id": "KSkdq3U0Evv3" }, "outputs": [], "source": [ "from numpy.random import seed\n", "from tensorflow.random import set_seed\n", "\n", "seed(2020)\n", "set_seed(2021)" ] }, { "cell_type": "markdown", "metadata": { "id": "pSVefEirEvv3" }, "source": [ "#### Feature / Input Data we'll use to Train the Model" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "Info: It's good to think about what features we'd recommend for use in developing our model. An additional exercise at the end of this notebook has learners try different sets of features. You can do so simply by adjusting the \"SOLAR_WIND_FEATURES\" list below. \n", "
" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "id": "gjL2Me5oEvv3" }, "outputs": [], "source": [ "# subset of solar wind features to use for modeling\n", "SOLAR_WIND_FEATURES = [\n", " \"bt\",\n", " \"temperature\",\n", " \"bx_gsm\",\n", " \"by_gsm\",\n", " \"bz_gsm\",\n", " \"speed\",\n", " \"density\",\n", "]" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "id": "Tx6RB1ZREvv4" }, "outputs": [], "source": [ "# The model will be built on feature statistics, mean and standard deviation\n", "XCOLS = (\n", " [col + \"_mean\" for col in SOLAR_WIND_FEATURES]\n", " + [col + \"_std\" for col in SOLAR_WIND_FEATURES]\n", " + [\"smoothed_ssn\"]\n", ")" ] }, { "cell_type": "markdown", "metadata": { "id": "-c1rhKvzEvv4" }, "source": [ "
\n", "Info: As discussed above, we'll need to fill in gaps and create statistical summaries (hourly means and standard deviations) of our features before modeling. The following routines provide this \"preprocessing\" functionality of gap filling, and scaling by features' statistics.\n", "
" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "id": "BbhKxEukEvv4" }, "outputs": [], "source": [ "from sklearn.preprocessing import StandardScaler\n", "\n", "def impute_features(feature_df):\n", " \"\"\"Imputes (inplace) missing input (feature) data.\n", " \n", " Imputes using the following methods:\n", " `smoothed_ssn` - forward fill\n", " `solar_wind` - interpolation\n", " \n", " Parameters\n", " ----------\n", " feature_df : pd.DataFrame\n", " Our original input (feature) data which has gaps.\n", " \n", " Returns\n", " -------\n", " feature_df : pd.DataFrame\n", " Updated input (feature) data with gaps filled, inplace using the input DataFrame.\n", " \"\"\"\n", "\n", " # forward fill sunspot data for the rest of the month\n", " feature_df.smoothed_ssn = feature_df.smoothed_ssn.fillna(method=\"ffill\")\n", " # interpolate between missing solar wind values\n", " feature_df = feature_df.interpolate()\n", " return feature_df\n", "\n", "\n", "def aggregate_hourly(feature_df, aggs=[\"mean\", \"std\"]):\n", " \"\"\"Aggregates input (features) to the floor of each hour using mean and standard deviation.\n", " \n", " e.g. All values from \"11:00:00\" to \"11:59:00\" will be aggregated to \"11:00:00\".\n", " \n", " feature_df : pd.DataFrame\n", " Our original input (feature) data to be aggregated.\n", " \n", " aggs : [\"mean\", \"std\"] \n", " Specifies the desired method, either \"mean\" or \"std\".\n", " \n", " Returns\n", " -------\n", " agged : pd.DataFrame\n", " New input (feature) data aggregated per chosen method.\n", " \"\"\"\n", "\n", " # group by the floor of each hour use timedelta index\n", " agged = feature_df.groupby(\n", " [\"period\", feature_df.index.get_level_values(1).floor(\"H\")]\n", " ).agg(aggs)\n", " # flatten hierachical column index\n", " agged.columns = [\"_\".join(x) for x in agged.columns]\n", " return agged\n", "\n", "\n", "def preprocess_features(solar_wind, sunspots, scaler=None, subset=None):\n", " \"\"\"Preprocesses the input (feature) data.\n", "\n", " Preprocessing steps:\n", " - Subset the data\n", " - Aggregate hourly\n", " - Join solar wind and sunspot data\n", " - Scale using standard scaler\n", " - Impute missing values\n", " \n", " Parameters\n", " ----------\n", " solar_wind : pd.DataFrame\n", " Will be imputed (gap filled), aggregated (hourly), joined to sunspots, and scaled.\n", " \n", " sunspots : pd.DataFrame\n", " Will be scaled and joined to the imputed, aggregated, scaled solar_wind.\n", " \n", " scaler : sklearn.preprocessing.StandardScaler, None, optional\n", " If not provided, a StandardScaler() instance is created.\n", " \n", " subset: None, iterable, optional\n", " Subset of the \"solar_wind\" features we'd like processed.\n", "\n", " Returns\n", " -------\n", " imputed : pd.DataFrame\n", " This is the solar_wind hourly aggregated joined with \"sunspots\", and scaled.\n", "\n", " scaler : sklearn.preprocessing.StandardScaler\n", " The scaler that was used to normalize the solar_wind and sunspots.\n", " \n", " \"\"\"\n", "\n", " # select features we want to use\n", " if subset:\n", " solar_wind = solar_wind[subset]\n", "\n", " # aggregate solar wind data and join with sunspots\n", " hourly_features = aggregate_hourly(solar_wind).join(sunspots)\n", "\n", " # subtract mean and divide by standard deviation\n", " if scaler is None:\n", " scaler = StandardScaler()\n", " scaler.fit(hourly_features)\n", "\n", " normalized = pd.DataFrame(\n", " scaler.transform(hourly_features),\n", " index=hourly_features.index,\n", " columns=hourly_features.columns,\n", " )\n", "\n", " # impute missing values\n", " imputed = impute_features(normalized)\n", "\n", " # we want to return the scaler object as well to use later during prediction\n", " return imputed, scaler" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "id": "qrs16z0gEvv5" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(139872, 15)\n" ] }, { "data": { "text/html": [ "
\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", " \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", " \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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
bt_meanbt_stdtemperature_meantemperature_stdbx_gsm_meanbx_gsm_stdby_gsm_meanby_gsm_stdbz_gsm_meanbz_gsm_stdspeed_meanspeed_stddensity_meandensity_stdsmoothed_ssn
periodtimedelta
train_a0 days 00:00:000.4997052.443614-0.3752670.383941-1.600307-0.3817270.4344240.0211560.292754-0.645095-0.7385460.862524-0.775827-0.2057240.139444
0 days 01:00:000.547177-0.224580-0.4794300.953178-1.759200-0.8680440.189021-0.2828450.433737-0.511040-0.9869040.995063-0.861692-0.0582150.139444
0 days 02:00:000.739905-0.770240-0.574831-0.192518-1.913422-1.1146490.193116-0.8315260.747220-0.870482-1.0135480.554085-0.846222-0.2200120.139444
\n", "
" ], "text/plain": [ " bt_mean bt_std temperature_mean \\\n", "period timedelta \n", "train_a 0 days 00:00:00 0.499705 2.443614 -0.375267 \n", " 0 days 01:00:00 0.547177 -0.224580 -0.479430 \n", " 0 days 02:00:00 0.739905 -0.770240 -0.574831 \n", "\n", " temperature_std bx_gsm_mean bx_gsm_std \\\n", "period timedelta \n", "train_a 0 days 00:00:00 0.383941 -1.600307 -0.381727 \n", " 0 days 01:00:00 0.953178 -1.759200 -0.868044 \n", " 0 days 02:00:00 -0.192518 -1.913422 -1.114649 \n", "\n", " by_gsm_mean by_gsm_std bz_gsm_mean bz_gsm_std \\\n", "period timedelta \n", "train_a 0 days 00:00:00 0.434424 0.021156 0.292754 -0.645095 \n", " 0 days 01:00:00 0.189021 -0.282845 0.433737 -0.511040 \n", " 0 days 02:00:00 0.193116 -0.831526 0.747220 -0.870482 \n", "\n", " speed_mean speed_std density_mean density_std \\\n", "period timedelta \n", "train_a 0 days 00:00:00 -0.738546 0.862524 -0.775827 -0.205724 \n", " 0 days 01:00:00 -0.986904 0.995063 -0.861692 -0.058215 \n", " 0 days 02:00:00 -1.013548 0.554085 -0.846222 -0.220012 \n", "\n", " smoothed_ssn \n", "period timedelta \n", "train_a 0 days 00:00:00 0.139444 \n", " 0 days 01:00:00 0.139444 \n", " 0 days 02:00:00 0.139444 " ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "features, scaler = preprocess_features(solar_wind, sunspots, subset=SOLAR_WIND_FEATURES)\n", "print(features.shape)\n", "features.head(n=3)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "id": "4Os6-0W7Evv5" }, "outputs": [], "source": [ "# check to make sure missing values are filled\n", "assert (features.isna().sum() == 0).all()" ] }, { "cell_type": "markdown", "metadata": { "id": "2zLrR9YWEvv5" }, "source": [ "
\n", "Info: We also need to prepare our output (labels), i.e. our space weather storm index Dst, which is already a time series with an hourly cadence. The modeling task is to predict Dst at hour t0 and the next hour t1.\n", "
" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "id": "q_HKa3mqEvv5" }, "outputs": [ { "data": { "text/html": [ "
\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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
t0t1
periodtimedelta
train_a0 days 00:00:00-7-10.0
0 days 01:00:00-10-10.0
0 days 02:00:00-10-6.0
0 days 03:00:00-6-2.0
0 days 04:00:00-23.0
\n", "
" ], "text/plain": [ " t0 t1\n", "period timedelta \n", "train_a 0 days 00:00:00 -7 -10.0\n", " 0 days 01:00:00 -10 -10.0\n", " 0 days 02:00:00 -10 -6.0\n", " 0 days 03:00:00 -6 -2.0\n", " 0 days 04:00:00 -2 3.0" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "YCOLS = [\"t0\", \"t1\"]\n", "\n", "\n", "def process_labels(dst):\n", " \"\"\"Create dst[t0] (current time) and dst[t1] (next hour) labels and group by training periods.\n", " \n", " This is needed because we wish to train the model on predicting Dst at the current time (t0)\n", " and for the next hour (t1). The method is a simple Pandas DataFrame array timeshift from dst[0:] to get dst[1:].\n", " \n", " Parameters\n", " ----------\n", " dst : pd.DataFrame\n", " \n", " Returns\n", " -------\n", " y : pd.DataFrame\n", " New copy of dst pd.DataFrame now including shifted Dst, and is grouped by training period.\n", " This is what we will train the model on.\n", " \"\"\"\n", "\n", " y = dst.copy()\n", " y[\"t0\"] = y.groupby(\"period\").dst.shift( 0)\n", " y[\"t1\"] = y.groupby(\"period\").dst.shift(-1)\n", " return y[YCOLS]\n", "\n", "\n", "labels = process_labels(dst)\n", "labels.head(n=5)" ] }, { "cell_type": "markdown", "metadata": { "id": "yi-13zy1Evv6" }, "source": [ "
\n", "Tip: For convenience, join our processed solar wind hourly inputs (features) and our Dst (labels) into one Pandas DataFrame.\n", "
" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "id": "3WrOK4diEvv6" }, "outputs": [ { "data": { "text/html": [ "
\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", " \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", " \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", " \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", " \n", " \n", "
t0t1bt_meanbt_stdtemperature_meantemperature_stdbx_gsm_meanbx_gsm_stdby_gsm_meanby_gsm_stdbz_gsm_meanbz_gsm_stdspeed_meanspeed_stddensity_meandensity_stdsmoothed_ssn
periodtimedelta
train_a0 days 00:00:00-7-10.00.4997052.443614-0.3752670.383941-1.600307-0.3817270.4344240.0211560.292754-0.645095-0.7385460.862524-0.775827-0.2057240.139444
0 days 01:00:00-10-10.00.547177-0.224580-0.4794300.953178-1.759200-0.8680440.189021-0.2828450.433737-0.511040-0.9869040.995063-0.861692-0.0582150.139444
0 days 02:00:00-10-6.00.739905-0.770240-0.574831-0.192518-1.913422-1.1146490.193116-0.8315260.747220-0.870482-1.0135480.554085-0.846222-0.2200120.139444
\n", "
" ], "text/plain": [ " t0 t1 bt_mean bt_std temperature_mean \\\n", "period timedelta \n", "train_a 0 days 00:00:00 -7 -10.0 0.499705 2.443614 -0.375267 \n", " 0 days 01:00:00 -10 -10.0 0.547177 -0.224580 -0.479430 \n", " 0 days 02:00:00 -10 -6.0 0.739905 -0.770240 -0.574831 \n", "\n", " temperature_std bx_gsm_mean bx_gsm_std \\\n", "period timedelta \n", "train_a 0 days 00:00:00 0.383941 -1.600307 -0.381727 \n", " 0 days 01:00:00 0.953178 -1.759200 -0.868044 \n", " 0 days 02:00:00 -0.192518 -1.913422 -1.114649 \n", "\n", " by_gsm_mean by_gsm_std bz_gsm_mean bz_gsm_std \\\n", "period timedelta \n", "train_a 0 days 00:00:00 0.434424 0.021156 0.292754 -0.645095 \n", " 0 days 01:00:00 0.189021 -0.282845 0.433737 -0.511040 \n", " 0 days 02:00:00 0.193116 -0.831526 0.747220 -0.870482 \n", "\n", " speed_mean speed_std density_mean density_std \\\n", "period timedelta \n", "train_a 0 days 00:00:00 -0.738546 0.862524 -0.775827 -0.205724 \n", " 0 days 01:00:00 -0.986904 0.995063 -0.861692 -0.058215 \n", " 0 days 02:00:00 -1.013548 0.554085 -0.846222 -0.220012 \n", "\n", " smoothed_ssn \n", "period timedelta \n", "train_a 0 days 00:00:00 0.139444 \n", " 0 days 01:00:00 0.139444 \n", " 0 days 02:00:00 0.139444 " ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data = labels.join(features)\n", "data.head(n=3)" ] }, { "cell_type": "markdown", "metadata": { "id": "XoQxxeShEvv6" }, "source": [ "### Splitting the Data\n", "\n", "
\n", "Info: We'll split our features and labels into Training, Testing and Validation sets for each of the 3 training periods, named train_a, train_b, train_c (see Data Summary for additional details).\n", "
" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "id": "uSdIiKQLOOEQ" }, "outputs": [], "source": [ "def get_train_test_val(data, test_per_period, val_per_period):\n", " \"\"\"Splits data across periods into train, test, and validation\n", " \n", " Parameters\n", " ----------\n", " data : pd.DataFrame\n", " This is our input (features) and output (labels) DataFrame.\n", " \n", " test_per_period : int\n", " The number of timestamps to use in test period.\n", " \n", " val_per_period : int\n", " The number of timestamps to use in validation period.\n", "\n", " Returns\n", " -------\n", " test : pd.DataFrame\n", " Test data grouped by the desired period size\n", "\n", " val : pd.DataFrame\n", " Validation data grouped by the desired period size\n", "\n", " train : pd.DataFrame\n", " Remaining data as Training data\n", "\n", " \"\"\"\n", " \n", " # assign the last `test_per_period` rows from each period to test\n", " test = data.groupby(\"period\").tail(test_per_period)\n", " interim = data[~data.index.isin(test.index)]\n", " # assign the last `val_per_period` from the remaining rows to validation\n", " val = interim.groupby(\"period\").tail(val_per_period)\n", " # the remaining rows are assigned to train\n", " train = interim[~interim.index.isin(val.index)]\n", " return train, test, val\n", "\n", "\n", "train, test, val = get_train_test_val(data, test_per_period=6_000, val_per_period=3_000)" ] }, { "cell_type": "markdown", "metadata": { "id": "U4FM-_JaTygx" }, "source": [ "### Load a Pre-Trained Model" ] }, { "cell_type": "markdown", "metadata": { "id": "OXK_ZR8TEvv8" }, "source": [ "#### Load Model, Scaler, History and Configuration" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", " Exercise: Choose from the following pre-trained models developed in the Chapter 1 notebook.\n", "
" ] }, { "cell_type": "markdown", "metadata": { "id": "YTt6vnSWEvwA" }, "source": [ "
\n", "Be Aware: The smallest model size option in the Chapter 1 notebook is set for notebook execution speed and training will not fully converge. In this notebook it's recommended that you load a model from Chapter 1 that's at least as performant as the MagNet benchmark case for convergence and benchmark performance. \n", "
" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "id": "YpYjboipHS0w" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Here is a list of pre-trained models:\n", "\n", " 0: trained_models_lstm/model_lstm_nepochs-04_nneurons-0016/\n", " 1: trained_models_lstm/model_lstm_nepochs-20_nneurons-0512/\n" ] }, { "name": "stdin", "output_type": "stream", "text": [ "Enter number of pre-trained model: 1\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "Loading pre-trained model from: trained_models_lstm/model_lstm_nepochs-20_nneurons-0512/\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2023-08-14 21:32:01.838162: I tensorflow/core/platform/cpu_feature_guard.cc:151] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations: AVX2 FMA\n", "To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Model: \"sequential\"\n", "_________________________________________________________________\n", " Layer (type) Output Shape Param # \n", "=================================================================\n", " lstm (LSTM) (None, 512) 1081344 \n", " \n", " dense (Dense) (None, 2) 1026 \n", " \n", "=================================================================\n", "Total params: 1,082,370\n", "Trainable params: 1,082,370\n", "Non-trainable params: 0\n", "_________________________________________________________________\n", "\n", "Scaler:\n", "StandardScaler()\n", "\n", "History:\n", "{'loss': [322.2149353027344,\n", " 270.9563903808594,\n", " 211.81797790527344,\n", " 176.59622192382812,\n", " 154.60304260253906,\n", " 140.24449157714844,\n", " 131.95513916015625,\n", " 128.2601318359375,\n", " 123.83348846435547,\n", " 119.80756378173828,\n", " 119.03910064697266,\n", " 116.14312744140625,\n", " 111.89155578613281,\n", " 109.86148071289062,\n", " 114.11012268066406,\n", " 112.21226501464844,\n", " 109.86665344238281,\n", " 104.17289733886719,\n", " 103.00347900390625,\n", " 100.32203674316406],\n", " 'val_loss': [528.2766723632812,\n", " 428.2550048828125,\n", " 365.3229064941406,\n", " 296.94671630859375,\n", " 269.1596984863281,\n", " 257.41168212890625,\n", " 245.89346313476562,\n", " 224.30567932128906,\n", " 217.13438415527344,\n", " 207.34120178222656,\n", " 200.94464111328125,\n", " 192.1378173828125,\n", " 180.00282287597656,\n", " 176.0775604248047,\n", " 197.2196502685547,\n", " 191.03514099121094,\n", " 183.9971160888672,\n", " 168.11105346679688,\n", " 169.42469787597656,\n", " 173.28759765625]}\n", "\n", "Configuration:\n", "{'batch_size': 32,\n", " 'solar_wind_subset': ['bt',\n", " 'temperature',\n", " 'bx_gsm',\n", " 'by_gsm',\n", " 'bz_gsm',\n", " 'speed',\n", " 'density'],\n", " 'timesteps': 32}\n" ] } ], "source": [ "import tensorflow.keras as keras\n", "\n", "import glob\n", "# List existing LSTM models:\n", "dir_list = glob.glob('trained_models_lstm/model_lstm_*/')\n", "print('Here is a list of pre-trained models:\\n')\n", "for i in range(len(dir_list)):\n", " print(' %d: %s' % (i, dir_list[i]))\n", "\n", "dir_model = dir_list[int(input('Enter number of pre-trained model: '))]\n", "\n", "import json\n", "import pickle\n", "\n", "# Load in serialized model, config, and scaler\n", "print('\\nLoading pre-trained model from: %s' % dir_model)\n", "model = keras.models.load_model(dir_model)\n", "model.summary()\n", "\n", "# Load Scaler\n", "with open(dir_model+\"/scaler.pck\", \"rb\") as f:\n", " scaler = pickle.load(f)\n", "print('\\nScaler:')\n", "pprint.pprint(scaler)\n", "\n", "# Load History\n", "with open(dir_model+\"/history.pck\", \"rb\") as f:\n", " history = pickle.load(f)\n", "print('\\nHistory:')\n", "pprint.pprint(history)\n", "\n", "# Load Configuration\n", "with open(dir_model+\"/config.json\", \"r\") as f:\n", " data_config = json.load(f)\n", "print('\\nConfiguration:')\n", "pprint.pprint(data_config)" ] }, { "cell_type": "markdown", "metadata": { "id": "xg8cMNbnEvv-" }, "source": [ "#### BatchDataset: Training, Validation and Test Data\n", "In order to evaluate / test our Pre-trained model, we'll create [tensorflow.python.data.ops.dataset_ops.BatchDataset](https://www.tensorflow.org/guide/data#batching_dataset_elements) structures for our Test DataFrames." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", " Info: Note that we only need our original \"test\" data for the model evaluations below, e.g. storm event prediction, and feature importance. You can uncomment the \"train_ds\" and \"val_ds\" lines of code if you'd like to look at those as well.\n", "
\n", "\n", "Additional information: The competition discussed in this notebook used public data for development and the public leaderboard. A private dataset was kept internal during the competition for use in scoring by the organizers. Since the competition has passed, both datasets are publicly accessible from NOAA. We built the model in the Chapter 1 notebook and wil evaluate the model here using the competition's public data. And in this notebook will evaluate input (feature) importance and storm event case studies using the competition's private data." ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "id": "XD7CJDs0PzQ4" }, "outputs": [], "source": [ "import tensorflow.keras as keras\n", "from keras import preprocessing\n", "\n", "def timeseries_dataset_from_df(df, batch_size):\n", " \"\"\"Provides a batched dataset as pd.DataFrame\n", " \n", " Parameters\n", " ----------\n", " df : pd.DataFrame\n", " batch_size : int\n", "\n", " Returns\n", " -------\n", " dataset : pd.DataFrame\n", " Batched data.\n", " \"\"\"\n", "\n", " dataset = None\n", " timesteps = data_config[\"timesteps\"]\n", "\n", " # iterate through periods\n", " for _, period_df in df.groupby(\"period\"):\n", " # realign features and labels so that first sequence of 32 is aligned with the 33rd target\n", " inputs = period_df[XCOLS][:-timesteps]\n", " outputs = period_df[YCOLS][timesteps:]\n", "\n", " period_ds = keras.preprocessing.timeseries_dataset_from_array(\n", " inputs,\n", " outputs,\n", " timesteps,\n", " batch_size=batch_size,\n", " )\n", "\n", " if dataset is None:\n", " dataset = period_ds\n", " else:\n", " dataset = dataset.concatenate(period_ds)\n", "\n", " return dataset\n", "\n" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "id": "G65lroOLEvv-" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Number of test batches: 558\n" ] } ], "source": [ "#train_ds = timeseries_dataset_from_df(train, data_config[\"batch_size\"])\n", "#val_ds = timeseries_dataset_from_df(val, data_config[\"batch_size\"])\n", "test_ds = timeseries_dataset_from_df(test, data_config[\"batch_size\"])\n", "\n", "#print(f\"Number of training batches: {len(train_ds)}\")\n", "#print(f\"Number of validation batches: {len(val_ds)}\")\n", "print(f\"Number of test batches: {len(test_ds)}\")" ] }, { "cell_type": "markdown", "metadata": { "id": "wkwxYtOqT8WT" }, "source": [ "### Evaluate Trained Model" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "id": "87GD27_tT-JY" }, "outputs": [ { "data": { "image/png": "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qlWrSp+Pjo5m79692O12QkND6dOnDytXrmT27NksXrzYublez549eeaZZ5yb0Xbo0IENGzYwY8YMli1bxvvvvw8YIe8f//hHhSG3hqAemYbg43Nm0q9WL4lIY2OxGEM253JZKw5VVMoaWPfvUQ+bkt55551YrVYWLlwIwMqVK0lLS2PkyJHO43M2b97Mp59+ytChQ9m9ezdvvPEGs2bNYvr06Q020TcsLAyAY8eOVfp82f2ydmBsePvll1+SkZHBqlWrmDBhArt27eL666/nwIEDznYXXXQRH374ISdPnmTDhg1MnTqVY8eOcccdd7Bu3To3/lSVU5BpKGefhu1wmFuLiIjUSVnPy/r16zl48KAz0Nx9993ONmVv+tdff325yb4Aa9asaZA6L7nkEgASExMrPJeamsqBAwc477zznHN6zhYYGMiAAQN47rnneOKJJ8jLy+Prr7+u0M7Pz48rrriCGTNm8O9//xuHw8Fnn31W7z9LTRRkGkqHBLAGQFYKHNtldjUiIp4lqDlYbdW3sdqMdia75557cDgczJ07lyVLlnD++efTq1cv5/NlE33Xrl1b7ut27drF7NmzG6TGm266ifDwcObPn8+uXWfec8qWgBcVFTFmzBjn/TVr1jiHo85W1nNTNrl38+bN/PrrrzW2a0iaI9NQ/IPgvIHGyqV9yyD6QrMrEhHxHBGx8KetXrGz70033URYWBjPPPMMRUVF5Sb5AvTu3ZvevXvz3nvv8csvv3DFFVdw+PBhPvnkE66//no++OADt9cYFhbGG2+8wciRI7n88su54447aNGiBd988w1btmyhd+/e/PWvf3W2f+655/jqq68YOHAg5513HgEBAXz//fd88803dOrUiZtvvhkwlpm/+uqrDBgwgE6dOhEWFsbu3bv54osviIqK4r777nP7z/ZbCjINqcu1RojZuwz6/7Xm9iIiTUlErEcElZqU7Rczf/585/4yZ/P19eWzzz7jb3/7G19++SWbN28mPj6eZ599lmHDhjVIkAG47bbbiI6OZvbs2SxZsoRTp07Rvn17/v73v/N///d/BAQEONs+9NBDhIeHs2nTJlavXo3D4aBdu3ZMmTKFRx991DkENXLkSPLz81m3bh2bN2+moKCAtm3b8vDDD/P444/Ttm3bBvnZzmZxOBr3hA273U54eDhZWVnlJjWZIvsoPNfF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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "for name, values in history.items():\n", " plt.plot(values, 's-', label=name)\n", "plt.legend(fontsize=14)\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "id": "rvj69RaTUoBw" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "558/558 [==============================] - 39s 69ms/step - loss: 163.6485\n", "Test RMSE: 12.79 nano-Tesla\n" ] } ], "source": [ "rmse = model.evaluate(test_ds)**0.5\n", "print(f\"Test RMSE: {rmse:.2f} nano-Tesla\")" ] }, { "cell_type": "markdown", "metadata": { "id": "X2o3MHneUD0M" }, "source": [ "### Model Performance Evaluation\n", "\n", "Here you'll get experience with:\n", "* Introductory explainable AI (XAI) via Permutation Importance\n", "* Model performance on user chosen storm events" ] }, { "cell_type": "markdown", "metadata": { "id": "ZxmhOeEBNnE2" }, "source": [ "#### Permutation Importance - Easy Approximation\n", "\n", "
\n", "Info: Based on Christoph Molnar's \"Interpretable Machine Learning\" section and Fisher, Rudin, and Dominici (2018), we will \"split the dataset in half and swap the values of feature j of the two halves instead of permuting feature j\". \n", "
" ] }, { "cell_type": "markdown", "metadata": { "id": "C6z_7ulNEvwB" }, "source": [ "Additional Resources:\n", "* Christoph Molnar's \"Interpretable Machine Learning\" section on [Permutation Feature Importance](https://christophm.github.io/interpretable-ml-book/feature-importance.html), and see also their argument for using Test data for Permutation Importance evaluation, which we have chosen to do here.\n", "* [Illustrative graphic demonstrating single- and multi-pass Permutation Importance](https://permutationimportance.readthedocs.io/en/latest/methods.html#permutation-importance)\n", "* [Permutation Feature Importance in the scikit-learn module](https://scikit-learn.org/stable/modules/permutation_importance.html)\n" ] }, { "cell_type": "markdown", "metadata": { "id": "o1I9DXilEvwC" }, "source": [ "Basically, we can split and swap the feature datasets one feature at a time and compare the resultant RMSE. We take a programming convenience shortcut and simply reverse each feature vector rather than split and swap and we expect the same results. We'll do this, i.e. permute each feature vector, one at a time." ] }, { "cell_type": "markdown", "metadata": { "id": "Qsx6AbePEvwC" }, "source": [ "
\n", "Tip: Recall that our test_ds which we used to evaluate the model performance is a tensorflow.python.data.ops.dataset_ops.BatchDataset and these are honestly kind of hard to work with. So we will recreate a deep copy of test_ds for each permutation and so we don't corrupt the original.\n", "
" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "id": "JhBr9xlT3IdZ" }, "outputs": [], "source": [ "# Note: We shouldn't need these two lines below but they seem needed generalizing to run w/o\n", "# issues on both Colaboratory (Python 3.7) and Jupyter server with Python 3.9.\n", "# Contact POCs if you get an error such as:\n", "# AttributeError: module 'keras.preprocessing' has no attribute 'timeseries_dataset_from_array'\n", "import tensorflow.keras as keras\n", "from keras import preprocessing" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "id": "K92V7O4cPCiK" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "558/558 [==============================] - 38s 68ms/step - loss: 190.4299\n", "bt_mean: 13.799636 rmse nano-Tesla\n", "558/558 [==============================] - 46s 82ms/step - loss: 161.5839\n", "temperature_mean: 12.711564 rmse nano-Tesla\n", "558/558 [==============================] - 36s 65ms/step - loss: 167.0069\n", "bx_gsm_mean: 12.923114 rmse nano-Tesla\n", "558/558 [==============================] - 41s 73ms/step - loss: 173.1632\n", "by_gsm_mean: 13.159147 rmse nano-Tesla\n", "558/558 [==============================] - 34s 60ms/step - loss: 334.1352\n", "bz_gsm_mean: 18.279366 rmse nano-Tesla\n", "558/558 [==============================] - 53s 96ms/step - loss: 216.5030\n", "speed_mean: 14.714041 rmse nano-Tesla\n", "558/558 [==============================] - 54s 97ms/step - loss: 169.8606\n", "density_mean: 13.033059 rmse nano-Tesla\n", "558/558 [==============================] - 56s 100ms/step - loss: 169.9884\n", "bt_std: 13.037961 rmse nano-Tesla\n", "558/558 [==============================] - 58s 103ms/step - loss: 164.2722\n", "temperature_std: 12.816871 rmse nano-Tesla\n", "558/558 [==============================] - 59s 105ms/step - loss: 167.5227\n", "bx_gsm_std: 12.943056 rmse nano-Tesla\n", "558/558 [==============================] - 61s 109ms/step - loss: 173.0972\n", "by_gsm_std: 13.156641 rmse nano-Tesla\n", "558/558 [==============================] - 64s 114ms/step - loss: 165.3865\n", "bz_gsm_std: 12.860270 rmse nano-Tesla\n", "558/558 [==============================] - 63s 112ms/step - loss: 164.6986\n", "speed_std: 12.833495 rmse nano-Tesla\n", "558/558 [==============================] - 59s 105ms/step - loss: 165.6094\n", "density_std: 12.868932 rmse nano-Tesla\n", "558/558 [==============================] - 59s 106ms/step - loss: 175.3159\n", "smoothed_ssn: 13.240692 rmse nano-Tesla\n" ] } ], "source": [ "# A couple of ways to learn about the contents of a BatchDataset:\n", "# print(list(test_ds.as_numpy_iterator()))\n", "# type(test_ds)\n", "\n", "\n", "rmse_permute_df = pd.DataFrame(np.zeros((1,len(XCOLS))), columns=XCOLS)\n", "for fname in XCOLS:\n", "\n", " # We're going to edit this data so make a deep copy of our preprocessed training dataset.\n", " test_for_permute = test.copy(deep=True)\n", "\n", " # Approximate split permutation by simply reversing the data in this feature\n", " test_for_permute[fname].values[:] = test_for_permute[fname].values[::-1]\n", "\n", " # create TensorFlow BatchDataset\n", " permute_ds = timeseries_dataset_from_df(test_for_permute, data_config[\"batch_size\"])\n", "\n", " # evaluate model\n", " rmse_permute_df[fname] = model.evaluate(permute_ds)**0.5\n", "\n", " print('%s: %f rmse nano-Tesla' % (fname, rmse_permute_df[fname]))" ] }, { "cell_type": "markdown", "metadata": { "id": "7jfs_EkGEvwF" }, "source": [ "
\n", "Info: Permutation Importance is evaluated as the influence a feature has relative to our unpermuted baseline performance. It's typical to use either a ratio or subtraction to relate to our baseline. Here we use a ratio.\n", "
" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "id": "DG43wGSwETt7" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "In order of most important feature first to least important by rmse(j)/rmse:\n" ] }, { "data": { "text/html": [ "
\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", " \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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
0
bz_gsm_mean1.428911
speed_mean1.150207
bt_mean1.078727
smoothed_ssn1.035034
by_gsm_mean1.028660
by_gsm_std1.028464
bt_std1.019187
density_mean1.018803
bx_gsm_std1.011768
bx_gsm_mean1.010209
density_std1.005974
bz_gsm_std1.005296
speed_std1.003203
temperature_std1.001904
temperature_mean0.993672
\n", "
" ], "text/plain": [ " 0\n", "bz_gsm_mean 1.428911\n", "speed_mean 1.150207\n", "bt_mean 1.078727\n", "smoothed_ssn 1.035034\n", "by_gsm_mean 1.028660\n", "by_gsm_std 1.028464\n", "bt_std 1.019187\n", "density_mean 1.018803\n", "bx_gsm_std 1.011768\n", "bx_gsm_mean 1.010209\n", "density_std 1.005974\n", "bz_gsm_std 1.005296\n", "speed_std 1.003203\n", "temperature_std 1.001904\n", "temperature_mean 0.993672" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Ratio the Permuted RMSE to the overall RMSE and sort in order of importance\n", "print('In order of most important feature first to least important by rmse(j)/rmse:')\n", "rmse_ratio_df = (rmse_permute_df/rmse).sort_values(ascending=False, by=0, axis=1)\n", "rmse_ratio_df.T" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "id": "FasRNQv_EvwG" }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Visualize the Permutation Importance outcome\n", "plt.plot(rmse_ratio_df.columns, rmse_ratio_df.values.T, 'x-')\n", "plt.xticks(rotation=270)\n", "plt.ylabel('RMSE Ratio %')\n", "plt.grid(True)\n", "plt.show()\n", "\n", "# Uncomment for a Pandas barplot:\n", "# (Note that there might be too many colors to easily interpret)\n", "#rmse_ratio_df.plot(kind='bar', figsize=(10, 5))\n", "#plt.title('Permutation Feature Importance')\n", "#plt.xlim(-0.25,)\n", "#plt.ylim(0.95, rmse_ratio_df.iloc[0,0])\n", "#plt.grid(True)\n", "#plt.tight_layout()" ] }, { "cell_type": "markdown", "metadata": { "id": "yLbZKYfgEjoT" }, "source": [ "#### Use these Feature Importances to Aid Evaluation" ] }, { "cell_type": "markdown", "metadata": { "id": "6NOmthg4EvwG" }, "source": [ "
\n", "Exercise: What are the model sensitivities to the input parameters?\n", "\n", "- How do our input data (features) compare in their influence on performance in predicting Dst?\n", " \n", "- How does the order of this list compare to your intuition from the Feature Correlation Heatmap we made in the beginning of this notebook?\n", "
" ] }, { "cell_type": "markdown", "metadata": { "id": "pA-g5jrAbeCL" }, "source": [ "### Event Case Studies\n", "\n", "To fully evaluate our model's performance, we need to get familiar with how well it generalizes to a diverse set of geomagnetic storm events including their preconditioning. Even though we split our data into 'Train', 'Validation', and 'Test' using best practices to avoid over/under fitting, looking at specific events while leveraging our space weather geomagnetic intuition will help us gain insight into how the model performs across different phases of different types of storms.\n", "\n", "
\n", "Tip: You can use these storm phase descriptions for contextualizing your experience:\n", "\n", "* Climatology / quiet periods: Dst is generally horizontal and nearly 0 nano-Tesla.\n", "* Sudden Impulse: Dst rises from near 0 to positive values rapidly over a few hours.\n", "* Storm Sudden Commencement and Main Phase: Dst drops sharply and remains significantly negative for up to several days.\n", "* Storm Peak: Dst reaches its minimum (most negative) value.\n", "* Recovery Phase: Dst recovers from large negative values back to climatology, near 0 nano-Tesla.\n", "
" ] }, { "cell_type": "markdown", "metadata": { "id": "ZqWamOEKbeCL" }, "source": [ "#### Define Prediction Function" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "id": "qHpsrh-WbeCL" }, "outputs": [], "source": [ "from typing import Tuple\n", "\n", "TIMESTEPS = data_config['timesteps']\n", "\n", "def predict_dst(\n", " solar_wind_7d: pd.DataFrame,\n", " satellite_positions_7d: pd.DataFrame,\n", " latest_sunspot_number: float,\n", ") -> Tuple[float, float]:\n", " \"\"\"Take all of the data up until time t-1, and then make predictions for times t and t+1.\n", " \n", " Parameters\n", " ----------\n", " solar_wind_7d: pd.DataFrame\n", " The last 7 days of satellite data up until (t - 1) minutes [exclusive of t]\n", " satellite_positions_7d: pd.DataFrame\n", " The last 7 days of satellite position data up until the present time [inclusive of t]\n", " latest_sunspot_number: float\n", " The latest monthly sunspot number (SSN) to be available\n", " \n", " Returns\n", " -------\n", " predictions : Tuple[float, float]\n", " A tuple of two predictions, for (t and t + 1 hour) respectively; these should\n", " be between -2,000 and 500.\n", " \"\"\"\n", "\n", " # Re-format data to fit into our pipeline\n", " sunspots = pd.DataFrame(index=solar_wind_7d.index, columns=[\"smoothed_ssn\"])\n", " sunspots[\"smoothed_ssn\"].values[:] = latest_sunspot_number\n", "\n", " # Process our features and grab last 32 (timesteps) hours\n", " features, s = preprocess_features(\n", " solar_wind_7d, sunspots, scaler=scaler, subset=SOLAR_WIND_FEATURES\n", " )\n", " model_input = features[-TIMESTEPS:][XCOLS].values.reshape(\n", " (1, TIMESTEPS, features.shape[1])\n", " )\n", " #pprint.pprint(features)\n", "\n", " # Make a prediction\n", " prediction_at_t0, prediction_at_t1 = model.predict(model_input)[0]\n", "\n", " # Optional check for unexpected values\n", " if not np.isfinite(prediction_at_t0):\n", " prediction_at_t0 = -12\n", " if not np.isfinite(prediction_at_t1):\n", " prediction_at_t1 = -12\n", "\n", " return prediction_at_t0, prediction_at_t1" ] }, { "cell_type": "markdown", "metadata": { "id": "02qv90XObeCM" }, "source": [ "#### Ingest Real Event Data from Competition's \"Private\" Data\n", "Recall the data we call \"private\" here is now publicly accessible, since the MagNet competition has ended. It was the \"private\" data held back from the competitors for use by the evaluators to judge the competition entries." ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "id": "Z0LXe_NxbeCM" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Importing data from: data/private\n", "Reading in the Dst output data...\n", "Reading in the Sunspot input data...\n", "Reading in the Solarwind input data...\n", "Reading in the Satellite position input data...\n" ] } ], "source": [ "# Real Event Data that was previously held back from the competitors\n", "DATA_PATH = Path(\"data/private/\")\n", "print('Importing data from: %s' % DATA_PATH)\n", "\n", "print('Reading in the Dst output data...')\n", "dst = pd.read_csv(DATA_PATH / \"dst_labels.csv\")\n", "dst.timedelta = pd.to_timedelta(dst.timedelta)\n", "dst.set_index([\"period\", \"timedelta\"], inplace=True)\n", "\n", "print('Reading in the Sunspot input data...')\n", "sunspots = pd.read_csv(DATA_PATH / \"sunspots.csv\")\n", "sunspots.timedelta = pd.to_timedelta(sunspots.timedelta)\n", "sunspots.set_index([\"period\", \"timedelta\"], inplace=True)\n", "\n", "print('Reading in the Solarwind input data...')\n", "solar_wind = pd.read_csv(DATA_PATH / \"solar_wind.csv\")\n", "solar_wind.timedelta = pd.to_timedelta(solar_wind.timedelta)\n", "solar_wind.set_index([\"period\", \"timedelta\"], inplace=True)\n", "\n", "print('Reading in the Satellite position input data...')\n", "satellite_positions = pd.read_csv(DATA_PATH / \"satellite_positions.csv\")\n", "satellite_positions.timedelta = pd.to_timedelta(satellite_positions.timedelta)\n", "satellite_positions.set_index([\"period\", \"timedelta\"], inplace=True)" ] }, { "cell_type": "markdown", "metadata": { "id": "w0lreT8xbeCM" }, "source": [ "#### Event: Geomagnetic storm with Dst minimum of approx. -180 nT" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "id": "wR54LwzwbeCM" }, "outputs": [ { "data": { "text/plain": [ "\"\\n# Summarize final block of Input data\\nprint('\\nSummarizing final block of input data (head and tail):')\\npprint.pprint(solar_wind_7d_by_min['bz_gsm'].head())\\npprint.pprint(solar_wind_7d_by_min['bz_gsm'].tail())\\npprint.pprint(satellite_positions_7d_by_day['gse_x_ace'].head())\\npprint.pprint(satellite_positions_7d_by_day['gse_x_ace'].tail())\\npprint.pprint(latest_sunspot_number)\\n\"" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "''' User Choice of Case Study Event '''\n", "# Here we've chosen a specific event case study, you can choose different\n", "# case studied by looking at the sibling notebook magnet_cnn_tutorial.ipynb\n", "# TODO: for the correct sunspot value, currently, you have to manually peek\n", "# into the sunspots DataFrame and identify the closest match manually.\n", "event_start_day = 140\n", "latest_sunspot_number = sunspots.iloc[5] # The nearest match for Day 140.\n", "''' End User Config '''\n", "\n", "# Setup our range indices\n", "idx_event_1day = range(event_start_day, event_start_day + 7 )\n", "idx_event_1hr = range(event_start_day*24, event_start_day*24 + 7*24 )\n", "idx_event_1min = range(event_start_day*24*60, event_start_day*24*60 + 7*24*60)\n", "\n", "dst_predicted_t0 = np.nan * np.zeros(len(idx_event_1hr))\n", "dst_predicted_t1 = np.nan * np.zeros(len(idx_event_1hr))\n", "i_dst = 0\n", "###idx_1min = range((event_start_day-7)*24*60, event_start_day*24*60)\n", "for i_offset_hour in range(-7*24, 0):\n", "\n", " # for the\n", " idx_7day_1min = range(idx_event_1min[0]+i_offset_hour*60 - 1, idx_event_1min[-1]+i_offset_hour*60 - 1)\n", "\n", " idx_7day_1day = range(idx_event_1day[0]+i_offset_hour//24, idx_event_1day[-1]+i_offset_hour//24)\n", "\n", " # Subset to 7 days around event\n", " solar_wind_7d_by_min = solar_wind.iloc[idx_7day_1min]\n", " satellite_positions_7d_by_day = satellite_positions.iloc[idx_7day_1day]\n", "\n", " # Predict Dst\n", " dst_t0_t1 = predict_dst(solar_wind_7d=solar_wind_7d_by_min, satellite_positions_7d=satellite_positions_7d_by_day, latest_sunspot_number=latest_sunspot_number)\n", "\n", " dst_predicted_t0[i_dst] = dst_t0_t1[0]\n", " dst_predicted_t1[i_dst] = dst_t0_t1[1]\n", "\n", " i_dst += 1\n", "\n", " # Uncomment to see the input and output data every hour:\n", " #print('Hour %4d: SSN %.1f, Bz %.1f nT, V %.0f km/s, Dst [t0,t1] = [%.1f, %.1f] nT'\n", " # % (i_offset_hour, latest_sunspot_number, solar_wind_7d_by_min['bz_gsm'].mean(),\n", " # solar_wind_7d_by_min['speed'].mean(), dst_t0_t1[0], dst_t0_t1[1]))\n", "\n", "\n", "'''\n", "# Summarize final block of Input data\n", "print('\\nSummarizing final block of input data (head and tail):')\n", "pprint.pprint(solar_wind_7d_by_min['bz_gsm'].head())\n", "pprint.pprint(solar_wind_7d_by_min['bz_gsm'].tail())\n", "pprint.pprint(satellite_positions_7d_by_day['gse_x_ace'].head())\n", "pprint.pprint(satellite_positions_7d_by_day['gse_x_ace'].tail())\n", "pprint.pprint(latest_sunspot_number)\n", "'''" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "id": "7N7RgNYVbeCN" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "RMSE to t0 prediction: 43.441645 nT\n", "RMSE to t1 prediction: 42.952979 nT\n" ] } ], "source": [ "# RMSE for this event:\n", "# Remember to line the indices up for observed Dst and predicted Dst[t1]\n", "rmse_t0 = np.mean((dst['dst'][idx_event_1hr] - dst_predicted_t0 )**2)**0.5\n", "rmse_t1 = np.mean((dst['dst'][idx_event_1hr][1:] - dst_predicted_t1[:-1])**2)**0.5\n", "print('RMSE to t0 prediction: %f nT' % rmse_t0 )\n", "print('RMSE to t1 prediction: %f nT' % rmse_t1 )" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "id": "_sYxIvcXbeCN" }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABb0AAAMJCAYAAAAnM5uMAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdeVxU5f4H8M/MsO8oqMiwqCCmorjgvpBLdqtb3my9WlqkaN26lpU3+5WW1b0tN1tuixppWVbaapm5hYhbWqmZKygIgxtu4AICM9/fH+McGZgNBhgYP+/Xi1d5znnOec4yz5z5nud8H5WICIiIiIiIiIiIiIiI3IDa1RUgIiIiIiIiIiIiIqovDHoTERERERERERERkdtg0JuIiIiIiIiIiIiI3AaD3kRERERERERERETkNhj0JiIiIiIiIiIiIiK3waA3EREREREREREREbkNBr2JiIiIiIiIiIiIyG0w6E1EREREREREREREboNBbyIiIiIiIiIiIiJyGwx6ExEREREREREREZHbYNCbiIiIiKiJSUlJgUqlMvvz8fFB69at0b17d0yYMAEfffQRLl68WK/bXbhwIWbNmoUdO3bU63qJiIiIiBqTSkTE1ZUgIiIiIqIrUlJSkJmZiaioKERHRwMAKisrUVxcjLy8PJSVlQEAgoKC8PLLL2Py5Mn1ut0FCxZgwoQJ9bJOIiIiIqLGxp7eRERERERN1P33348NGzZgw4YN2LJlC/bu3YuSkhJkZmbi5ptvRklJCaZMmYKpU6e6uqpERERERE0Gg95ERERERM2Ip6cnhgwZgu+++w4vvfQSAODNN9/E119/7eKaERERERE1DQx6ExERERE1U0899RSGDx8OAHj++edrzD9x4gSeeOIJdOnSBX5+fvD19UV0dDQGDx6MZ599FsePHwcArFu3DiqVCpmZmQCA++67zyyfeEpKSqPtExERERGRszxcXQEiIiIiIqq7Rx55BGvXrsXOnTtx+PBhxMTEAAAKCwvRt29fFBYWwsPDA3FxcQgICMDRo0exefNmbNiwAUOGDEHr1q0RHByMgQMHYteuXSgpKUF8fDxatWqlbCMxMdFVu0dEREREVGsMehMRERERNWODBw+GSqWCiGDLli1K0Pu1115DYWEhhg8fjs8++wzh4eFKmZKSEnz99dfQarUAgB49emDDhg3KQJYzZszgQJZERERE1Gwx6E1ERERE1IyFhoYiKCgIxcXFSroSANi7dy8A4OGHHzYLeANAUFAQg9pERERE5LaY05uIiIiIqJkLCAgAAJw7d06ZFh0dDQBYsmQJLl265JJ6ERERERG5AoPeRERERETNnCnYHRQUpEx75JFH4O3tjcWLFyMiIgJ333033nzzTfz6668QEVdVlYiIiIiowTHoTURERETUjJ0+fRolJSUAgNatWyvTu3btis2bN2P06NEoLS3F559/jqlTpyI5ORmxsbGYN2+eq6pMRERERNSgmNObiIiIiKgZy8rKUv6/f//+ZvN69OiBb775BuXl5fj111+xfv16fPvtt/jll1+QlpYGAJg0aVKj1peIiIiIqKGxpzcRERERUTP21ltvATAGuKOioiwu4+XlhQEDBuBf//oXtmzZgkcffRQA8O6775otp1KpGrayRERERESNgEFvIiIiIqJm6t///jd+/vlnAMAzzzzjcLkhQ4YAAI4cOWI23c/PDwBQWlpaTzUkIiIiImp8DHoTERERETUjlZWVyMrKwi233IIZM2YAAKZOnYq//e1vZstNmjQJixYtwtmzZ82mHzt2DHPmzAEAJCcnm82Li4sDAKxbt46DXRIRERFRs6US3s0SERERETUpKSkpyMzMRFRUFKKjowEAer0excXFyMvLU3piBwcH4z//+Q8mT55cYx1JSUnYuXMnVCoV2rdvj7CwMBQXFyMnJweVlZVo3bo11q1bh06dOilltm7div79+8NgMECr1SI2NhYajQZJSUl44403GmXfiYiIiIicxaA3EREREVETYwp6V+Xl5YXg4GBEREQgKSkJw4YNw+23366kJKlu3bp1+OGHH5CVlYWCggKcPHkSXl5e6NChA2644QY89thjCA8Pr1Hu+++/x+uvv44dO3agpKQEBoMBQ4cOxbp16xpiV4mIiIiI6h2D3kRERERERERERETkNpjTm4iIiIiIiIiIiIjcBoPeREREREREREREROQ2GPQmIiIiIiIiIiIiIrfBoDcRERERERERERERuQ0GvYmIiIiIiIiIiIjIbTDoTURERERERERERERug0FvIiIiIiIiIiIiInIbDHoTERERERERERERkdtg0JuIiIiIiIiIiIiI3AaD3kRERG5i//79eP311zFq1ChERETAy8sLwcHBSE5OxvPPP48z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gw8+iDfffNOpOv31r3/FjBkzkJ2djZKSEocDzM6cB2e+Sx2pV13btISEBOh0ukb9niYiImoKmN6EiIjIzTz00EP44IMP4Ovri2XLliElJcXm8v379wdg/JG/ZcsWi8tkZmaaLVu9bF5enhKsc7RsXU2YMAEiUuNv3bp19bL+uu5TSkqKxXpZylfdEAwGg9KjfPTo0Q6X02q1iIqKAgCsX7/e4jKm/Y2OjjZLkdOjRw8lF6y9sn369IFa7fitpzPXlunf27Ztsxr4M9W3ttelaXlr+5ufn6+c86rr1mg0SE5Otll2y5YtKC8vh6+vb40BZ22x94AjODhY6fH7559/WlymsrIS+/fvBwBcc801Dm/bZPHixbjvvvtgMBjw4osv4sknn7S5fFO97qyJjY21+PkWEafXDTi3T9bqZRoDoKranidH7Nq1CwCU81lbGRkZuPnmm1FWVoa0tDT873//c7pOlZWVyv/r9XqHyzlzHpz5LrXHmTbN9G/TQMfVlZWVYevWrXWqFxERUZMmRERE5DYefvhhASA+Pj6yatUqh8v17NlTAMjf//73GvOKiookMDBQAMjy5cvN5lVUVEirVq0EgMyYMaNG2b1794parRYA8ueff9qtx4033igAZObMmQ7X3VGvvvqqAJChQ4faXK6+98mepUuXCgCJiYlxaj1vv/22AJCWLVvKmTNnalX2scceEwDSrl07KSsrM5tnMBhkwIABAkCeeOKJGmVvvfVWASADBw6sMa+srEzatWsnAOSdd96pVZ2cOQ9FRUXi7e0tAGTevHk1yq5cuVL5nJw6dapW9Vq2bJkAELVaLXv37q0x/6mnnhIAkpycXGPeW2+9JQAkMDBQTp48WWP+3XffLQDk9ttvr1WdlixZIgCkT58+VpdJTU0VANK9e3cxGAw15n/44YcCQLy9veX48eO12v4XX3whGo1GAMjs2bMdLtdUrjtH24a62LZtmwAQR352NdRnyaSu58mWgoICCQoKEgDy2muv1br8+vXrxd/fXwDIxIkTLV6bdfH0008LAImNja11WWfOQ12/S+1xpk3buXOncg1aui+YO3euAJCIiAiprKysVb2IiIiaMga9iYiI3MQTTzyh/OhduXJlrcp+//33yo/it99+Wwk8nDp1SoYPHy4ApF+/fhbLmoKtXl5e8uWXXyrT8/PzpVu3bgJA7rzz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8ccfSjBt+vTpSiD5woULMnbsWAEg7dq1k7Kyshplly9frlxHb7/9thgMBhEROXXqlAwfPlwAyIABA2pdJxGRJ598UgBISEiIZGZmKtN37dqlBNhmzJhhsewdd9yhBN137dqlTM/MzFSCx/PmzatVfVwd9O7fv7/cc8898sYbb8iGDRuUgGRtg94nTpyQsLAwiY6Oll69etn9blq9erV4eHiIt7e3vPXWW1JaWmo2Pzs7WzZs2FCHPbLNHYPeq1evltjYWHn99dflyJEjZvOWLVsmoaGhAkAGDhxosfwrr7wi27ZtE71ebzb9t99+k2uuuUYASNeuXetUN2c+M3Vt1+w5duyYBAYGCgAZN26cXLhwQUSMD29N7UNwcLCcOHGiRlln2jUiIqKqGPQmIiKygUFvxzHobd/SpUvrdIx27twpnp6e0q9fP1m7dq3NAF5FRYW0adPGamBx7969olarRaVS1SnQaou7Br2///57pRfl3r17a8x/6qmnBID07du3xry3335bAEhgYKCcPHmyxvy7775bAMidd95Z63qNGTPGanC6rKxM2rVrJwDkvffeqzHfFDS19PCjqKhICVitWLGiVnUqKipSendaCrStXLlS6fFqegBgsmvXLuXaXrVqVY2yc+fOVXqlV1ZWOlwnVwe9q+vSpUudgt6m4Oby5cvtfjeVlpYqDxgWL17sfKVrwR2D3sXFxVbfThAR+fTTT5X93rlzZ63WvWXLFqWspfbFFmc+M860a/ZMmzbNanDaYDDIgAEDlKB2dc60a0RERFUxpzcREVEd5OXlmeVV3rBhA2688Ua0bNkSvr6+6NatG/73v/9BRKyuY926dbjuuusQEhKCwMBAJCcn48MPP3R4+w8//DASEhLg5+eHwMBA9O7dG//9739r5Gv+/fff4e3tDZVKhWXLlllc35133gmVSoW+ffuioqLCwaNQN9YGsly3bp1ZvuvPPvsM/fv3R1BQEMLCwjB69Gjs2bNHWf63337DrbfeitatW8PX1xe9evXC119/bXPbtTluTYVer8f9998PAJg/fz7Uatu3b+vXr8exY8cAAJMnT64xv1OnThg6dChEBEuWLKl1fYqKivCPf/wDUVFR8PHxQWxsLB5++GGcPn3aZrmsrCw88cQT6NOnDyIiIuDl5YXWrVvjxhtvxA8//FBj+aNHj8LT0xMqlQoH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EREREREREbkN9vQmIiIiIiIiIiIiIrfBnN52GAwGHDlyBIGBgVCpVK6uDhEREREREREREdFVR0Rw7tw5tG3bFmq17b7cDHrbceTIEURFRbm6GkRERERERERERERXvYKCAmi1WpvLMOhth2mQlIKCAgQFBbm4No2roqICq1atwnXXXQdPT09XV4fIabymyd3wmiZ3w2ua3A2vaXJHvK7J3fCaJnfjztd0SUkJoqKiHBrUmkFvO0wpTYKCgq7KoLefnx+CgoLc7kNCVyde0+RueE2Tu+E1Te6G1zS5I17X5G54TZO7uRquaUdSUHMgSyIiIiIiIiIiIiJyGwx6ExEREREREREREZHbYNCbiIiIiIiIiIiIiNwGg95ERERERERERERE5DYY9CYiIiIiIiIiIiIit8GgNxERERERERERERG5DQa9iYiIiIiIiIiIiMhtMOhNRERERERERERERG6DQW8iIiIiIiIiIiIichsMehMRERERERERERGR22DQm4iIiIiIiIiIiIjcBoPeREREREREREREROQ2GPQmIiIiIiIiIiIiIrfBoDcRERERERERERERuQ0GvYmIiIiIiIiIiIjIbTDoTURERERERERERERug0FvIiIiIiIiIiIiInIbDHoTERERERERERERkdtg0JuIiIiIiIiIiIiI3AaD3kRERERERERERETkNhj0JiIiIiIiIiIiIiK3waA3EREREREREREROUWnAzIyjP8lcjUGvYmIiIiIiIiIiKjO0tOBmBhg2DDjf9PTXV0jutox6E1ERERERERERER1otMBkyYBBoPx3wYDkJbGHt/kWgx6ExERERERERERUZ1kZ18JeJvo9UBOTpUJzH1CjYxBbyIiIiIiIiIiIqqT+HhAXS3CqNEAcXGX/8HcJ+QCDHoTERERERERERFRnWi1wLx5xkA3YPzv3LnG6cx9Qq7i4eoKEBERERERERERUfOVmgqMGmVMaRIXdzngDdjOfaIsRFT/GPQmIiIiIiIiIiIip2i1FuLY8fEwqNRQy5XAt0GtgVrJfULUMJjehIiIiIiIiIiIiOqdDlqkYR4qYcx9UgkN0mQudGAvb2pYDHoTERERERERERFRvcvOBj6QVMQiDynIQCzy8IGkIifHfDmdDsjIYKpvqj8MehMREREREREREVG9i48H1GqgEFpkIgWF0EKjMeb9NklPBwZE6/D8sAwMiNYhPd18HQyIU10w6E1ERERERERERET1TqsF5s0DNMbsJtBogLlzr+T+1umALRPTkSsxyMAw5EoMtkxMVwLc6elATAwwbJjxv9UD4kTWMOhNREREREREREREDSI1FcjLM/bWzssz/tskf5MO78skaGAc6FIDA96TNBRs1kGnAyZNAgyXx8A0GIC0NPb4Jsd4uLoCRERERERERERE5L602iu9u6uKR7YS8DbxgB5xyMGf2VoYDEAkdIhHNrIRj0K9Fjk5ltdliU5nzCseH+94GXIP7OlNRERERERERERENjVEbu3wAfEwqMzDkwa1BuH94xAfDzygSsdhGFOfHEYMHlClm+UDt1Uxpka5ujHoTURERERERERERFY5FECuS1Rcq4V6/jzI5aTfotFAPc+Y9FsLHebCPPXJXFUatKiy/vR0yOWKSZWKMTUKMehNREREREREREREFjkUQHamW3VqKlSXk36rqib9zs6GWsxTn6gNeiAnR6mYYeIkqC5XTGUwwDDJWLHs7Cv1NdFXKUruj0FvIiIiIiIiIiIisshuALk+ulVrtUBKinni7fh4QF0tdKnRwJTfpGiT5aB40eYce0UVR7fpsP31DBzdxi7g7oZBb2p2bL4t0xAJpoiIiIiIiIiIrlJ2A8gN1a1aqwXmzTNuzLTRuXOVwHg24qGvFtqshAY5iLNXFACQNSEdrfrEoMe0YWjVJwZZE5j0250w6E3Nis23ZThCARERERERERFRvbIbQHa0W3VdpKYCl1OfoGrqEwDRA7SYrJqHShgrVgkNpqjmIqq/VilasNnYk7tgs65qURzdpsOAj8zzhff/KI09vt0Ig97UbNh8W4YjFBARERERERERNQgbsWcHouJOspT65PLkfvNT0UGdhxRkoIM6D/3mp15ZLD0dEf1ikPTYMET0M+8ceSwrWwl4m3hAj+MbmfTbXXi4ugJEjrL1toxWbM2sp0aWiIiIiIiIiOgqpdXaCLGkpgKjRhnjMHFxjRaLMW5Wi5wcrflmrXWOHDUK0GrRZrAxNUrVwHclNGg9sErvdJ3OGIyKj2dsqRliT29qNmy+LdOQr9IQEREREREREZFtVnpku2SzdvKMRyRrsWm8eWqUzePnIiL58kqYQrfZY9Cbmg2bb8totci6x7yxyhpn4VUaDnRJREREREREROTeHOgc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QpGa3iIiIiIh5njESQ/nehslOxsKCiA31/M1O9voikSC1tbCCjYdPEaYxcS15+jNJRERETGG4k1EREREQkxa7yg+33/UmElvo9hsmu4W6QEvrNkPwKVjkukbG2FwNSIiIhKqNOktIiIiEmK8k94HykOo6S0iPldR28QbGw8BMH/yQIOrERERkVCmpreIiIhIiElO8CyzLKmsN7gSEQkWbrebB97YSm2jk+H945g0uI/RJYmIiEgIU9NbREREJMTERXoS7qobHAZXIiLB4r8bCvnfpkNYzCZ++7WxmExaYCkiIiLGUdNbREREJMTERnia3jUNToMrEZFgcOBILT97YxsA916QyYSBvQ2uSEREREKdmt4iIiIiISampekdPJPedjvk5nq+ikjPcThd3PPSBqobHEwc1JtvzcowuiQRERERNb1FREREQk1MhAWAqiBpeufkQHo6zJ7t+ZqTY3RFIqHjL5/ks+HAMeIirTxyXRYWs2JNRERExHhqeouIiIiEmLiIMCA4Jr3tdliwAFwuz59dLli4UBPfIj1hfUE5f/skD4BffWUstt7RBlckIiIi4qGmt4iIiEiI8U561zY6cbrcBldzZvLyjje8vZxOyM83ph6RUFFZ38Q9SzbicsNXJ6Qyd3yK0SWJiIiItFDTW0RERCTEeDO9AWoaA3vaOzMTzF96RmuxQIZihUV86mevb6XwWB1pfaL45bzRRpcjIiIi0oqa3iIiIiIhJsJqJsziyd0N9IgTmw0WL/Y0usHzddEiz+ki4huvbyjk9Y2HsJhNPHrdBOIiw4wuSURERKQVa+cXEREREZFgYjKZiImwcqy2KeCb3gDZ2TBnjifSJCNDDW8RXzpYXssDr28F4O7ZmZyd3tvgikREREROpqa3iIiISAiKCfc0vasbnEaX0i1sNjW7RXrCL97cRnWDg7PTe/PtWUONLkdERESkTYo3EREREQlBsc253tX1gT/pLSI9o6SqntxdJQD87mvjsFr0clJERET8k56liIiIiISg2MjmpncQxJuISM/436YiXG7ISutFRr9Yo8sRERERaZea3iIiIiIhKKZ50jsYMr1FpGe8sbEQgK9MSDW4EhEREZGOqektIiIiEoJiIywA1DSq6S0indtTWs1mewUWs4nLxyUbXY6IiIhIh9T0FhEREQlBMeGeSe8qZXqLSBe8scEz5T0j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APTv3x9Lly5FrVq10LlzZ2RkZGDNmjV44403EBwcnO/vXatWrbBu3Tq89957aNeuHaysrFCrVi20b98eALBp0yZs2rQJgP7NA8NlhjcRmjVrhg8++CDfj0dERERERERERCUTm95UoMLDw42bPFpbW8PJyQlVq1bF+PHj0bdvX1SuXDnb8ba2tpg5cyZ2796N/fv3IyYmBs7OzqhatSpmzpyJoKAg47FKpRIbNmzA2LFjsXLlSiQlJQEAunXrZrKmtyRJWLZsGdq1a4dFixYhODgYycnJKFOmDHx9ffHdd9+hTZs22c5v3759GDduHDZu3IhTp06hRo0aWLNmDRISEvLd9LayssLOnTsxf/58rFq1CosWLYJSqYSXlxeGDBlibLIDwPjx4/Hw4UMEBwdjz5490Ol0mDhxIpo1awYAGDhwIOrUqYPZs2cjNDQUmzdvhqOjI7y8vPDJJ5+gb9++2R570aJF8PPzw6JFizB//nx4enpi1KhR6Nq16ws1vQcOHIiIiAj8+eefmD59OrKystC3b19j0/vMmTNYvnx5ttucPXsWZ8+eNX7NpjcRERERERERET2PJJ6eK0HZJCYmwtHREQkJCcZNAHOTnp6OGzduoFKlSrCysjJhhYVHp9MhMTERDg4OUCg4CYeKvuf9HGo0GmzduhXt2rWDhYWFGSokKljMNMkNM01yw0yTHDHXJDfMNMmNnDOd3z4twJneRERERERERERERCQjbHoTERERERERERERkWyw6U1EREREREREREREssGmNxERERERERERERHJBpveRERERERERERERCQbbHoTERERERERERERkWyw6V3AhBDmLoGoxOLPHxERERERERERseldQCwsLCBJElJSUsxdClGJlZKSAkmSYGFhYe5SiIiIiIiIiIjITFTmLkAulEolHB0dcf/+fWRkZMDBwQEqlQqSJJm7tJem0+mQmZmJ9PR0KBR8f4SKJiEEsrKykJiYiMTERDg5OUGpVJq7LCIiIiIiIiIiMhM2vQtQ2bJlYW1tjZiYGCQmJpq7nFcmhEBaWhqsra2LdfOeSgalUoly5crB0dHR3KUQEREREREREZEZseldgCRJgpOTExwdHaHVapGVlWXukl6JRqNBaGgoWrRowXERVKSpVCoolUq+OUNERERERERERGx6FwZJkqBSqaBSFe9vr1KpRFZWFqysrNj0JiIiIiIiIiIiomKBg5qJiIiIiIiIiIiISDbY9CYiIiIiIiIiIiIi2WDTm4iIiIiIiIiIiIhkg01vIiIiIiIiIiIiIpINNr2JiIiIiIiIiIiISDbY9CYiIiIiIiIiIiIi2VCZu4CiTggBAEhMTDRzJaan0WiQmpqKxMREWFhYmLscolfGTJPcMNMkN8w0yQ0zTXLEXJPcMNMkN3LOtKE/a+jXPgub3s+RlJQEAChfvryZKyEiIiIiIiIiIiIq2ZKSkuDo6PjMYySRn9Z4CabT6XD79m3Y29tDkiRzl2NSiYmJKF++PCIjI+Hg4GDucoheGTNNcsNMk9ww0yQ3zDTJEXNNcsNMk9zIOdNCCCQlJcHd3R0KxbOndnOl93MoFAp4enqauwyzcnBwkN0PCZVszDTJDTNNcsNMk9ww0yRHzDXJDTNNciPXTD9vhbcBN7IkIiIiIiIiIiIiItlg05uIiIiIiIiIiIiIZINNb8qTWq3GxIkToVarzV0KUYFgpklumGmSG2aa5IaZJjlirklumGmSG2ZajxtZEhEREREREREREZFscKU3EREREREREREREckGm95EREREREREREREJBtsehMRERERERERERGRbLDpTURERERERERERESywaY3EREREREREREREckGm95EREREREREREREJBtsehMRERERERGRLN29excAIIQwcyVEBePixYsIDw8HwFyTPISFheH06dMFfr9selOxFxoaioULF2L37t3GFzRExd2ePXswZ84cbN68GTdv3jR3OUSv7NixY7h37565yyAqMEePHsW6detw6tQpJCYmmrscold26NAh/PLLLwgODsbJkyfZSKFi7+zZs6hduzaqVKmChIQESJJk7pKIXklwcDDq1KmD+vXr4/DhwwDAXFOxtm3bNrRq1QoBAQFo164dIiIiCvT+2fSmYmvr1q2oVasWWrVqhaFDh+LNN99EkyZN8NtvvxmP4Yt1Km5CQkJQv359tG3bFmPHjkWnTp3QpEkT/PLLL8ZjmGsqTnbu3Ik6dergjTfewN9//w2dTmfukoheybp161CjRg0EBASgW7dueP311/Hmm29i06ZNAPgcTcXP2rVrUbNmTbRr1w7Dhw/Hu+++i2bNmmHOnDnmLo3olcyYMQPnz59HUlISVq9eDYDP0VQ8LVu2DH5+fnj33Xeh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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Get real geophysical datetimes from our timedelta:\n", "dst_datetime = convert_timedelta_to_datetime(dst)\n", "x_values = dst_datetime['datetime'][idx_event_1hr].values\n", "\n", "# Dst Observed\n", "title = 'Dst \\n%s to %s\\nIndex Time: %s to %s' % \\\n", " (dst_datetime['datetime'][idx_event_1hr][0],\n", " dst_datetime['datetime'][idx_event_1hr][-1],\n", " dst_datetime.index[idx_event_1hr[0]][1], dst_datetime.index[idx_event_1hr[-1]][1])\n", "\n", "fig = plt.figure(figsize=(15,8))\n", "plt.plot( x_values, dst['dst'][idx_event_1hr].values, label='Dst Observed')\n", "plt.xticks(rotation=25)\n", "plt.title( title )\n", "\n", "# Dst Predicted at t0 and t1\n", "# Shift Dst[t1] to the right one hour to line up with the time axis\n", "ax = plt.gca()\n", "ax.plot(x_values, dst_predicted_t0, 'b.', label='Dst Predicted t0')\n", "ax.plot(x_values, np.concatenate(([np.nan],dst_predicted_t1[:-1])), 'r.', label='Dst Predicted t1')\n", "plt.grid(True)\n", "plt.legend(fontsize=14)\n", "plt.tight_layout()" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "id": "aXHnV7nubeCN" }, "outputs": [ { "data": { "text/plain": [ "\" Uncomment this block if you want to plot just the Dst predictions.\\n# Dst Predicted\\nfig = plt.figure(figsize=(15, 8))\\n\\nplt.plot(dst_predicted_t0, 'b', label='Dst Predicted t0')\\nplt.plot(dst_predicted_t1, 'r', label='Dst Predicted t1')\\nplt.grid(True)\\nplt.legend(fontsize=14)\\nplt.title('Dst Predicted')\\n\\nplt.tight_layout()\\n\"" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "''' Uncomment this block if you want to plot just the Dst predictions.\n", "# Dst Predicted\n", "fig = plt.figure(figsize=(15, 8))\n", "\n", "plt.plot(dst_predicted_t0, 'b', label='Dst Predicted t0')\n", "plt.plot(dst_predicted_t1, 'r', label='Dst Predicted t1')\n", "plt.grid(True)\n", "plt.legend(fontsize=14)\n", "plt.title('Dst Predicted')\n", "\n", "plt.tight_layout()\n", "'''" ] }, { "cell_type": "markdown", "metadata": { "id": "-b9wR3IOEvwJ" }, "source": [ "
\n", "Exercise: Prediction Performance:\n", "\n", "How does our LSTM model output for this event look compared to our observed Dst?\n", "
" ] }, { "cell_type": "markdown", "metadata": { "id": "jn5uRW1kDq2p" }, "source": [ "## Student Exercise: Additional Case Studies and Degraded Data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Exercises\n", "\n", "### Additional Excercises - Using the current notebook\n", "\n", "The following exercises are designed to help expand your intuition, by extending concepts in earlier sections. You should find these straight forward to engage in, using the materials in this notebook plus a couple of supplementary resources as indicated below." ] }, { "cell_type": "markdown", "metadata": { "id": "de9Wow0cEvv3" }, "source": [ "
\n", " Exercise: Together with the Chapter 1 notebook you can adjust the list of inputs (features) used to train the model and compare the losses, as well as performance in predicting specific storms.\n", "
" ] }, { "cell_type": "markdown", "metadata": { "id": "mR73zQn-Evv3" }, "source": [ "
\n", "Exercise: Are there any additional inputs (features) we should consider adding to improve our prediction of Dst?\n", "
" ] }, { "cell_type": "markdown", "metadata": { "id": "-b9wR3IOEvwJ" }, "source": [ "
\n", "Exercise: Improving Performance: \n", " \n", "What hyper parameter changes to the LSTM architecture might you explore to increase its performance?\n", "
\n", "\n", "
\n", "Hint: You can use the model loading section of this notebook to load a different pre-trained LSTM model. Or you can use the model definition section of the Chapter 1 notebook to adjust the hyper parameters and train a new model.\n", "
" ] }, { "cell_type": "markdown", "metadata": { "id": "6NOmthg4EvwG" }, "source": [ "
\n", "Exercise: Instrument Availability:\n", "\n", "If one or more solar wind instruments were to degrade on orbit how might this impact model performance?\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "Hint: Review the model sensitivities to the input parameters via the permutation importance section.\n", "
" ] }, { "cell_type": "markdown", "metadata": { "id": "HV8qus9mEvwG" }, "source": [ "
\n", "Exercise: LSTM versus CNN:\n", "\n", "- For the baseline storm event above, how does our LSTM model performance compare to the TAI4ES CNN notebook?\n", "- Compare and contrast the influence of features on this notebook's LSTM model with those in the TAI4ES CNN notebook. \n", "- How might these differences speak to differences in the performance of the two models?\n", "- Are there storm events where LSTM is close to performing as well as the CNN model?\n", "- Are there phases or characteristics of different storm events where LSTM or CNN do better than each other?\n", "
\n", "\n", "
\n", "Tip: You can use these storm phase descriptions for contextualizing your findings:\n", "\n", "* Climatology / quiet periods: Dst is generally horizontal and nearly 0 nano-Tesla.\n", "* Sudden Impulse: Dst rises from near 0 to positive values rapidly over a few hours.\n", "* Storm Sudden Commencement and Main Phase: Dst drops sharply and remains significantly negative for up to several days.\n", "* Storm Peak: Dst reaches its minimum (most negative) value.\n", "* Recovery Phase: Dst recovers from large negative values back to climatology, near 0 nano-Tesla." ] }, { "cell_type": "markdown", "metadata": { "id": "9kEgSgWZbeCN" }, "source": [ "
\n", "Exercise: Degraded Observations\n", "\n", "Degrade the instrument measurements and run the model to see how the performance is impacted. Start simple by adding Gaussian noise (mean 0), to the least important and the most important input parameters (aka features) and evaluating a specific event.\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Next steps\n", "\n", "Congragulations on engaging with the learning objectives of this Chapter 2 LSTM focused notebook--the benchmark from the NOAA MagNet competition. There is one additional Chapter 1 notebook in the MagNet LSTM series, on model development in case you didn't start there.\n", "\n", "There is an additional NCAI notebook in preparation for this MagNet series:\n", "A higher performing ensemble Convolutional Neural Netowork (CNN) from the NOAA Geomagnetism team based on the 2nd place entry from the MagNet competition. \n", "As mentioned in an earlier section, this notebook's precursor is the [TAI4ES Space Weather CNN Notebook](https://github.com/ai2es/tai4es-trustathon-2022/tree/main/space)\n", "\n", "Additionally, a web search will provide other Dst modeling notebooks and publications using ML techniques." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Examples in the community\n", "\n", "For a comprehensive treatment of the need to build robust predictions of the Dst space weather storm indicator (e.g. for magnetic navigation applications), see Nair et al., 2023 and references therein:\n", "* Nair et al., 2023 (in press) (TODO: Update with public URL as soon as available),\n", "\n", "For a summary, see:\n", "* https://www.drivendata.org/competitions/73/noaa-magnetic-forecasting/\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Data statement\n", "The competition discussed above used public data for development and the public leaderboard. A private dataset was kept internal during the competition for use in scoring by the organizers. Since the competition has passed, both datasets are publicly accessible from NOAA.\n", "\n", "All data used in this notebook are publicly available here:\n", "* https://ngdc.noaa.gov/geomag/data/geomag/magnet/public.zip\n", "* https://ngdc.noaa.gov/geomag/data/geomag/magnet/private.zip" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## References\n", "\n", "* Nair, M., Redmon, R.J., Young, L.Y., Chulliat, A., Trotta, B., Chung, C., Lipstein, G., Slavitt, I. (2023),\"MagNet - a data-science competition to predict Disturbance Storm-time index (Dst) from solar wind data\", Space Weather, In Press.\n", "* [CIRES GeoMag MagNet repository](https://github.com/liyo6397/MagNet/), TODO: update URL to new CIRES repo.\n", "* [Trustworthy Artificial Intelligence for Environmental Science 2022 Summer School](https://www2.cisl.ucar.edu/events/tai4es-2022-summer-school), TAI4ES, accessed July 2022.\n", "* [TAI4ES Space Weather Notebooks (LSTM, CNN)](https://github.com/ai2es/tai4es-trustathon-2022/tree/main/space), GitHub, accessed July 2022.\n", "* [MagNet: Model the Geomagnetic Field](https://ngdc.noaa.gov/geomag/mag-net-challenge.html), NOAA, accessed March 2022.\n", "* Chung, C. (2020), \"HOW TO PREDICT DISTURBANCES IN THE GEOMAGENTIC FIELD WITH LSTMS - BENCHMARK\", Blogpost, Accessed March 2022, Available Online: https://drivendata.co/blog/model-geomagnetic-field-benchmark/.\n", "* DrivenData (2020), \"MagNet: Model the Geomagnetic Field\", Web Resource, Accessed March 2022, Available Online: https://www.drivendata.org/competitions/73/noaa-magnetic-forecasting/.\n", "* [Interpretable Machine Learning by Christop Molnar](https://christophm.github.io/interpretable-ml-book/shap.html)\n", "* Redmon, R. J., Seaton, D. B., Steenburgh, R., He, J., & Rodriguez, J. V. (2018). September 2017's geoeffective space weather and impacts to Caribbean radio communications during hurricane response. Space Weather, 16, 1190–1201. https://doi.org/10.1029/2018SW001897" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Metadata\n", " * Language / package(s):\n", " * Language: Python, \n", " * Packages: Keras Tensor Flow, Matplotlib, Numpy, Pandas, Scikit-learn\n", " * Scientific domain:\n", " * Space Weather, Geomagnetic modeling\n", " * Application keywords\n", " * Magnetic Navigation\n", " * Geophysical keywords\n", " * Disturbance Storm Index (Dst), Solar Wind\n", " * AI keywords\n", " * Long Short-Term Memory (LSTM)\n", " * Explainable AI (XAI), Permutation Feature Importance" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## License\n", "\n", "### Software and Content Description License\n", "Software code created by U.S. Government employees is not subject to copyright in the United States (17 U.S.C. §105). The United States/Department of Commerce reserve all rights to seek and obtain copyright protection in countries other than the United States for Software authored in its entirety by the Department of Commerce. To this end, the Department of Commerce hereby grants to Recipient a royalty-free, nonexclusive license to use, copy, and create derivative works of the Software outside of the United States." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Disclaimer\n", "\n", "> This Jupyter notebook is a scientific product and is not official communication of the National Oceanic and Atmospheric Administration, or the United States Department of Commerce. All NOAA Jupyter notebooks are provided on an 'as is' basis and the user assumes responsibility for its use. Any claims against the Department of Commerce or Department of Commerce bureaus stemming from the use of this Jupyter notebook will be governed by all applicable Federal law. Any reference to specific commercial products, processes, or services by service mark, trademark, manufacturer, or otherwise does not constitute or imply their endorsement, recommendation or favoring by the Department of Commerce. The Department of Commerce seal and logo, or the seal and logo of a DOC bureau, shall not be used in any manner to imply endorsement of any commercial product or activity by DOC or the United States Government." ] } ], "metadata": { "accelerator": "GPU", "colab": { "collapsed_sections": [ "v003LoxwbeB6", "kRzCSuRwbeB7", "YIeZxbJXbeB7", "CdZDisojbeB8", "kJQsAZGlbeB8", "GCrRyAmibeB9", "5WEhRi6RMX0o", "AVRI8V_AI3NS", "ZDtowUzbMXNx", "Vk0h7YPGMxUw", "Is66dqN0M3VP", "5HoW8LxqM8eS", "J261z_FvOK_p", "HqKPO3qXOWDb", "_islsePpOgRI", "DHXdMwzzTHaF", "wkwxYtOqT8WT", "nl-bgU9WHXQO", "yLbZKYfgEjoT", "dWs2MeMe0ZFm", "acm3GxIUbeCL", "jn5uRW1kDq2p", "9kEgSgWZbeCN" ], "gpuType": "V100", "machine_shape": "hm", "provenance": [] }, "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.9.16" } }, "nbformat": 4, "nbformat_minor": 4 }