{ "cells": [ { "cell_type": "markdown", "metadata": { "editable": true }, "source": [ "# Your first neural network\n", "\n", "In this project, you'll build your first neural network and use it to predict daily bike rental ridership. We've provided some of the code, but left the implementation of the neural network up to you (for the most part). After you've submitted this project, feel free to explore the data and the model more.\n", "\n" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "editable": true }, "outputs": [], "source": [ "# %matplotlib inline\n", "%load_ext autoreload\n", "%autoreload 2\n", "# %config InlineBackend.figure_format = 'retina'\n", "\n", "import numpy as np\n", "import pandas as pd\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "markdown", "metadata": { "editable": true }, "source": [ "## Load and prepare the data\n", "\n", "A critical step in working with neural networks is preparing the data correctly. Variables on different scales make it difficult for the network to efficiently learn the correct weights. Below, we've written the code to load and prepare the data. You'll learn more about this soon!" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "editable": true }, "outputs": [], "source": [ "data_path = 'Bike-Sharing-Dataset/hour.csv'\n", "\n", "rides = pd.read_csv(data_path)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "editable": true }, "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
instantdtedayseasonyrmnthhrholidayweekdayworkingdayweathersittempatemphumwindspeedcasualregisteredcnt
012011-01-01101006010.240.28790.810.031316
122011-01-01101106010.220.27270.800.083240
232011-01-01101206010.220.27270.800.052732
342011-01-01101306010.240.28790.750.031013
452011-01-01101406010.240.28790.750.0011
\n", "
" ], "text/plain": [ " instant dteday season yr mnth hr holiday weekday workingday \\\n", "0 1 2011-01-01 1 0 1 0 0 6 0 \n", "1 2 2011-01-01 1 0 1 1 0 6 0 \n", "2 3 2011-01-01 1 0 1 2 0 6 0 \n", "3 4 2011-01-01 1 0 1 3 0 6 0 \n", "4 5 2011-01-01 1 0 1 4 0 6 0 \n", "\n", " weathersit temp atemp hum windspeed casual registered cnt \n", "0 1 0.24 0.2879 0.81 0.0 3 13 16 \n", "1 1 0.22 0.2727 0.80 0.0 8 32 40 \n", "2 1 0.22 0.2727 0.80 0.0 5 27 32 \n", "3 1 0.24 0.2879 0.75 0.0 3 10 13 \n", "4 1 0.24 0.2879 0.75 0.0 0 1 1 " ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "rides.head()" ] }, { "cell_type": "markdown", "metadata": { "editable": true }, "source": [ "## Checking out the data\n", "\n", "This dataset has the number of riders for each hour of each day from January 1 2011 to December 31 2012. The number of riders is split between casual and registered, summed up in the `cnt` column. You can see the first few rows of the data above.\n", "\n", "Below is a plot showing the number of bike riders over the first 10 days or so in the data set. (Some days don't have exactly 24 entries in the data set, so it's not exactly 10 days.) You can see the hourly rentals here. This data is pretty complicated! The weekends have lower over all ridership and there are spikes when people are biking to and from work during the week. Looking at the data above, we also have information about temperature, humidity, and windspeed, all of these likely affecting the number of riders. You'll be trying to capture all this with your model." ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "editable": true }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# rides[:24*10].plot(x='dteday', y='cnt',grid=True);\n", "rides.plot(x='dteday', y='cnt',grid=True);" ] }, { "cell_type": "markdown", "metadata": { "editable": true }, "source": [ "### Dummy variables\n", "Here we have some categorical variables like season, weather, month. To include these in our model, we'll need to make binary dummy variables. This is simple to do with Pandas thanks to `get_dummies()`." ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "editable": true }, "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", " \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", "
yrholidaytemphumwindspeedcasualregisteredcntseason_1season_2...hr_21hr_22hr_23weekday_0weekday_1weekday_2weekday_3weekday_4weekday_5weekday_6
0000.240.810.03131610...0000000001
1000.220.800.08324010...0000000001
2000.220.800.05273210...0000000001
3000.240.750.03101310...0000000001
4000.240.750.001110...0000000001
\n", "

5 rows × 212 columns

\n", "
" ], "text/plain": [ " yr holiday temp hum windspeed casual registered cnt season_1 \\\n", "0 0 0 0.24 0.81 0.0 3 13 16 1 \n", "1 0 0 0.22 0.80 0.0 8 32 40 1 \n", "2 0 0 0.22 0.80 0.0 5 27 32 1 \n", "3 0 0 0.24 0.75 0.0 3 10 13 1 \n", "4 0 0 0.24 0.75 0.0 0 1 1 1 \n", "\n", " season_2 ... hr_21 hr_22 hr_23 weekday_0 weekday_1 weekday_2 \\\n", "0 0 ... 0 0 0 0 0 0 \n", "1 0 ... 0 0 0 0 0 0 \n", "2 0 ... 0 0 0 0 0 0 \n", "3 0 ... 0 0 0 0 0 0 \n", "4 0 ... 0 0 0 0 0 0 \n", "\n", " weekday_3 weekday_4 weekday_5 weekday_6 \n", "0 0 0 0 1 \n", "1 0 0 0 1 \n", "2 0 0 0 1 \n", "3 0 0 0 1 \n", "4 0 0 0 1 \n", "\n", "[5 rows x 212 columns]" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dummy_fields = ['season', 'weathersit', 'mnth', 'hr', 'weekday']\n", "for each in dummy_fields:\n", " dummies = pd.get_dummies(rides[each], prefix=each, drop_first=False)\n", " rides = pd.concat([rides, dummies], axis=1)\n", "\n", "fields_to_drop = ['instant', 'dteday', 'season', 'weathersit', \n", " 'weekday', 'atemp', 'mnth', 'workingday', 'hr']\n", "odata = rides.drop(fields_to_drop, axis=1)\n", "odata.head()" ] }, { "cell_type": "markdown", "metadata": { "editable": true }, "source": [ "### A. Splitting the data into training, testing, and validation sets\n", "We'll save the data for the last approximately 21 days to use as a test set after we've trained the network. We'll use this set to make predictions and compare them with the actual number of riders.\n", "\n", "### B. Scaling the target variables\n", "To make training the network easier, we'll standardize each of the continuous variables. That is, we'll shift and scale the variables such that they have zero mean and a standard deviation of 1.\n", "\n", "The scaling factors are saved so we can go backwards when we use the network for predictions.\n" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "editable": true }, "outputs": [], "source": [ "# # Save data for approximately the last 21 days \n", "# test_data = data[-21*24:]\n", "\n", "# # Now remove the test data from the data set \n", "# data = data[:-21*24]\n", "data = odata.copy()\n", "\n", "# scaling\n", "quant_features = ['casual', 'registered', 'cnt', 'temp', 'hum', 'windspeed']\n", "# Store scalings in a dictionary so we can convert back later\n", "scaled_features = {}\n", "for each in quant_features:\n", " mean, std = data[each].mean(), data[each].std()\n", " scaled_features[each] = [mean, std]\n", " data.loc[:, each] = (data[each] - mean)/std\n", "\n", "# Save data for approximately the last 21 days \n", "test_data = data[-21*24:]\n", "\n", "# Now remove the test data from the data set \n", "data = data[:-21*24]\n", " \n", "# Separate the data into features and targets\n", "target_fields = ['cnt', 'casual', 'registered']\n", "features, targets = data.drop(target_fields, axis=1), data[target_fields]\n", "test_features, test_targets = test_data.drop(target_fields, axis=1), test_data[target_fields]" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "editable": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[189.46308763450142, 181.38759909186473]\n", "-0.266228059849 0.814895438062\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "test_targets.plot(y=\"cnt\", grid=True);\n", "print(scaled_features[\"cnt\"])\n", "print(test_targets[\"cnt\"].mean(), test_targets[\"cnt\"].std())" ] }, { "cell_type": "markdown", "metadata": { "editable": true }, "source": [ "We'll split the data into two sets, one for training and one for validating as the network is being trained. Since this is time series data, we'll train on historical data, then try to predict on future data (the validation set)." ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "editable": true }, "outputs": [], "source": [ "# Hold out the last 60 days or so of the remaining data as a validation set\n", "train_features, train_targets = features[:-60*24], targets[:-60*24]\n", "val_features, val_targets = features[-60*24:], targets[-60*24:]" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "editable": true }, "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", " \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", " \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", "
yrholidaytemphumwindspeedseason_1season_2season_3season_4weathersit_1...hr_21hr_22hr_23weekday_0weekday_1weekday_2weekday_3weekday_4weekday_5weekday_6
000-1.3346090.947345-1.55384410001...0000000001
100-1.4384750.895513-1.55384410001...0000000001
200-1.4384750.895513-1.55384410001...0000000001
300-1.3346090.636351-1.55384410001...0000000001
400-1.3346090.636351-1.55384410001...0000000001
500-1.3346090.636351-0.82146010000...0000000001
600-1.4384750.895513-1.55384410001...0000000001
700-1.5423411.206507-1.55384410001...0000000001
800-1.3346090.636351-1.55384410001...0000000001
900-0.9191460.688184-1.55384410001...0000000001
\n", "

10 rows × 209 columns

\n", "
" ], "text/plain": [ " yr holiday temp hum windspeed season_1 season_2 season_3 \\\n", "0 0 0 -1.334609 0.947345 -1.553844 1 0 0 \n", "1 0 0 -1.438475 0.895513 -1.553844 1 0 0 \n", "2 0 0 -1.438475 0.895513 -1.553844 1 0 0 \n", "3 0 0 -1.334609 0.636351 -1.553844 1 0 0 \n", "4 0 0 -1.334609 0.636351 -1.553844 1 0 0 \n", "5 0 0 -1.334609 0.636351 -0.821460 1 0 0 \n", "6 0 0 -1.438475 0.895513 -1.553844 1 0 0 \n", "7 0 0 -1.542341 1.206507 -1.553844 1 0 0 \n", "8 0 0 -1.334609 0.636351 -1.553844 1 0 0 \n", "9 0 0 -0.919146 0.688184 -1.553844 1 0 0 \n", "\n", " season_4 weathersit_1 ... hr_21 hr_22 hr_23 weekday_0 \\\n", "0 0 1 ... 0 0 0 0 \n", "1 0 1 ... 0 0 0 0 \n", "2 0 1 ... 0 0 0 0 \n", "3 0 1 ... 0 0 0 0 \n", "4 0 1 ... 0 0 0 0 \n", "5 0 0 ... 0 0 0 0 \n", "6 0 1 ... 0 0 0 0 \n", "7 0 1 ... 0 0 0 0 \n", "8 0 1 ... 0 0 0 0 \n", "9 0 1 ... 0 0 0 0 \n", "\n", " weekday_1 weekday_2 weekday_3 weekday_4 weekday_5 weekday_6 \n", "0 0 0 0 0 0 1 \n", "1 0 0 0 0 0 1 \n", "2 0 0 0 0 0 1 \n", "3 0 0 0 0 0 1 \n", "4 0 0 0 0 0 1 \n", "5 0 0 0 0 0 1 \n", "6 0 0 0 0 0 1 \n", "7 0 0 0 0 0 1 \n", "8 0 0 0 0 0 1 \n", "9 0 0 0 0 0 1 \n", "\n", "[10 rows x 209 columns]" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train_features.head(10)" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "editable": true }, "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", "
cntcasualregistered
0-0.956312-0.662736-0.930162
1-0.823998-0.561326-0.804632
2-0.868103-0.622172-0.837666
3-0.972851-0.662736-0.949983
4-1.039008-0.723582-1.009445
\n", "
" ], "text/plain": [ " cnt casual registered\n", "0 -0.956312 -0.662736 -0.930162\n", "1 -0.823998 -0.561326 -0.804632\n", "2 -0.868103 -0.622172 -0.837666\n", "3 -0.972851 -0.662736 -0.949983\n", "4 -1.039008 -0.723582 -1.009445" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train_targets.head()" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "editable": true }, "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", "
cntcasualregistered
16875-0.349876-0.500481-0.256260
16876-0.581424-0.561326-0.513929
16877-0.873616-0.683018-0.824452
16878-1.000416-0.703300-0.969804
16879-1.039008-0.723582-1.009445
\n", "
" ], "text/plain": [ " cnt casual registered\n", "16875 -0.349876 -0.500481 -0.256260\n", "16876 -0.581424 -0.561326 -0.513929\n", "16877 -0.873616 -0.683018 -0.824452\n", "16878 -1.000416 -0.703300 -0.969804\n", "16879 -1.039008 -0.723582 -1.009445" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "test_targets.head()" ] }, { "cell_type": "markdown", "metadata": { "editable": true }, "source": [ "## Time to build the network\n", "\n", "Below you'll build your network. We've built out the structure. You'll implement both the forward pass and backwards pass through the network. You'll also set the hyperparameters: the learning rate, the number of hidden units, and the number of training passes.\n", "\n", "\n", "\n", "The network has two layers, a hidden layer and an output layer. The hidden layer will use the sigmoid function for activations. The output layer has only one node and is used for the regression, the output of the node is the same as the input of the node. That is, the activation function is $f(x)=x$. A function that takes the input signal and generates an output signal, but takes into account the threshold, is called an activation function. We work through each layer of our network calculating the outputs for each neuron. All of the outputs from one layer become inputs to the neurons on the next layer. This process is called *forward propagation*.\n", "\n", "We use the weights to propagate signals forward from the input to the output layers in a neural network. We use the weights to also propagate error backwards from the output back into the network to update our weights. This is called *backpropagation*.\n", "\n", "> **Hint:** You'll need the derivative of the output activation function ($f(x) = x$) for the backpropagation implementation. If you aren't familiar with calculus, this function is equivalent to the equation $y = x$. What is the slope of that equation? That is the derivative of $f(x)$.\n", "\n", "Below, you have these tasks:\n", "1. Implement the sigmoid function to use as the activation function. Set `self.activation_function` in `__init__` to your sigmoid function.\n", "2. Implement the forward pass in the `train` method.\n", "3. Implement the backpropagation algorithm in the `train` method, including calculating the output error.\n", "4. Implement the forward pass in the `run` method.\n", " " ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "editable": true }, "outputs": [], "source": [ "#############\n", "# In the my_answers.py file, fill out the TODO sections as specified\n", "#############\n", "\n", "from my_answers import NeuralNetwork" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "editable": true }, "outputs": [], "source": [ "def MSE(y, Y):\n", " return np.mean((y-Y)**2)" ] }, { "cell_type": "markdown", "metadata": { "editable": true }, "source": [ "## Unit tests\n", "\n", "Run these unit tests to check the correctness of your network implementation. This will help you be sure your network was implemented correctly befor you starting trying to train it. These tests must all be successful to pass the project." ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "editable": true }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ ".....\n", "----------------------------------------------------------------------\n", "Ran 5 tests in 0.014s\n", "\n", "OK\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import unittest\n", "from my_answers import NeuralNetwork\n", "\n", "inputs = np.array([[0.5, -0.2, 0.1]])\n", "targets = np.array([[0.4]])\n", "test_w_i_h = np.array([[0.1, -0.2],\n", " [0.4, 0.5],\n", " [-0.3, 0.2]])\n", "test_w_h_o = np.array([[0.3],\n", " [-0.1]])\n", "\n", "class TestMethods(unittest.TestCase):\n", " \n", " ##########\n", " # Unit tests for data loading\n", " ##########\n", " \n", " def test_data_path(self):\n", " # Test that file path to dataset has been unaltered\n", " self.assertTrue(data_path.lower() == 'bike-sharing-dataset/hour.csv')\n", " \n", " def test_data_loaded(self):\n", " # Test that data frame loaded\n", " self.assertTrue(isinstance(rides, pd.DataFrame))\n", " \n", " ##########\n", " # Unit tests for network functionality\n", " ##########\n", "\n", " def test_activation(self):\n", " network = NeuralNetwork(3, 2, 1, 0.5)\n", " # Test that the activation function is a sigmoid\n", " self.assertTrue(np.all(network.activation_function(0.5) == 1/(1+np.exp(-0.5))))\n", "\n", " def test_train(self):\n", " # Test that weights are updated correctly on training\n", " network = NeuralNetwork(3, 2, 1, 0.5)\n", " network.weights_input_to_hidden = test_w_i_h.copy()\n", " network.weights_hidden_to_output = test_w_h_o.copy()\n", " \n", " network.train(inputs, targets)\n", " self.assertTrue(np.allclose(network.weights_hidden_to_output, \n", " np.array([[ 0.37275328], \n", " [-0.03172939]])))\n", " self.assertTrue(np.allclose(network.weights_input_to_hidden,\n", " np.array([[ 0.10562014, -0.20185996], \n", " [0.39775194, 0.50074398], \n", " [-0.29887597, 0.19962801]])))\n", "\n", " def test_run(self):\n", " # Test correctness of run method\n", " network = NeuralNetwork(3, 2, 1, 0.5)\n", " network.weights_input_to_hidden = test_w_i_h.copy()\n", " network.weights_hidden_to_output = test_w_h_o.copy()\n", "\n", " self.assertTrue(np.allclose(network.run(inputs), 0.09998924))\n", "\n", "suite = unittest.TestLoader().loadTestsFromModule(TestMethods())\n", "unittest.TextTestRunner().run(suite)" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "editable": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[1 2 3]\n", "[[1]\n", " [2]\n", " [3]]\n", "[1 2 3]\n" ] } ], "source": [ "a = np.array([1,2,3])\n", "print(a)\n", "print(a.reshape(-1,1))\n", "print(a)" ] }, { "cell_type": "markdown", "metadata": { "editable": true }, "source": [ "## Training the network\n", "\n", "Here you'll set the hyperparameters for the network. The strategy here is to find hyperparameters such that the error on the training set is low, but you're not overfitting to the data. If you train the network too long or have too many hidden nodes, it can become overly specific to the training set and will fail to generalize to the validation set. That is, the loss on the validation set will start increasing as the training set loss drops.\n", "\n", "You'll also be using a method know as Stochastic Gradient Descent (SGD) to train the network. The idea is that for each training pass, you grab a random sample of the data instead of using the whole data set. You use many more training passes than with normal gradient descent, but each pass is much faster. This ends up training the network more efficiently. You'll learn more about SGD later.\n", "\n", "### Choose the number of iterations\n", "This is the number of batches of samples from the training data we'll use to train the network. The more iterations you use, the better the model will fit the data. However, this process can have sharply diminishing returns and can waste computational resources if you use too many iterations. You want to find a number here where the network has a low training loss, and the validation loss is at a minimum. The ideal number of iterations would be a level that stops shortly after the validation loss is no longer decreasing.\n", "\n", "### Choose the learning rate\n", "This scales the size of weight updates. If this is too big, the weights tend to explode and the network fails to fit the data. Normally a good choice to start at is 0.1; however, if you effectively divide the learning rate by n_records, try starting out with a learning rate of 1. In either case, if the network has problems fitting the data, try reducing the learning rate. Note that the lower the learning rate, the smaller the steps are in the weight updates and the longer it takes for the neural network to converge.\n", "\n", "### Choose the number of hidden nodes\n", "In a model where all the weights are optimized, the more hidden nodes you have, the more accurate the predictions of the model will be. (A fully optimized model could have weights of zero, after all.) However, the more hidden nodes you have, the harder it will be to optimize the weights of the model, and the more likely it will be that suboptimal weights will lead to overfitting. With overfitting, the model will memorize the training data instead of learning the true pattern, and won't generalize well to unseen data. \n", "\n", "Try a few different numbers and see how it affects the performance. You can look at the losses dictionary for a metric of the network performance. If the number of hidden units is too low, then the model won't have enough space to learn and if it is too high there are too many options for the direction that the learning can take. The trick here is to find the right balance in number of hidden units you choose. You'll generally find that the best number of hidden nodes to use ends up being between the number of input and output nodes." ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "editable": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Progress: 100.0% ... Training loss: 0.059 ... Validation loss: 0.137\r" ] }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import sys\n", "\n", "####################\n", "### Set the hyperparameters in you myanswers.py file ###\n", "####################\n", "\n", "from my_answers import iterations, learning_rate, hidden_nodes, output_nodes, NeuralNetwork\n", "\n", "\n", "N_i = train_features.shape[1]\n", "network = NeuralNetwork(N_i, hidden_nodes, output_nodes, learning_rate)\n", "\n", "losses = {'train':[], 'validation':[]}\n", "for ii in range(iterations):\n", " # Go through a random batch of 128 records from the training data set\n", " batch = np.random.choice(train_features.index, size=128)\n", "# X, y = train_features.ix[batch].values, train_targets.ix[batch]['cnt']\n", " X, y = train_features.iloc[batch].values, train_targets.loc[batch]['cnt']\n", " \n", " network.train(X, y)\n", " \n", " # Printing out the training progress\n", " train_loss = MSE(network.run(train_features).T, train_targets['cnt'].values)\n", " val_loss = MSE(network.run(val_features).T, val_targets['cnt'].values)\n", " print(\"Progress: {:2.1f}\".format(100 * ii/float(iterations)) \\\n", " + \"% ... Training loss: \" + str(train_loss)[:5] \\\n", " + \" ... Validation loss: \" + str(val_loss)[:5], end=\"\\r\")\n", " \n", " losses['train'].append(train_loss)\n", " losses['validation'].append(val_loss)\n", " \n", "plt.plot(losses['train'], label='Training loss')\n", "plt.plot(losses['validation'], label='Validation loss')\n", "plt.legend()\n", "plt.grid(True)" ] }, { "cell_type": "markdown", "metadata": { "editable": true }, "source": [ "## Check out your predictions\n", "\n", "Here, use the test data to view how well your network is modeling the data. If something is completely wrong here, make sure each step in your network is implemented correctly." ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "editable": true }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(figsize=(8,4))\n", "\n", "mean, std = scaled_features['cnt']\n", "predictions = network.run(test_features).T*std + mean\n", "ax.plot(predictions[0], label='Prediction')\n", "ax.plot((test_targets['cnt']*std + mean).values, label='Data')\n", "# ax.plot((test_targets['cnt']).values, label='Data')\n", "ax.set_xlim(right=len(predictions))\n", "ax.legend()\n", "\n", "# dates = pd.to_datetime(rides.ix[test_data.index]['dteday'])\n", "dates = pd.to_datetime(rides.loc[test_data.index]['dteday'])\n", "dates = dates.apply(lambda d: d.strftime('%b %d'))\n", "ax.set_xticks(np.arange(len(dates))[12::24])\n", "_ = ax.set_xticklabels(dates[12::24], rotation=45)" ] }, { "cell_type": "markdown", "metadata": { "editable": true }, "source": [ "## OPTIONAL: Thinking about your results(this question will not be evaluated in the rubric).\n", " \n", "Answer these questions about your results. How well does the model predict the data? Where does it fail? Why does it fail where it does?\n", "\n", "> **Note:** You can edit the text in this cell by double clicking on it. When you want to render the text, press control + enter\n", "\n", "#### Your answer below\n", "\n", "Does OK in the first part of December, but isn't capturing the holidays well." ] }, { "cell_type": "markdown", "metadata": { "editable": true }, "source": [ "## Submitting:\n", "Open up the 'jwt' file in the first-neural-network directory (which also contains this notebook) for submission instructions" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "editable": true }, "outputs": [], "source": [] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.3" } }, "nbformat": 4, "nbformat_minor": 4 }