我正在尝试使用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'1
,y'2
,y'3
,y'4
的{{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回归。