Реализация линейной регрессии, значения весов увеличиваются до InfPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Реализация линейной регрессии, значения весов увеличиваются до Inf

Сообщение Anonymous »

Я реализую программу, которая выполняет линейную регрессию на следующем наборе данных:
http://www.rossmanchance.com/iscam2/data/housing.txtМоя программа следующая:

Код: Выделить всё

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

def abline(X,theta,Y):
yValues=calcH(X,theta)
plt.xlim(0, 5000)
plt.ylim(0, 2000000)
plt.xlabel("sqft")
plt.ylabel("price")
plt.gca().set_aspect(0.001, adjustable='box')
plt.plot(X,Y,'.',X, yValues, '-')
plt.show()

def openFile(fileR):
f=pd.read_csv(fileR,sep="\t")
header=f.columns.values
prediction=f["price"]
X=f["sqft"]
gradientDescent(0.0005,100,prediction,X)

def calcH(X,theta):
h=np.dot(X,theta)
return h

def calcC(X,Y,theta):
d=((calcH(X,theta)-Y)**2).mean()/2
return d

def gradientDescent(learningRate,itera, Y, X):
t0=[]
t1=[]
cost=[]
theta=np.zeros(2)
X=np.column_stack((np.ones(len(X)),X))
for i in range(itera):
h_theta=calcH(X,theta)
theta0=theta[0]-learningRate*(Y-h_theta).mean()
theta1=theta[1]-learningRate*((Y-h_theta)*X[:,1]).mean()
theta=np.array([theta0,theta1])
j=calcC(X,Y,theta)
t0.append(theta0)
t1.append(theta1)
cost.append(j)
if (i%10==0):
print ("iteration ",i,"cost ",j,"theta ",theta)
abline(X,theta,Y)
Проблема в том, что когда я получаю результаты, значения теты заканчиваются Inf. Я тестировал всего 3 итерации, и некоторые значения следующие:

Код: Выделить всё

iteration  0 cost  9.948977633931098e+21 theta  [-2.47365759e+04 -6.10382173e+07]
iteration  1 cost  7.094545903263138e+32 theta  [-6.46495395e+09 -1.62995849e+13]
iteration  2 cost  5.059070733255204e+43 theta  [-1.72638812e+15 -4.35260862e+18]
Я хотел бы спрогнозировать цену на основе переменной sqft. В основном я следую формулам, данным Эндрю Нг в его курсе Coursera ML:
Изображение

Изображение

Изображение

Посредством получения Я получил правило обновления:
Изображение

Обновление: я добавил функцию для построения графиков своих данных и, как ни странно, получил следующие неверные графики:
Изображение

Потому что кажется, что мои прогнозы повышаются.
но когда я рисую, связь явно линейная:
[img]https://i.sstatic.net /8d0Bm.png[/img]

Что я делаю не так?

Подробнее здесь: https://stackoverflow.com/questions/577 ... ses-to-inf
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»