使用numpy计算多元线性回归的因变量值

0 投票
1 回答
938 浏览
提问于 2025-04-18 07:28

我正在尝试使用 numpy 实现 多元线性回归。这个论坛里有很多关于这个主题的问题,但似乎没有人能解答我的疑问。我有几个自变量 (X1, X2, X3, X4, X5) 和一个因变量 Y。我想预测 Y' 的值。

X1    X2   X3   X4    Y    Y'
1     0     1    0    1    ? // ? -> referring this value as y'1
0     0     1    1    0    ? // ? -> referring this value as y'2
0     1     0    1    0    ? // ? -> referring this value as y'3
0     0     0    1    1    ? // ? -> referring this value as y'4
1     0     1    1    0    ? // ? -> referring this value as y'5

所以,我在使用 numpy 进行计算:

>>> X1 = np.array([1,0,0,0,1])
>>> X2 = np.array([0,0,1,0,0])
>>> X3 = np.array([1,1,0,0,1])
>>> X4 = np.array([0,1,1,1,1])
>>> Y = np.array([1,0,0,1,0])
>>> x = np.array([X1,X2,X3,X4], np.int32)
>>> n = np.max(x.shape)   
>>> X = np.vstack([np.ones(n), x]).T
>>> print np.linalg.lstsq(X, Y)[0]
 [  2.00000000e+00  -2.22044605e-16  -1.00000000e+00  -1.00000000e+00 -1.00000000e+00]

我有这个方程 y = a + b1.x1 + b2.x2 + b3.x3 + b4.x4。从上面的计算中,我得到了 a, b1, b2, b3, b4 的值。

那么,我该如何根据这些系数值来计算 Y' 的值,也就是 y'1y'2y'3y'4y'5 呢?

1 个回答

0

OLS的目的是根据你已有的数据来调整参数,然后用这些参数来预测一个新的Y值。你可以尝试...

>>> import numpy as np
>>> X = np.array([[1,0,1,0], [0,0,1,1], [0,1,0,1], [0,0,0,1], [1,0,1,1]])
>>> Y = np.array([1,0,0,1,0]).reshape((5,1))
>>> b = np.linalg.inv((X.T).dot(X)).dot(X.T).dot(Y)
>>> b
out [1]: array([[0.666], [-0.333], [-0.333], [0.333]])

然后用这个方法来预测在给定4个新的X值时的Y值。另外,如果你的Y值是二元的(也就是只有0和1),你应该考虑使用逻辑回归。

撰写回答