I am trying to implement this algorithm to find the intercept and slope for a single variable:

ALGORITHM OF THE LINEAR REGRESSION

Here is my Python code to update the Intercept and slope. But it is not converging. RSS is Increasing with Iteration rather than decreasing and after some iteration, it's becoming infinite. I am not finding any error in implementing the algorithm. How Can I solve this problem? I have attached the csv file too. Here is the code.

import pandas as pd

import numpy as np

#Defining gradient_decend

#This Function takes X value, Y value and vector of w0(intercept),w1(slope)

#INPUT FEATURES=X(sq.feet of house size)

#TARGET VALUE=Y (Price of House)

#W=np.array([w0,w1]).reshape(2,1)

#W=[w0,

# w1]

def gradient_decend(X,Y,W):

intercept=W[0][0]

slope=W[1][0]

#Here i will get a list

#list is like this

#gd=[sum(predicted_value-(intercept+slope*x)),

# sum(predicted_value-(intercept+slope*x)*x)]

gd=[sum(y-(intercept+slope*x) for x,y in zip(X,Y)),

sum(((y-(intercept+slope*x))*x) for x,y in zip(X,Y))]

return np.array(gd).reshape(2,1)

#Defining Resudual sum of squares

def RSS(X,Y,W):

return sum((y-(W[0][0]+W[1][0]*x))**2 for x,y in zip(X,Y))

#Reading Training Data

training_data=pd.read_csv("kc_house_train_data.csv")

#Defining fixed parameters

#Learning Rate

n=0.0001

iteration=1500

#Intercept

w0=0

#Slope

w1=0

#Creating 2,1 vector of w0,w1 parameters

W=np.array([w0,w1]).reshape(2,1)

#Running gradient Decend

for i in range(iteration):

W=W+((2*n)* (gradient_decend(training_data["sqft_living"],training_data["price"],W)))

print RSS(training_data["sqft_living"],training_data["price"],W)

Here is the CSV file.