Я написал этот код как реализацию 2-х переменной линейной регрессии. Я использовал эту базовую формулу из курса Эндрю Н.Г.
Я не могу найти, что здесь происходит не так. Буду признателен за любой совет, что я делаю не так. Следующий код написан на Python3.
data
- это набор точек [(0,0), (1,1) ... (99,99)]
data = [(i,i) for i in range(100)]
def get_direction_0(k, b, a = 0.001):
sum_portion = 0
for (x,y) in data:
sum_portion += (k*x+b-y)
step = a * (1/len(data)) * sum_portion
return step
def get_direction_1(k, b, a = 0.001):
sum_portion = 0
for (x,y) in data:
sum_portion += (k*x+b-y) * x
step = a * (1/len(data)) * sum_portion
return step
if __name__ == "__main__":
t0 = 0
t1 = 5
for _ in range(100):
temp0 = t0 - get_direction_0(t0, t1)
temp1 = t1 - get_direction_1(t0, t1)
t0 = temp0
t1 = temp1
print(t0, t1)
Так что я ожидаю, что результат будет 1 и 0, но я получаю что-то очень необычное. Я не думаю, что эта проблема вызвана ограниченным числом итераций, поскольку кажется, что t1 и t2 не приближаются к результату с каждой итерацией.