Linear Regression Python Homework

Online tutoring services

Need help with this question or any other Engineering assignment help task? Click on the button below to to hire an expert cheap.

All of the information needed to complete the homework is within the assignment. Please let me know if you have any further questions if the assignment is not clear.

Get Help With a similar task to - Linear Regression Python Homework

Login to view and/or buy answers.. or post an answer
Additional Instructions:
{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "#### Note: Please change the filename before submitting by writing your first name<br> in place of 'StudentName....' ####\n", "As an example, if I were submitting the HW the file name would be 'Jagannath_INFO_4150_E_HW_1.ipynb'" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Import required modules for the exercise\n", "\n", "import numpy as np\n", "from matplotlib import pyplot as plt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### The Dataset to use ###\n", "\n", "Here I have created a numpy array with some arbitrary values and then shaped them to form the dataset we want to use for this homework. All operations are from the numpy package.\n", "The variable $x_0$ is never given and we will have to additionally insert it as a column. This data set has one independent variables $x$ and corresponding y values which is the dependent variable." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " The dataset is: \n", "[[1.5 2.2 ]\n", " [2. 2.3 ]\n", " [2.5 2.35 ]\n", " [2.75 2.325]\n", " [3. 2.4 ]\n", " [3.5 2.5 ]\n", " [4. 2.45 ]\n", " [4.5 2.55 ]]\n", "\n", " The X column vector is: \n", "[[1.5 ]\n", " [2. ]\n", " [2.5 ]\n", " [2.75]\n", " [3. ]\n", " [3.5 ]\n", " [4. ]\n", " [4.5 ]]\n", "\n", " The y column vector is\n", "[[2.2 ]\n", " [2.3 ]\n", " [2.35 ]\n", " [2.325]\n", " [2.4 ]\n", " [2.5 ]\n", " [2.45 ]\n", " [2.55 ]]\n", " \n", " Shape of X is:(8, 1) and shape of y is: (8, 1)\n", " \n", " Number of data points in the data set: 8\n" ] } ], "source": [ "# In this cell we create the dataset\n", "\n", "values = [1.5,2.2,2,2.3,2.5,2.35,2.75,2.325,3,2.4,3.5,2.5,4,2.45,4.5,2.55] # Create a list of 16 values.\n", "dataset = np.array(values) # Convert the list to a numpy array based dataset\n", "dataset = dataset.reshape(-1,2) # Reshape the array into 8x2 numpy array or 7x2 matrix.\n", "\n", "# The column 1 of this array or matrix corresponds to the 'X' value and column 2 the 'y' value.\n", "\n", "X = dataset[:,0].reshape(-1,1) # Numpy operation to assign the column 1 values to the variable X as a 8x1.\n", "y = dataset[:,1].reshape(-1,1) # Numpy operation to assign the column 2 values to the variable y as 8x1\n", "\n", "\n", "# Print out the values to check correctness. Please do notice the elegant formatting used so that\n", "# the outputs are clearly legible and well presented.\n", "\n", "print(f\" The dataset is: \\n{dataset}\\n\\n The X column vector is: \\n{X}\\n\\n The y column vector is\\n{y}\")\n", "print(f\" \\n Shape of X is:{X.shape} and shape of y is: {y.shape}\")\n", "print(f\" \\n Number of data points in the data set: {len(X)}\")" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "<function matplotlib.pyplot.show(close=None, block=None)>" ] }, "execution_count": 8, "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": [ "# Let us plot the data points to get a sense for the data\n", "# We shall use matplotlib to plot a scatter plot\n", "\n", "plt.scatter(X,y)\n", "plt.show" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " New shape of X is (8, 2), and the modified array X is: \n", " [[1. 1.5 ]\n", " [1. 2. ]\n", " [1. 2.5 ]\n", " [1. 2.75]\n", " [1. 3. ]\n", " [1. 3.5 ]\n", " [1. 4. ]\n", " [1. 4.5 ]]\n" ] } ], "source": [ "# Insert an extra column of x0 = 1 values in array X.\n", "\n", "X = np.insert(X,0,[1],axis=1) # Numpy function to insert column 0 with values of 1.\n", "print(f\" New shape of X is {X.shape}, and the modified array X is: \\n {X}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Matrices and Vectorization for a single data point (one row of data): ###\n", "$X = \\begin{bmatrix} x_0\\\\x_1\\end{bmatrix}$ and y = $[y_1]$ where $x_0 = 1$ always<br><br>\n", "and assume $\\Theta = \\begin{bmatrix} \\theta_0\\\\\\theta_1\\end{bmatrix}$ which are the intercept and slope of a line.<br><br>\n", "Therefore for the single data point, X above, we can write the equation in Matrix or Vecotrized form as:<br><br>\n", "$$\\pmb{y' = \\Theta^TX}$$<br> and if you do the Matrix multiplication we get back:<br><br>\n", "$y' = \\theta_0x_0 + \\theta_1x_1$<br><br>\n", "and using the terminology we have agreed upon it would be, the hypothesis or predicted value is:<br><br>\n", "$$\\pmb{h_\\theta(x) = \\Theta^TX}$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Vectorization of a complete dataset - example ###\n", "\n", "With the construct that we created above for a single data point, we can now extend the argument to a whole dataset with m data points in the following way:<br><br>\n", "We usually always have the values of every data point as a row. This example below, is a dataset with 2 variables $x_1,x_2$. <br>$x_0$ is the inserted variable and is equal to 1 and there are m data points in this dataset.<br><br>\n", "$X = \\begin{bmatrix} x_{10}&x_{11}&x_{12}\\\\x_{20}&x_{21}&x_{22}\\\\\\dots\\\\x_{i0}&x_{i1}&x_{i2}\\\\\\vdots\\\\x_{m0}&x_{m1}&x_{m2}\\end{bmatrix}$ and $y = \\begin{bmatrix} y_1\\\\y_2\\\\\\dots\\\\y_i\\\\\\vdots\\\\y_m\\end{bmatrix}$<br><br>\n", "We initialize $\\Theta = \\begin{bmatrix} \\theta_0\\\\\\theta_1\\\\\\theta_2\\end{bmatrix}$ because each data point is now $h_\\theta(x) = \\theta_0x_0 +\\theta_1x_1 + \\theta_2x2$<br><br>\n", "So X = m x 3 matrix and $\\Theta$ = 3 x 1 matrix, and therefore the vectorized form in this case will again be:<br><br>\n", "$\\pmb{h_\\theta(x) = X\\Theta}$ which will give us a m x 1 matrix as a result.<br><br>\n", "This is dimensionally correct as y is also a m x 1 matrix and now we can perform the $h_\\theta(x) - y$ operation, which with matrix operation is nothing but:<br><br>\n", "prediction error = $X\\Theta - y$<br><br>\n", "And finally, if you square this expresion and sum it up, you will get the value of J.<br><br>\n", "The final value of J = $\\pmb{\\frac{1}{2m}\\Sigma_m(X\\Theta - y)^2}$<br>\n", "and this will be the only line you will code to do a single shot estimation of J (without any \"for loops\", etc) in 1 iteration. The only for loop will be for the \"n iterations\" of calculating new J values for the new $\\Theta$ values after every gradient descent step. We do this to minimize the J value to its lowest." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### The next step would be to calculate the first step of Gradient Descent and update the $\\Theta$ values. ###\n", "We have our initialized $\\Theta$ column vector or matrix and the gradient descent step in each iteration should update these values. Mathematically that looks as follows:<br><br>\n", "$\\begin{bmatrix} \\theta_0\\\\\\theta_1\\end{bmatrix}=\\begin{bmatrix} \\theta_0\\\\\\theta_1\\end{bmatrix}-\\alpha\\begin{bmatrix}\\frac{\\partial J}{\\partial \\theta_0}\\\\\\frac{\\partial J}{\\partial \\theta_1}\\end{bmatrix}$<br><br>\n", "Where $\\alpha$ is the learning rate. The value of alpha should not be too large (causes oscilattion and never finds the lowest point) OR too small (gradient descent can take too many iterations to converge). A good starting value could be 0.01 or 0.001 and then one can tune it. <br><br> As one can see, again the update step is a single operation and all values of $\\Theta$ get updated simultaneously in each iteration because of the vectorized way of doing the computations.<br><br>\n", "On the slides in the lecture videos, I have already given the equations for the partial differentials $\\frac{\\partial J}{\\partial \\theta_0},\\frac{\\partial J}{\\partial \\theta_1}$ and you only have to implement them in code using matrix operations.\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Please code the 'for' loop within the area marked as #ToDo and #EndToDo\n", "# All other lines of code have already been provided and explained.\n", "# Code the for loop for 500 iterations.\n", "\n", "\n", "# Before the for loop, initial 2 empty lists 'J_hist' and 'iteration' to store values of J & iteration number.\n", "# Also initalize the value of alpha\n", "# Start the for loop and within it write the code for,\n", "# a) Compute the value J using the functions np.dot(),np.power(),sum(),np.sum() & len(x) in one line of code.\n", "# b) The line of code to compute the new theta values - the gradient descent part.\n", "# c) Store the value of J and the iteration number by appending to the empty lists created.\n", "\n", "J_hist = []\n", "iterations = []\n", "alpha = 0.001 \n", "theta = np.array([[1],[2]]) # Initialize theta as a 2x1 array or matrix containing theta0 and theta1\n", "\n", "#ToDo\n", "\n", " \n", " \n", "#EndToDo \n", "\n", "# If everything goes well the print statement should print \n", "# i) value of max J as 11.9436...\n", "# ii) value of min J as 0.09546...\n", "\n", "print(f\" Max value of J is: {max(J_hist)} \\n Min value of J is: {min(J_hist)} \\n Final value of theta is: \\n {theta}\")" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Plot the iterations versus J_hist curve\n", "# Use the matplotlib function 'plt.plot()'\n", "\n", "#ToDo\n", "\n", "#EndToDo\n", "\n", "plt.title(\"Gradient Descent Curve\")\n", "plt.xlabel('Iterations')\n", "plt.ylabel('J')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Write Observations if any in this Cell" ] }, { "cell_type": "code", "execution_count": null, "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.8.8" } }, "nbformat": 4, "nbformat_minor": 4 }

Related Questions

Similar orders to Linear Regression Python Homework
20
Views
0
Answers
Create a Simple Blackjack Game in c++
I need the code for a simple 1 player vs computer blackjack game code. The game is blackjack, and the code doesn't have to be very advanced and professional. I’m barely on the principal engineering classes of college....
26
Views
0
Answers
information on refrigeration systems
information on completing some questions on refrigeration systems souch as 3. A refrigeration system control circuit has a low-pressure control and a thermostat connected. If the low-pressure control is intended to be a safety control against loss of charge, describe how the electrical connection may be made between the thermostat, the low-pressure control and the motor circuit? You may illustrate your answer with a simple circuit diagram...
40
Views
0
Answers
mine surveying and geo infomatics
I need the calculation and mapping work to be done. Point 3 and 8: See additional notes on manual plotting. As instructed both points can be combined in the same map. You will require a ruler and protractor for the manual plotting. Point4: As instructed perform a traverse calculation and adjustment covered in lecture and workshop 4 (in particular workshop example 3). Some basic calculation principles (e.g. transfer of bearings, polar and join calculations) are covered in lecture 3 and workshop 3. All relevant traverse observations are provided in the instructions in relation to practical 3. As instructed in relation to practical 3, before you can perform the traverse calculation you need to reduce the horizontal direction measurements to derive the respective mean (total) angles (see lecture and workshop 3 as well as appendix to the assessment description for examples). Also reduce the horizontal distances (HD) to mean distances. Point 5: As instructed, use the trigonometric levelling principle, which is covered in lecture 3 as well as appendix to the assessment description. All relevant measurements (e.g. vertical distances VD, instrument heights HI and target heig...
59
Views
0
Answers
Timber task Combined Actions Capacity
Must use AS1720.1 (2010) A bottom chord of a primary indoor roof truss in a resort in Darwin (NT) is made of 90x35 mm seasoned GL12 grade radiata pine. The owner of the building wants to hang a permanent display from the centre of the bottom chord as shown in below Figure. You have been asked to check the performance of the bottom chord under the total loads caused by the display and strength limit in the truss:Factored vertical downwards permanent load at mid span of the bottom chord = 8 kNFactored permanent compression in the bottom chord = 30 kNThere are no restraints against buckling other than at the ends of the member. The point load itself will not provide any lateral restraint. The connections at each end will be provided by four 12 mm bolts in 14 mm holes. Check the capacity of the bottom chord for combined actions.8kN...