Skip to content

Latest commit

 

History

History
152 lines (101 loc) · 4.1 KB

File metadata and controls

152 lines (101 loc) · 4.1 KB

Homework

Note: sometimes your answer doesn't match one of the options exactly. That's fine. Select the option that's closest to your solution.

Dataset

In this homework, we will use the California Housing Prices from Kaggle.

Here's a wget-able link:

wget https://raw.githubusercontent.com/alexeygrigorev/datasets/master/housing.csv

The goal of this homework is to create a regression model for predicting housing prices (column 'median_house_value').

EDA

  • Load the data.
  • Look at the median_house_value variable. Does it have a long tail?

Preparing the dataset

For this homework, we only want to use a subset of data.

First, keep only the records where ocean_proximity is either '<1H OCEAN' or 'INLAND'

Next, use only the following columns:

  • 'latitude',
  • 'longitude',
  • 'housing_median_age',
  • 'total_rooms',
  • 'total_bedrooms',
  • 'population',
  • 'households',
  • 'median_income',
  • 'median_house_value'

Question 1

There's one feature with missing values. What is it?

  • total_rooms
  • total_bedrooms
  • population
  • households

Question 2

What's the median (50% percentile) for variable 'population'?

  • 995
  • 1095
  • 1195
  • 1295

Prepare and split the dataset

  • Shuffle the dataset (the filtered one you created above), use seed 42.
  • Split your data in train/val/test sets, with 60%/20%/20% distribution.
  • Apply the log transformation to the median_house_value variable using the np.log1p() function.

Question 3

  • We need to deal with missing values for the column from Q1.
  • We have two options: fill it with 0 or with the mean of this variable.
  • Try both options. For each, train a linear regression model without regularization using the code from the lessons.
  • For computing the mean, use the training only!
  • Use the validation dataset to evaluate the models and compare the RMSE of each option.
  • Round the RMSE scores to 2 decimal digits using round(score, 2)
  • Which option gives better RMSE?

Options:

  • With 0
  • With mean
  • Both are equally good

Question 4

  • Now let's train a regularized linear regression.
  • For this question, fill the NAs with 0.
  • Try different values of r from this list: [0, 0.000001, 0.0001, 0.001, 0.01, 0.1, 1, 5, 10].
  • Use RMSE to evaluate the model on the validation dataset.
  • Round the RMSE scores to 2 decimal digits.
  • Which r gives the best RMSE?

If there are multiple options, select the smallest r.

Options:

  • 0
  • 0.000001
  • 0.001
  • 0.0001

Question 5

  • We used seed 42 for splitting the data. Let's find out how selecting the seed influences our score.
  • Try different seed values: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9].
  • For each seed, do the train/validation/test split with 60%/20%/20% distribution.
  • Fill the missing values with 0 and train a model without regularization.
  • For each seed, evaluate the model on the validation dataset and collect the RMSE scores.
  • What's the standard deviation of all the scores? To compute the standard deviation, use np.std.
  • Round the result to 3 decimal digits (round(std, 3))

What's the value of std?

  • 0.5
  • 0.05
  • 0.005
  • 0.0005

Note: Standard deviation shows how different the values are. If it's low, then all values are approximately the same. If it's high, the values are different. If standard deviation of scores is low, then our model is stable.

Question 6

  • Split the dataset like previously, use seed 9.
  • Combine train and validation datasets.
  • Fill the missing values with 0 and train a model with r=0.001.
  • What's the RMSE on the test dataset?

Options:

  • 0.13
  • 0.23
  • 0.33
  • 0.43

Submit the results

  • Submit your results here: https://forms.gle/nNUTLzz3F9KiFHNp9
  • If your answer doesn't match options exactly, select the closest one.
  • You can submit your solution multiple times. In this case, only the last submission will be used

Deadline

The deadline for submitting is September 25 (Monday), 23:00 CET. After that the form will be closed.