Skip to content

Commit

Permalink
Linear regression by python--refer issue no. 487 (#542)
Browse files Browse the repository at this point in the history
* decision tree

* linear_regression

* Rename Machine_Learning/linear_regression.py to Machine_Learning/Linear_Regression/Linear_Regression.py
  • Loading branch information
mani1soni authored and jainaman224 committed Mar 15, 2019
1 parent 3ceb4f6 commit 03cbd5d
Showing 1 changed file with 78 additions and 0 deletions.
78 changes: 78 additions & 0 deletions Machine_Learning/Linear_Regression/Linear_Regression.py
@@ -0,0 +1,78 @@
#!/usr/bin/env-python3
import requests
import numpy as np


def collect_dataset():

response = requests.get('https://raw.githubusercontent.com/yashLadha/' +
'The_Math_of_Intelligence/master/Week1/ADRvs' +
'Rating.csv')
lines = response.text.splitlines()
data = []
for item in lines:
item = item.split(',')
data.append(item)
data.pop(0) # This is for removing the labels from the list
dataset = np.matrix(data)
return dataset


def run_steep_gradient_descent(data_x, data_y,
len_data, alpha, theta):

n = len_data

prod = np.dot(theta, data_x.transpose())
prod -= data_y.transpose()
sum_grad = np.dot(prod, data_x)
theta = theta - (alpha / n) * sum_grad
return theta


def sum_of_square_error(data_x, data_y, len_data, theta):

error = 0.0
prod = np.dot(theta, data_x.transpose())
prod -= data_y.transpose()
sum_elem = np.sum(np.square(prod))
error = sum_elem / (2 * len_data)
return error


def run_linear_regression(data_x, data_y):

iterations = 100000
alpha = 0.0001550

no_features = data_x.shape[1]
len_data = data_x.shape[0] - 1

theta = np.zeros((1, no_features))

for i in range(0, iterations):
theta = run_steep_gradient_descent(data_x, data_y,
len_data, alpha, theta)
error = sum_of_square_error(data_x, data_y, len_data, theta)
print('At Iteration %d - Error is %.5f ' % (i + 1, error))

return theta


def main():

data = collect_dataset()

len_data = data.shape[0]
data_x = np.c_[np.ones(len_data), data[:, :-1]].astype(float)
data_y = data[:, -1].astype(float)

theta = run_linear_regression(data_x, data_y)
len_result = theta.shape[1]
print('Resultant Feature vector : ')
for i in range(0, len_result):
print('%.5f' % (theta[0, i]))


if __name__ == '__main__':
main()

0 comments on commit 03cbd5d

Please sign in to comment.