import numpy as np
class LinearRegression:
def __init__(self):
pass
def __compute(self, x, y):
try:
'''
# multiline code
var = np.dot(x.T,x)
var = np.linalg.inv(var)
var = np.dot(var,x.T)
var = np.dot(var,y)
self.__thetas = var
'''
# one line code
self.__thetas = np.dot(np.dot(np.linalg.inv(np.dot(x.T,x)),x.T),y)
except Exception as e:
raise e
def fit(self, x, y):
x = np.array(x)
ones_ = np.ones(x.shape[0])
x = np.c_[ones_,x]
y = np.array(y)
self.__compute(x,y)
@property
def coef_(self):
return self.__thetas[0]
@property
def intercept_(self):
return self.__thetas[1:]
def predict(self, x):
try:
x = np.array(x)
ones_ = np.ones(x.shape[0])
x = np.c_[ones_,x]
result = np.dot(x,self.__thetas)
return result
except Exception as e:
raise e
# testing of code...
# datasets
x_train = [[2,40],[5,15],[8,19],[7,25],[9,16]]
y_train = [194.4, 85.5, 107.1, 132.9, 94.8]
x_test = [[12,32],[2,40]]
y_test = []
# testing the model...
lr = LinearRegression()
lr.fit(x,y)
print(lr.coef_,lr.intercept_)
print(lr.predict(x_t))