# [NEW] TensorFlow (Beginner): Predicting House Prices with Regression

In this project, we are going to create and train a neural network to perform a regression task. In a regression task, we train the network to predict a continuous value given a set of input features. By the end of this project, you’d have created and trained a neural network to be able to predict prices of houses given a bunch of features.

Duration (mins)

Learners

#### 4.8 / 5

Rating

We will cover the following tasks in 48 minutes:

### Introduction

In this project, we are looking to solve a regression problem with the help of a neural network model and some data. In a regression task, we train the network to predict a continuous value given a set of input features. This is different from classification - in classification problems, we train a model to predict discreet values or classes. To be able to complete this project successfully, you should have a basic understanding of programming with python. It would also help if you have used Jupyter Notebooks before.

You should have a basic understanding of how neural networks work as well. It’s okay if you don’t understand the math behind neural networks because we are going to use a high level API, but I will assume that have some conceptual understanding of neural networks.

### Importing the Data

First of all, we will import the dataset. We will use the popular Pandas library to import and process the data. The `head()` function gives us the first 5 rows by default. So, we can see the typical values for our features as given in the dataset. There are 5000 examples in the dataset and it may not be possible for us to go through all of them manually. So, we want to ensure that there aren’t any missing values in the dataset before we start using it. Pandas makes it really simple. We can use the `isna()` function to find out any missing or not available values in the dataset.

### Data Normalization

We can make it easier for optimization algorithms to converge towards minimas faster by normalizing the data before training a model. You may remember that a neural network model is trained with the help of an optimization algorithm that tries to minimize the difference between ground truth or actual labels and model’s predictions. Normalization of data makes it easier for such an optimization algorithm to take gradient steps in the right direction more consistently. Normalization is simply changing the distribution of different features so that the values for different features are in similar ranges.

We will ignore the first column because it’s not a feature and is just a serial number. Then we will normalize the data by using mean and standard deviation of each column. This operation is column-wise by default.

### Training and Test Sets

In this task, we will split our Data Frame into the features and the labels and then we will split that data into two sets: one for training and another one for testing. In pandas, we have an option to split data by columns by using `iloc` for specifying location. Let’s look at our Data Frame’s head that we printed out in the last task after normalization. Notice only the first 6 columns of the Data Frame are the features, so let’s store them separately as X. We will use a helper function called `train_test_split` from SciKit Learn to do this split. The reason we are using this helper function is because not only this will very conveniently split our data in the two sets that we need, it will also randomly shuffle the input data before splitting it. This random shuffle is a pretty good idea: if the observations were recorded or arranged in any kind of order for any column, for example, then that pattern may influence our neural network into finding correlations that depend on how the data was observed or stored rather than finding actual meaningful correlations which generalize well.

### Create the Model

Let’s write a function that returns an untrained model of a certain architecture. We are using a simple neural network architecture with just 3 hidden layers. We are going to use the `relu` activation function on all the layers except for the output layer. Since this is a regression problem, we just need the linear output without any activation here.

Mean squared error is pretty common for regression problems. Remember, this is the loss function that the optimization algorithm tries to minimize. We are using a variant of stochastic gradient descent algorithm which is called `adam`. At a beginner level, it’s okay if you don’t understand the exact math behind this as long as you understand what an optimization algorithm is.

### Model Training

Usually, we don’t know in advance how long we may need to train a model for. Fortunately, we can use an `EarlyStopping` callback from Keras to stop the model training if the validation loss stops decreasing for a few epochs. The validation loss is calculated on the test set and not on the training set so it’s a better metric to use to make a decision on stopping the training.

By using early stopping callback, we can be generous with the epoch value here and set it to a very high number and the model will simply stop training when it doesn’t see any improvement in validation loss in 5 subsequent epochs.

### Predictions

Previously, we had stored predictions from an untrained model in a variable called `preds_on_untrained`. Now that we have the trained model, let’s store predictions from a trained model on the same test set in another variable. Now, let’s use the `compare_predictions` helper function to compare predictions from the model when it was untrained and when it was trained.

The trained model predictions are in green and the untrained on in red. This makes sense. The untrained model predictions are quite random and the trained model predictions are more close to this blue line which is the ground truth or the actual values of prices for this set. So, we can see that after the training, the model does a significantly better job at predictions.

## Watch Preview

Preview the instructions that you will follow along in a hands-on session in your browser.

## Reviews

