Sto cercando di implementare questo algoritmo per trovare l'intercetta e la pendenza per la sola variabile:regressione lineare semplice in Python
Ecco il mio codice Python per aggiornare l'intercetta e pendenza. Ma non sta convergendo. RSS sta aumentando con Iterazione piuttosto che diminuendo e dopo qualche iterazione sta diventando infinita. Non sto riscontrando alcun errore nell'implementazione dell'algoritmo. Come posso risolvere questo problema? Ho allegato anche il file CSV. Ecco il codice.
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 è il file CSV.
; P è presso l'University of Washington di classe macchina leanring, l'ho preso troppo, è stato molto divertente e illuminante. Ti suggerisco di usare il forum su coursera e puoi ottenere ottime risposte da mentori, volontari e compagni di studio. https://www.coursera.org/learn/ml-regression/discussions – alvas