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

Localweighted - Jupyter Notebook

This document explores using local weighted linear regression to predict tip amounts from total bill amounts in a dataset containing restaurant tips. It loads and prepares the data, defines functions for the local weighted regression approach, applies the model to predict tips and plots the actual and predicted values.

Uploaded by

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

Localweighted - Jupyter Notebook

This document explores using local weighted linear regression to predict tip amounts from total bill amounts in a dataset containing restaurant tips. It loads and prepares the data, defines functions for the local weighted regression approach, applies the model to predict tips and plots the actual and predicted values.

Uploaded by

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

5/8/24, 10:16 AM localweighted - Jupyter Notebook

In [1]: import numpy as np



import pandas as pd

import matplotlib.pyplot as plt

In [2]: data = pd.read_csv('tips.csv')



print("\n Input Data \n\n\n", data.head())

Input Data

total_bill tip sex smoker day time size


0 16.99 1.01 Female No Sun Dinner 2
1 10.34 1.66 Male No Sun Dinner 3
2 21.01 3.50 Male No Sun Dinner 3
3 23.68 3.31 Male No Sun Dinner 2
4 24.59 3.61 Female No Sun Dinner 4

In [3]: #Take the first and second column of the data


colA = np.array(data.total_bill)

colB= np.array(data.tip)

#Convert these columns to numpy matrices
mcolA = np.mat(colA) #total_bill

mcolB = np.mat(colB) #tip

In [4]: print(np.shape(colA))
print(np.shape(mcolA))
print(np.shape(colB))
print(np.shape(mcolB))

(244,)
(1, 244)
(244,)
(1, 244)

In [5]: m= np. shape (mcolB)[1] #mhas stored number of columns


one= np.ones((1, m), dtype = int) #Prepared a ones matrix

In [6]: # horizontal stacking to prepare input matrix



X = np.hstack((one.T, mcolA.T)) # X is Input matrix: Transpose of one matri

print(X.shape)

#print(X)

(244, 2)

localhost:8888/notebooks/localweighted.ipynb 1/4
5/8/24, 10:16 AM localweighted - Jupyter Notebook

In [7]: def kernel(point, xmat, k):


m,n = np.shape(xmat)
weights = np.eye(m) #Identity matrix
for j in range(m):
diff = point - X[j] #numerator
weights[j, j] = np.exp(diff * diff.T/(-2.0 * k**2))
return weights

In [8]: def localWeight (point, xmat, ymat, k):


wt = kernel (point, xmat, k)
W = (X.T * (wt*X)).I * (X.T * wt * ymat.T)
return W

In [9]: def localweightRegression(xmat, ymat, k):


m,n = np.shape(xmat) # Capture the shape of input matrix
ypred = np.zeros(m) # initializeoutput matrix from ZEROS

for i in range(m):
ypred[i] = xmat[i] * localWeight(xmat[i], xmat, ymat, k)
return ypred

In [10]: ypred = localweightRegression(X,mcolB, 0.5)

localhost:8888/notebooks/localweighted.ipynb 2/4
5/8/24, 10:16 AM localweighted - Jupyter Notebook

In [11]: print(ypred)

[ 2.89600072 1.79792676 3.4522923 3.52469879 3.55735533 4.30366513


1.74542033 3.3728316 2.44785581 2.48880782 1.8083104 4.79767983
2.4062242 2.96892092 2.48153633 3.60296925 1.79915825 2.69663122
2.89434019 3.31271154 2.99001488 3.16455055 2.45092913 5.81565108
3.01841158 2.97028536 2.25892138 2.0276448 3.60793899 2.97252695
1.95484881 2.99194322 2.44464168 3.32920123 2.96499951 3.21755765
2.7072132 2.89066608 2.88520305 4.24629839 2.56138533 2.92431206
2.4541946 1.95650777 3.76134349 3.00455741 3.53901817 4.09179973
3.66290968 3.00808646 2.0045738 1.80493014 4.74741353 1.89792722
4.27129464 2.93423809 3.43543432 3.4808215 1.94126954 7.23057352
3.16455055 2.41735695 1.88491665 3.00455741 2.93692617 3.09292596
2.77475539 1. 3.14256163 2.45273299 2.00874844 2.90170782
3.36328249 4.29987815 2.49550941 1.79043042 2.99001488 3.59729086
3.57479198 2.91358841 2.92392492 2.84629776 1.85736502 3.64623342
2.53190263 4.74356864 2.12713771 3.00620863 3.72100147 3.50603051
3.89403235 3.48271177 1.00112776 2.71243715 3.56803152 4.72571737
3.64447065 2.00820525 3.4522923 1.99806175 1.96577236 2.40748575
2.73357888 3.49064434 3.41892711 2.40849865 3.24526888 4.2646515
3.01146825 2.51405069 2.46876909 2.66849559 3.43658805 3.28533993
4.15216662 2.91465427 4.00576716 1.80257051 1.99658663 3.20974122
2.01171454 2.27845294 2.5103734 2.51807015 1.99932995 4.09338498
1.67174976 2.51473657 1.97178927 3.61791048 2.87096561 3.1570832
1.92407281 1.99643407 3.00910865 1.6698732 1.79915825 2.49729675
2.54147716 2.17623457 2.92511195 5.25976981 4.85670868 3.48788364
2.76596129 1.6615036 2.89846777 2.01463497 1.94169058 2.19910914
2.48355546 2.16463303 2.91203372 3.50429058 3.00467675 4.06514336
4.81733982 4.08416499 2.26675738 2.79134571 3.59411672 2.02187921
2.65306522 2.41735695 2.92857426 3.46560955 3.35741098 4.29599956
1.79551232 1.79993042 10.00000018 2.46330009 2.66849559 4.28421141
2.87744196 3.10778925 2.98471053 2.51633495 1.95831242 4.86189257
4.8411461 3.75181006 3.49981959 3.78290831 4.09278339 3.32920123
3.4114179 3.79013071 3.0155603 3.77491673 2.43081117 3.01565605
3.66451838 2.4064311 2.82356452 2.13199516 1.79792676 4.99343222
2.11637142 2.31297787 2.88065888 2.0384983 2.11637142 2.75218276
3.26218779 2.78322035 3.36532098 4.25846558 3.22538732 2.04326216
3.88698994 3.96972235 8.6847072 2.21946704 3.74312332 2.08272891
3.74790142 2.00369567 1.94456856 3.81795418 2.00085407 2.27845294
1.68568026 2.53190263 2.27845294 2.68589476 1.8514574 3.22847809
2.22342127 3.56617451 3.24368916 2.43081117 2.00568726 1.82360332
2.40872825 1.85736502 2.01207171 3.26367062 4.73341892 3.93042418
3.58402268 3.52143297 2.97207458 2.86850167]

localhost:8888/notebooks/localweighted.ipynb 3/4
5/8/24, 10:16 AM localweighted - Jupyter Notebook

In [12]: import matplotlib.pyplot as plt



xsort = X.copy()
xsort.sort(axis=0)

plt.scatter(colA, colB, color='blue')
plt.plot(xsort[:, 1], ypred[X[:, 1].argsort(0)], color='yellow', linewidth=
plt.xlabel('Total Bill')
plt.ylabel('Tip')
plt.show()

In [ ]: ​

In [ ]: ​

In [ ]: ​

In [ ]: ​

localhost:8888/notebooks/localweighted.ipynb 4/4

You might also like