382 lines
36 KiB
Plaintext
382 lines
36 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "specialized-stanley",
|
|
"metadata": {},
|
|
"source": [
|
|
"# Ungraded Lab: Model Representation\n",
|
|
"\n",
|
|
"In this ungraded lab, you will implement the model $f$ for linear regression with one variable.\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "active-bernard",
|
|
"metadata": {},
|
|
"source": [
|
|
"## Problem Statement\n",
|
|
"\n",
|
|
"You will use the motivating example of housing price prediction again. For sake of simplicity, let's assume that you just have two data points - a house with 1000 square feet sold for \\\\$200,000 and a house with 2000 square feet sold for \\\\$400,000.\n",
|
|
"\n",
|
|
"Therefore, your dataset contains the following two points - \n",
|
|
"\n",
|
|
"| Size (feet$^2$) | Price (1000s of dollars) |\n",
|
|
"| -------------------| ------------------------ |\n",
|
|
"| 1000 | 200 |\n",
|
|
"| 2000 | 400 |\n",
|
|
"\n",
|
|
"You'd like to fit a linear regression model (represented with a straight line) through these two points, so you can then predict price for other houses - say, a house with 1200 feet$^2$.\n",
|
|
"\n",
|
|
"### Notation: `X` and `y`\n",
|
|
"\n",
|
|
"For the next few labs, you will use lists in python to represent your dataset. As shown in the video:\n",
|
|
"- `X` represents input variables, also called input features (in this case - Size (feet$^2$)) and \n",
|
|
"- `y` represents output variables, also known as target variables (in this case - Price (1000s of dollars)). \n",
|
|
"\n",
|
|
"Please run the following code cell to create your `X` and `y` variables."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 10,
|
|
"id": "headed-custom",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# X is the input variable (size in square feet)\n",
|
|
"# y in the output variable (price in 1000s of dollars)\n",
|
|
"X = [1000, 2000] \n",
|
|
"y = [200, 400]"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "dependent-attribute",
|
|
"metadata": {},
|
|
"source": [
|
|
"### Number of training examples `m`\n",
|
|
"You will use `m` to denote the number of training examples. In Python, use the `len()` function to get the number of examples in a list. You can get `m` by running the next code cell."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 11,
|
|
"id": "novel-vessel",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Number of training examples is: 2\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# m is the number of training examples\n",
|
|
"m = len(X)\n",
|
|
"print(\"Number of training examples is: %d\" %m)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "permanent-uncertainty",
|
|
"metadata": {},
|
|
"source": [
|
|
"### Training example `x_i, y_i`\n",
|
|
"\n",
|
|
"You will use (x$^i$, y$^i$) to denote the $i^{th}$ training example. Since Python is zero indexed, (x$^0$, y$^0$) is (1000, 200) and (x$^1$, y$^1$) is (2000, 300). \n",
|
|
"\n",
|
|
"Run the next code block below to get the $i^{th}$ training example in a Python list."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 12,
|
|
"id": "executive-chick",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"(x^(0), y^(0)) = (1000, 200)\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"i = 0 # Change this to 1 to see (x^1, y^1)\n",
|
|
"\n",
|
|
"x_i = X[i]\n",
|
|
"y_i = y[i]\n",
|
|
"print(\"(x^(%d), y^(%d)) = (%d, %d)\" %(i, i, x_i, y_i))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "solid-sharing",
|
|
"metadata": {},
|
|
"source": [
|
|
"### Plotting the data\n",
|
|
"First, let's run the cell below to import [matplotlib](http://matplotlib.org), which is a famous library to plot graphs in Python. "
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 13,
|
|
"id": "designing-sociology",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"import matplotlib.pyplot as plt"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "virgin-germany",
|
|
"metadata": {},
|
|
"source": [
|
|
"You can plot these two points using the `scatter()` function in the `matplotlib` library, as shown in the cell below. \n",
|
|
"- The function arguments `marker` and `c` show the points as red crosses (the default is blue dots).\n",
|
|
"\n",
|
|
"You can also use other functions in the `matplotlib` library to display the title and labels for the axes."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 14,
|
|
"id": "reduced-cartoon",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"Text(0.5, 0, 'Size (feet^2)')"
|
|
]
|
|
},
|
|
"execution_count": 14,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "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\n",
|
|
"text/plain": [
|
|
"<Figure size 432x288 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {
|
|
"needs_background": "light"
|
|
},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"# Plot the data points\n",
|
|
"plt.scatter(X, y, marker='x', c='r')\n",
|
|
"\n",
|
|
"# Set the title\n",
|
|
"plt.title(\"Housing Prices\")\n",
|
|
"# Set the y-axis label\n",
|
|
"plt.ylabel('Price (in 1000s of dollars)')\n",
|
|
"# Set the x-axis label\n",
|
|
"plt.xlabel('Size (feet^2)')"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "level-nirvana",
|
|
"metadata": {},
|
|
"source": [
|
|
"## Model function\n",
|
|
"\n",
|
|
"The model function for linear regression (which is a function that maps from `X` to `y`) is represented as \n",
|
|
"\n",
|
|
"$f(x) = w_0 + w_1x$\n",
|
|
"\n",
|
|
"The formula above is how you can represent straight lines - different values of $w_0$ and $w_1$ give you different straight lines on the plot. Let's try to get a better intuition for this through the code blocks below.\n",
|
|
"\n",
|
|
"Let's represent $w$ as a list in python, with $w_0$ as the first item in the list and $w_1$ as the second. \n",
|
|
"\n",
|
|
"Let's start with $w_0 = 3$ and $w_1 = 1$ \n",
|
|
"\n",
|
|
"### Note: You can come back to this cell to adjust the model's w0 and w1 parameters"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 29,
|
|
"id": "temporal-investor",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"w_0: 1\n",
|
|
"w_1: 0.2\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# You can come back here later to adjust w0 and w1\n",
|
|
"w = [1, 0.2] \n",
|
|
"print(\"w_0:\", w[0])\n",
|
|
"print(\"w_1:\", w[1])"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "capable-westminster",
|
|
"metadata": {},
|
|
"source": [
|
|
"Now, let's calculate the value of $f(x)$ for your two data points. You can explicitly write this out for each data point as - \n",
|
|
"\n",
|
|
"for $x^0$, `f = w[0]+w[1]*X[0]`\n",
|
|
"\n",
|
|
"for $x^1$, `f = w[0]+w[1]*X[1]`\n",
|
|
"\n",
|
|
"For a large number of data points, this can get unwieldy and repetitive. So instead, you can calculate the function output in a `for` loop as follows - \n",
|
|
"\n",
|
|
"```\n",
|
|
"f = []\n",
|
|
"for i in range(len(X)):\n",
|
|
" f_x = w[0] + w[1]*X[i]\n",
|
|
" f.append(f_x)\n",
|
|
"```\n",
|
|
"\n",
|
|
"Paste the code shown above in the `calculate_model_output` function below."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 30,
|
|
"id": "tracked-bubble",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"def calculate_model_output(w, X):\n",
|
|
" \n",
|
|
" ### START CODE HERE ### \n",
|
|
" \n",
|
|
" ### END CODE HERE ###\n",
|
|
" return f"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "blind-vocabulary",
|
|
"metadata": {},
|
|
"source": [
|
|
"Now let's call the `calculate_model_output` function and plot the output using the `plot` method from `matplotlib` libarary."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 31,
|
|
"id": "blocked-franklin",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"Text(0.5, 0, 'Size (feet^2)')"
|
|
]
|
|
},
|
|
"execution_count": 31,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "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\n",
|
|
"text/plain": [
|
|
"<Figure size 432x288 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {
|
|
"needs_background": "light"
|
|
},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"f = calculate_model_output(w, X)\n",
|
|
"\n",
|
|
"# Plot our hypothesis\n",
|
|
"plt.plot(X, f, c='b')\n",
|
|
"\n",
|
|
"# Plot the data points\n",
|
|
"plt.scatter(X, y, marker='x', c='r')\n",
|
|
"\n",
|
|
"# Set the title\n",
|
|
"plt.title(\"Housing Prices\")\n",
|
|
"# Set the y-axis label\n",
|
|
"plt.ylabel('Price (in 1000s of dollars)')\n",
|
|
"# Set the x-axis label\n",
|
|
"plt.xlabel('Size (feet^2)')"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "dominican-panel",
|
|
"metadata": {},
|
|
"source": [
|
|
"As you can see, $w_0 = 2$ and $w_1 = 1$ does not result in a line that fits our data. \n",
|
|
"\n",
|
|
"### Challenge\n",
|
|
"Try experimenting with different values of $w_0$ and $w_1$. What should the values be for getting a line that fits our data?\n",
|
|
"\n",
|
|
"#### Tip:\n",
|
|
"You can use your mouse to click on the triangle to the left of the green \"Hints\" below to reveal some hints for choosing w0 and w1."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "respected-median",
|
|
"metadata": {},
|
|
"source": [
|
|
"<details>\n",
|
|
"<summary>\n",
|
|
" <font size='3', color='darkgreen'><b>Hints</b></font>\n",
|
|
"</summary>\n",
|
|
" <p>\n",
|
|
" <ul>\n",
|
|
" <li>Try w0 = 1 and w1 = 0.5, or w = [0, 0.2] </li>\n",
|
|
" </ul>\n",
|
|
" </p>"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "recreational-tennis",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
}
|
|
],
|
|
"metadata": {
|
|
"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.9.1"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 5
|
|
}
|