Линейная регрессия
Каков наилучший способ найти линейную регрессию данных журнала, используя numpy? Когда я строю данные и пытаюсь
A = np.vstack([np.log10(X), np.ones(len(X))]).T
m, c = np.linalg.lstsq(A, np.log10(Y))[0]
ax.plot(X, [m*x + c for x in X], 'r')
где X и Y - списки данных, это результат, явно неверный:
1 ответ
Решение
Если вы делаете линейную регрессию на
log10(y) = m*log10(x) + c
тогда в (х, у) координаты у вас есть
y = (10**c) * x**m
То есть вы подобрали для своих данных степенной закон. Изменить это
ax.plot(X, [m*x + c for x in X], 'r')
в
ax.plot(X, np.power(10, c) * np.power(X, m), 'r')