У меня проблема с линейной регрессией на python, и мой код, к сожалению, не показывает никакого результата.Он не показывает никаких проблем во время компиляции, но и не дает никаких ответов.Не знаю, слишком ли медленен мой компьютер, слишком много итераций или что-то еще.
Ожидаемое выходное значение theta Получил бесконечный цикл
Код:
import pandas as p
# Using pandas to read features from our training set
dinit = p.read_csv('train.csv')
df = p.read_csv('train.csv')
b = list([df['crim'],df['zn'],df['indus'],df['chas'],df['nox'],df['rm'],df['age'],df['dis'],df['rad'],df['tax'],df['ptratio'],df['black'],df['lstat'],df['medv']])
bmean = [0,0,0,0,0,0,0,0,0,0,0,0,0,0]
# Calculating mean
for i in range(14):
for j in range(333):
bmean[i] += b[i][j]
for i in range(14):
bmean[i] /= 333
bsigma = [0,0,0,0,0,0,0,0,0,0,0,0,0,0]
# Calculating standard deviation
for i in range(14):
for j in range(333):
bsigma[i] += (b[i][j]-bmean[i])**2
for i in range(14):
bsigma[i] = (bsigma[i]/333)**0.5
# NOTE :- Replace 13 and 333 with dimensions of list+1
# Normalising data
for i in range(14):
for j in range(333):
b[i][j] = (b[i][j]-bmean[i])/bsigma[i]
theta = [0,0,0,0,0,0,0,0,0,0,0,0,0]
def costfun(theta ,b ):
hypo = 0
cost = 0
y = 0
for j in range(332):
for i in range(13):
hypo+=(theta[i]*b[i][j])
y += b[13][j]
cost+=(hypo-y)**2
hypo = 0
y = 0
cost/=333
return cost
print(b)
def GradientDescent(theta, b):
alpha = 0.1
hypo = 0
cost = 0
y = 0
while (costfun(theta, b) > 1):
for j in range(332):
for i in range(13):
hypo += (theta[i] * b[i][j])
y += b[13][j]
for i in range(13):
theta[i] = theta[i]-((hypo-y)*b[i][j]*alpha/333)
return theta
print(bmean)
print(GradientDescent(theta,b))