python中2个列表的线性回归

时间:2019-04-16 17:40:01

标签: python python-3.x list numpy linear-regression

嗨,我有2个数字列表,我想从常规线性回归中获得R ^ 2。我认为这个问题已经发表了很多,但是我只是在某个地方找不到这个问题。

我的列表:

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

我试图将其更改为numpy数组,然后使用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 个答案:

答案 0 :(得分:2)

尝试:

import scipy

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

print(r_value**2)

您会得到:

0.9302407516147975

答案 1 :(得分:0)

从文档的快速浏览中,我发现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。