2016-06-06 2 views
0

, который хочет очистить мой код. В настоящее время проходит курс курьера по компьютерному обучению. Имея проблему укорачивания мой код:Градиентный спуск - Работа на python один вкладыш для остаточной функции

class LRGD(): 

    def __init__(self, theta, x, y): 
     self.theta = theta 
     self.x = x 
     self.y = y 
     self.l = len(y) 
     self.lt = len(theta) 

    def residual(self): 
     sum = 0 
     for j in range(self.l): 
      # h = 0 
      h = sum(self.theta[k] * self.x[k][j] for k in range(self.lt)) 
      # for k in range(self.lt): 
      #  h += self.theta[k] * self.x[k][j] 
      sum += (h-self.y[j])**2 
     return sum/self.l 

«остаточную» функция работает правильно, но я работаю на сокращение, надеюсь близко к одной гильзе .. не могу понять, почему не закомментирована ч ISN» t working -> ошибка, вызванная ошибкой 'int', не может быть вызвана.

ответ

2

перенастройка встроенный sum функции с локальной переменной:

def residual(self): 
    sum = 0 # this overshaddows the built-in sum function 
    for j in range(self.l): 
     h = sum(...) # "sum" here is the variable, not the function 
     ... 

Просто использовать другое имя переменной, например, total = 0.

+1

Спасибо! глупая ошибка – pauld

Смежные вопросы