Be careful. I have a Mac and and I don't Type this [] (hook parenthese)

vignaux

Nice project! Exactly What I need. I would have preferred that you show how to to use the created model to predict a price for one house instance.

Anis Koubaa

my VGA got very hot = protection reset. (old desk, Quadro 2k) I'm thinking in others alternatives. The interaction is very good. Congrats. I liked it. Thank you!

Elven Jr

Some matters are better taught when the video is not showing a notebook. With regards to teh cloud desktop, I had some difficulties with the window slicer and occasionally with the keyboard inputs (in particular with backspace).

Christos Glymidakis

This was the fourth course I beta tested for this platform, it takes time to get used to this platform. Its great, once you get used to it.

Surendra Tanwar

This project was great! In a future project, I'd love to learn how you might deal with missing values or work with a data set that isn't so clean.

Krista Baker

This is my 2nd rhyme course. Although engaging with the material is outstanding, it would be useful to have key terms (e.g. callback) listed to learn prior or during.

Paul Kubicz

I am a machine learning engineer with focus in computer vision and sequence modelling for automated signal processing using deep learning techniques. My previous experiences include leading chatbot development for a large corporation.

##### How is this different from YouTube, PluralSight, Udemy, etc.?
In Rhyme, all projects are completely hands-on. You don't just passively watch someone else. You use the software directly while following the host's (Amit Yadav) instructions. Using the software is the only way to achieve mastery. With the "Live Guide" option, you can ask for help and get immediate response.
##### Is this session really free?
Absolutely! Your host (Amit Yadav) has provided this session completely free of cost!
##### Can I buy Rhyme sessions for my company or learning institution?
Absolutely. We offer Rhyme for workgroups as well larger departments and companies. Universities, academies, and bootcamps can also buy Rhyme for their settings. You can select projects and trainings that are mission critical for you and, as well, author your own that reflect your own needs and tech environments. Please email us at help@rhyme.com
##### What kind of accessibility options does Rhyme provide?
Rhyme strives to ensure that visual instructions are helpful for reading impairments. The Rhyme interface has features like resolution and zoom that will be helpful for visual impairments. And, we are currently developing a close-caption functionality to help with hearing impairments. Most of the accessibility options of the cloud desktop's operating system or the specific application can also be used in Rhyme. If you have questions related to accessibility, please email us at accessibility@rhyme.com
##### Why don't you just use containers or virtual browsers?
We started with windows and linux cloud desktops because they have the most flexibility in teaching any software (desktop or web). However, web applications like Salesforce can run directly through a virtual browser. And, others like Jupyter and RStudio can run on containers and be accessed by virtual browsers. We are currently working on such features where such web applications won't need to run through cloud desktops. But, the rest of the Rhyme learning, authoring, and monitoring interfaces will remain the same.
##### I have a different question
Please email us at help@rhyme.com and we'll respond to you within one business day.

## More Projects by Amit Yadav

38 minutes
54 minutes
###### Detecting COVID-19 with Chest X Ray using PyTorch
1 hour and 14 minutes
46 minutes
48 minutes
48 minutes
###### Starting GUI Programming with JavaFX
1 hour and 2 minutes
1 hour and 26 minutes
###### Amazon Sagemaker: Object Detection
1 hour and 12 minutes
###### Linear Regression with Python
1 hour and 4 minutes
55 minutes
###### Deep Learning Fundamentals - Logistic Regression
1 hour and 12 minutes
###### Amazon Sagemaker: Image Classification
1 hour and 8 minutes
###### TensorFlow (Beginner) - Basic Image Classification
1 hour and 10 minutes
53 minutes
43 minutes
###### TensorFlow (Advanced): Neural Style Transfer
1 hour and 5 minutes
56 minutes
54 minutes
58 minutes
###### Amazon Sagemaker: Semantic Segmentation
1 hour and 2 minutes
45 minutes
###### Understanding Deep Fakes with Keras
55 minutes
1 hour and 49 minutes
40 minutes
49 minutes
###### Create a Neural Network Visualizer Web App with Python
1 hour and 5 minutes
27 minutes
###### Amazon Sagemaker: Custom Training with TensorFlow
1 hour and 8 minutes
###### Custom Prediction Routines with Google AI Platform
1 hour and 8 minutes
49 minutes
###### Create Your First Chatbot with Rasa and Python
1 hour and 20 minutes
60 minutes
###### Create Your First Game with Python
1 hour and 4 minutes