Gradient Descent & Linear Regression

 

 

 

import csv
import random as rd
import matplotlib.pyplot as plt
Inf=1e9

data=csv.reader(open("dataII.csv","r"))

L=list(data);X=[];Y=[]
for row in L:
    X.append(float(row[0]));Y.append(float(row[1]))
N=len(X);step=0.0001

#a=rd.uniform(-Inf,Inf)
#b=float(rd.randint(-100,100))
a=0;b=0
for count2 in range(1000):
    tmp=0.0
    for i in range(N):
        tmp+=a*X[i]*X[i]+b*X[i]-X[i]*Y[i]
    tmp/=N
    aa=a-step*tmp

    tmp=0.0
    for i in range(N):
        tmp+=a*X[i]+b-Y[i]
    tmp/=N
    bb=b-step*tmp

    a=aa
    b=bb

    Q=0.0
    for i in range(N):
        Q+=(a*X[i]+b-Y[i])*(a*X[i]+b-Y[i])
    Q/=(2.0*N)
    print(a,b,Q)

 

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325419555&siteId=291194637