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

时间:2014-05-24 10:43:24

标签: python numpy

我正在尝试使用multivariate linear regression来实施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'4的{​​{1}}的值高于系数值?

1 个答案:

答案 0 :(得分: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是二进制(全零和一),您应该使用Logistic回归。

相关问题