Возможно, я что-то не так понимаю, но похоже, что вы забыли строку
opt_alpha = [alpha_0, alpha_1, alpha_2]
непосредственно перед ошибкой.Когда вызывается функция, opt_alpha неизвестна.
Кстати, вы пропустите значение i
.
Мой совет: попробуйте прочитать код еще раз.Первое, что думают, это запустить if __name__
.Тогда основная функция.Затем метрика, а затем функция.Следуйте своим переменным.Если вы не привыкли к отладке, возьмите ручку, немного бумаги и пошагово запишите все значения переменных.Через минуту вы увидите, где были ошибки.
РЕДАКТИРОВАТЬ:
Из-за комментария:
Посмотрите на этот пример.
>>> a = [1, 2, 3]
>>> b = [2, 3, 4]
>>> c = [3, 4, 5]
>>> l = [a, b, c]
>>> l
[[1, 2, 3], [2, 3, 4], [3, 4, 5]]
>>> def f(l):
... for element in l:
... print element
... print "--", l[2][1]
...
>>> f(l)
[1, 2, 3]
[2, 3, 4]
[3, 4, 5]
-- 4
>>>
Нет философии передачи списка списков для работы.Вы просто ... делаете это.