一个命令中的多个最小二乘线性回归?

时间:2016-11-18 18:04:48

标签: python numpy

假设我有10个4 * 4个numpy数组:

[[1, 1, 1, 1],
 [2, 2, 2, 2],
 [3, 3, 3, 3],
 [4, 4, 4, 4]]

[[2, 2, 2, 2],
 [3, 3, 3, 3],
 [4, 4, 4, 4],
 [5, 5, 5, 5]]

etc...

我想要做的是为矩阵中的每个条目计算最小二乘线性回归。

所以我想取m0[0][0], m1[0][0], m2[0][0], etc...并计算线性回归。然后对[0][1]值执行相同操作。

有没有办法在不必先将所有[0][0]值提取到新数组并调用numpy.linalg.lstsq的情况下执行此操作?我可以以某种方式将我的10 * 4 * 4数组传递给numpy.linalg.lstsq,以便计算多次回归吗?

1 个答案:

答案 0 :(得分:0)

给这一点......我确信有一种方法可以让它更有效率。

def my_lin_reg(arr0):

    n = arr0.shape[0]
    s = arr0.shape[1] * arr0.shape[2]

    arr1 = arr0.swapaxes(0, 2).reshape(s, n)

    x = np.vstack([range(n), np.ones(n)]).T

    mc = []

    for sub_arr in arr1:

        mc.append(np.linalg.lstsq(x, sub_arr)[0])

    return np.array(mc)
相关问题