python中2个列表的线性回归

Adr*_*ian 1 python numpy list linear-regression python-3.x

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

我的清单:

my_y = [2,5,6,10]
my_x = [19,23,22,30]
Run Code Online (Sandbox Code Playgroud)

我试图将其更改为 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)
Run Code Online (Sandbox Code Playgroud)

有没有人有一种快速的方法可以通过在这两个变量之间进行线性回归来获得 R^2?

我从这个回归中得到的预期输出是:R^2=0.930241

sen*_*nce 5

尝试:

import scipy

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

slope, intercept, r_value, p_value, std_err = scipy.stats.linregress(my_x, my_y)
    
print(r_value**2)
Run Code Online (Sandbox Code Playgroud)

你会得到:

0.9302407516147975
Run Code Online (Sandbox Code Playgroud)

从 scipy 版本'1.4.1'(感谢@FlamePrinz 注意到新版本 scipy 的问题):

0.9302407516147975
Run Code Online (Sandbox Code Playgroud)