0% found this document useful (0 votes)
61 views4 pages

Machine Learning Lab: Raheel Aslam (74-FET/BSEE/F16)

The document contains code for simple and multiple linear regression models. It includes code to estimate coefficients, plot regression lines, and evaluate models on test data. The code is accompanied by output showing estimated coefficients and model performance.

Uploaded by

Raheel Aslam
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
61 views4 pages

Machine Learning Lab: Raheel Aslam (74-FET/BSEE/F16)

The document contains code for simple and multiple linear regression models. It includes code to estimate coefficients, plot regression lines, and evaluate models on test data. The code is accompanied by output showing estimated coefficients and model performance.

Uploaded by

Raheel Aslam
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 4

LAB#05 Raheel Aslam (74-FET/BSEE/F16)

Machine Learning Lab


Code for Simple linear regression:
import numpy as np
import matplotlib.pyplot as plt
def estimate_coef(x, y):
# number of observations/points
n = np.size(x)

# mean of x and y vector


m_x, m_y = np.mean(x), np.mean(y)

# calculating cross-deviation and deviation about x


SS_xy = np.sum(y*x) - n*m_y*m_x
SS_xx = np.sum(x*x) - n*m_x*m_x

# calculating regression coefficients


b_1 = SS_xy / SS_xx
b_0 = m_y - b_1*m_x

return(b_0, b_1)

def plot_regression_line(x, y, b):


# plotting the actual points as scatter plot
plt.scatter(x, y, color = "m",
marker = "o", s = 30)

# predicted response vector


y_pred = b[0] + b[1]*x

# plotting the regression line


plt.plot(x, y_pred, color = "g")

# putting labels
plt.xlabel('x')
plt.ylabel('y')

# function to show plot


plt.show()
def main():
# observations
x = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
y = np.array([1, 3, 2, 5, 7, 8, 8, 9, 10, 12])

# estimating coefficients
b = estimate_coef(x, y)
print("Estimated coefficients:\nb_0 = {} \ \nb_1 = {}".format(b[0], b[1]))

# plotting regression line


plot_regression_line(x, y, b)
if __name__ =="__main__":
main()

Output:
Estimated coefficients:
b_0 = 1.2363636363636363 \
b_1 = 1.1696969696969697

Code for Multiple linear regression:

import matplotlib.pyplot as plt


import numpy as np
from sklearn import datasets, linear_model, metrics

# load the boston dataset


boston = datasets.load_boston(return_X_y=False)

# defining feature matrix(X) and response vector(y)


X = boston.data
y = boston.target

# splitting X and y into training and testing sets


from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25,
random_state=1)

# create linear regression object


reg = linear_model.LinearRegression()

# train the model using the training sets


reg.fit(X_train, y_train)

# regression coefficients
print('Coefficients: \n', reg.coef_)

# variance score: 0 means perfect prediction


print('Variance score: {}'.format(reg.score(X_test, y_test)))

# plot for residual error

## setting plot style


plt.style.use('fivethirtyeight')

## plotting residual errors in training data


plt.scatter(reg.predict(X_train), reg.predict(X_train) - y_train, color = "green", s
= 9, label = 'Train data')

## plotting residual errors in test data


plt.scatter(reg.predict(X_test), reg.predict(X_test) - y_test,color = "blue", s = 9,
label = 'Test data')

## plotting line for zero residual error


plt.hlines(y = -1, xmin = 0, xmax = 50, linewidth = 2)

## plotting legend
plt.legend(loc = 'upper right')

## plot title
plt.title("Residual errors")

## function to show plot


plt.show()

Output:
Coefficients:
[-1.14428903e-01 5.71299780e-02 3.83002824e-02 2.42854641e+00
-2.12326236e+01 2.87723416e+00 6.91118094e-03 -1.47158266e+00
3.05784197e-01 -1.06750361e-02 -9.96138270e-01 6.27746234e-03
-5.57414427e-01]
Variance score: 0.7789410172622865

You might also like