Как математика работает в python (линейная регрессия) - PullRequest
0 голосов
/ 05 февраля 2020

Я хочу найти наклон в python путем преобразования математики в python код. В математике отстойная формула имеет вид -

m = Σ(x-x̄)*(y -ȳ)/ Σ(x-x)^2

, но в python она рассчитывается как -

m = (np.sum(x*y) - n*x_mean * y_mean) / (np.sum(x*x) - (n * x_mean * x_mean))

Я не уверен, как мы делаем эту формулу, полученную в python. Можете ли вы помочь мне?

Я приложил математическую формулу в виде Python формулы в изображении для лучшего понимания. Пожалуйста, проверьте это также. ?

Спасибо

https://i.stack.imgur.com/BMzOM.jpg

Ответы [ 2 ]

0 голосов
/ 05 февраля 2020

Решающий числитель и знаменатель

Σ (x-x̄) * (y -ȳ)

= Σ (xy-x̄y-xȳ + x̄ȳ)

= Σxy -Σx̄y -Σxȳ + Σx̄ȳ

= Σxy -x̄Σy -ȳΣx + nx̄ȳ

= Σxy -nx̄ȳ -nx̄ȳ + nx̄ȳ

= Σxy - nx̄ȳ

Σ (x-x̄) ^ 2

= Σ (x x- 2xx̄ + x̄ x̄)

= Σ (x x) - Σ (2xx̄ ) + Σ (x̄ x̄)

= Σ (x x) - 2x̄Σ (x) + n x̄ * x̄

= Σ (x x) - 2nx̄x̄ + n x̄ * x̄

= Σ (x x) - n x̄ * x̄

m = (Σxy - nx̄ȳ) / (Σ (x x) - n x̄ * x̄)

, что в python равно

m = (np.sum(x*y) - n*x_mean * y_mean) / (np.sum(x*x) - (n * x_mean * x_mean))
0 голосов
/ 05 февраля 2020

Это потому, что перекрестное произведение в линейной регрессии является кусочным умножением, при котором каждый компонент в векторе умножается только на соответствующие компоненты в другом векторе. Вы предполагаете типичное алгебраическое расширение c, включающее умножение каждого компонента на каждый другой компонент, который не работает.

так,

Σ(x-x̄)*(y -ȳ) != Σ(xy-x̄y-xȳ + x̄ȳ)

Σ(x-x̄)*(y -ȳ) = Σ(xy -x̄ȳ) = Σxy -Σx̄ȳ = Σxy - nx̄ȳ

аналогично,

Σ(x-x̄)*(x -x̄) != Σ(xx-x̄x-xx̄ + x̄x̄)

Σ(x-x̄)*(x -x̄) = Σ(xx -x̄x̄) = Σxx -Σx̄x̄  = Σxx - nx̄x̄
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...