我在GradientDescent类中声明了一个函数isPrecisied(),并在另一个函数(gd())中调用它。我创建了一个类的实例,然后使用它调用一个函数(b.gd()),其中包含isPrecisied()函数,方式如下
import numpy as np
import matplotlib.pyplot as plt
class GradientDescent:
def __init__(self,x,y,yhat,alpha=0.01,pre=0.1):
self.x=x # This is the x array
self.y=y # y is the array
self.yhat=yhat # yhat is the array
self.precision=pre
self.alpha=alpha
def isPrecisied(self,e):
if (np.sum(e)/2)>self.precision:
return False
return True
def gd(self):
self.beta=[0.0]*len(self.y)
error=[]
while True:
for j in range(0,len(self.y),1):
temp=self.beta[0]+np.sum(np.multiply(self.beta,self.x))
error.append(np.square(self.y[j]-temp))
t=isPrecisied(error)
print(np.sum(error)/2)
if t==False:
self.beta=np.subtract(self.beta,self.alpha*np.array(self.beta))
else:
return self.beta
#take the average precision by 1/2*summition((y-yhat)^2)
#B0(t+1) = B0(t) – alpha * error(of individual not combined)
a = GradientDescent([1,2,3,4,5],[10,20,30,40,50],[11,21,30,38,48])
b=a.gd()
我收到了错误:
Traceback (most recent call last):
File "<ipython-input-10-744f30ba0c28>", line 2, in <module>
b=a.gd()
File "<ipython-input-9-13f85a04a1e0>", line 23, in gd
t=isPrecisied(error)
NameError: name 'isPrecisied' is not defined
请让我知道我在哪里犯了错误。
答案 0 :(得分:0)
你应该改变你的
t=isPrecisied(error)
致电
t=self.isPrecisied(error)
因为你必须总是使用self来调用类方法