완전히 막혔습니다. 이미 수업을 이해 한 생각 내가 잘못했다 생각 :Python이 내 클래스에 __call__ 메서드가 없음을 말합니다.
class LinearRegression:
def __init__(self, x, y, full = 0):
self.full = full
self.x = x
self.y = y
def __call__(self):
squared_sum_x = (sum(self.x))**2
n = len(self.x)
xx = sum([item**2 for item in self.x])
xy = sum([xi*yi for xi, yi in zip(self.x,self.y)])
a = 1.0*((n*xy -(sum(self.y)*sum(self.x)))/(n*xx - squared_sum_x))
b = (sum(self.y) - a*sum(self.x))/n
if self.full == 0:
return (a,b)
elif self.full == 1:
squared_sum_y = (sum(self.y))**2
yy = sum([item**2 for item in self.y])
R = float((n*xy -(sum(self.y)*sum(self.x)))/(((n*xx - squared_sum_x)*(n*yy - squared_sum_y))**0.5))
S_a = (1/(n-2))*((yy-(a*xy)-(b*sum(self.y)))/(xx-(n*xx)))
S_b = S_a * (n*xx)
return (a, b, R, S_a, S_b)
else:
return "full parameter must be 0, 1 or empty"
lr = LinearRegression(range(10),range(10,30,2),0)
lr()
을 그리고 난 다음 오류가 점점 오전 :/어쨌든, 내 코드는 다음과 같습니다
AttributeError: LinearRegression instance has no __call__ method
질문입니다 : 왜? 왜냐하면이 코드를 분석하는 데 몇 시간을 소비했기 때문에 무엇이 잘못 됐는지 전혀 알지 못하기 때문입니다 ...
형식이 맞습니까? 아시다시피, 들여 쓰기는 Python에서 중요합니다. – Danstahr
그리고'dir (LinearRegression)'show가 클래스의 일부입니까? 아마도 들여 쓰기 문제가있을 것입니다. –
감사합니다. 실제로 포맷이 잘못되었습니다. 초기화가 잘못되었습니다. 선생님이 쓴이 수업의 프로토 타입의 일부 였기 때문에 이전에 확인하지 않았습니다. Ph.D. 컴퓨터 과학에서 그런 에러를 만들지는 않을 것입니다. P –