Линейная регрессия

Каков наилучший способ найти линейную регрессию данных журнала, используя 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')
Другие вопросы по тегам