Линейная регрессия 2 списков в питоне - PullRequest
1 голос
/ 16 апреля 2019

Привет, у меня есть 2 списка чисел, и я хочу получить R ^ 2 из регулярной линейной регрессии. Я думаю, что вопрос был опубликован много, но я просто не могу найти это где-то.

Мои списки:

my_y = [2,5,6,10]
my_x = [19,23,22,30]

Я пытался изменить его на массивы numey, а затем использовать sklearn, чтобы регрессировать и получить то, что мне нужно, но мне это не удалось. Я использовал следующий код:

from sklearn.linear_model import LinearRegression
import numpy as np

my_y = np.array([2,5,6,10]).reshape(1, -1)
my_x = np.array([19,23,22,30]).reshape(1,-1)

lm = LinearRegression()
result = lm.score(my_x, my_y)
print(result)

Есть ли у кого-нибудь быстрый способ получить R ^ 2 от линейной регрессии между этими двумя переменными?

Мой ожидаемый результат от этой регрессии: R ^ 2 = 0,930241

Ответы [ 2 ]

2 голосов
/ 16 апреля 2019

Попробуйте:

import scipy

slope, intercept, r_value, p_value, std_err = scipy.stats.linregress(my_x, my_y)

print(r_value**2)

и вы получите:

0.9302407516147975
0 голосов
/ 16 апреля 2019

Из быстрого просмотра документации я вижу, что linear_model требует, чтобы вы предоставили линейную модель, как следует из названия. Чтобы получить простой R:

import scipy
my_y = np.array([2,5,6,10])
my_x = np.array([19,23,22,30])
R=scipy.stats.linregress(my_x, my_y)[2]
print(R)

+0,9644898919194527

и R**2 дают желаемый результат 0,930.

...