2016-12-14 35 views
0

我有X数组形状(40 * 100)Y数组包含40个元素。 是否可以做OLS,WLS?怎么做?散点图之后的 。 enter image description here当X是二维数组时,如何做最小二乘寻找关系或方程,Y是一维数组。 Python

如何应用最小二乘法找出X和Y之间的关系。例如,我想生成X和Y的方程。

Here I give the simple example. 
    X=[[0.0,0.03,0.04,0.0,0.1,0.1,0.7,0.5,0.3,0.6], 
     [0.0,0.0,0.4,0.5,0.1,0.1,0.03,0.04,0.0,0.1], 
     [0.6,0.7,0.0,0.8,0.1,0.1,0.1,0.1,0.7,0.5], 
     [0.3,0.6,0.1,0.5,0.6,0.1,0.4,0.5,0.1,0.1]] 

    Y=[1,4,2,5] 
+0

除非你的X行的LINEA由于您将能够找到确切的解决方案,因此您不需要最小二乘法逼近。这是因为你有比方程更多的变量,所以它是一个不受约束的系统。 – lxop

+0

如果你的行是线性依赖的,那么你不会找到最小二乘法逼近 – lxop

+0

所以,我应该使用哪种算法来构建预测模型? – dd90p

回答

0

无论OLS或WLS是合适是一个问题(如功能之间线性相关性需要不同的方法,或者如果你的回应(Y变量)是离散的,那么你就不会使用OLS,而是使用回归或别的东西),但使用你的数据如下:在Python执行它:

import numpy as np 
import numpy.linalg as la 
X = np.array([[0.0,0.03,0.04,0.0,0.1,0.1,0.7,0.5,0.3,0.6], 
      [0.0,0.0,0.4,0.5,0.1,0.1,0.03,0.04,0.0,0.1], 
      [0.6,0.7,0.0,0.8,0.1,0.1,0.1,0.1,0.7,0.5], 
      [0.3,0.6,0.1,0.5,0.6,0.1,0.4,0.5,0.1,0.1]]) 

Y = np.array([1,4,2,5]) 
OLS = la.lstsq(X,Y)[0] 

print OLS 
[-0.60940892 0.19707325 3.94166269 4.06073677 2.76949291 
0.90614714 0.92161768 1.5417828 -1.87887552 -0.63917305] 

注意,这会产生一个完美的解决方案:

np.allclose(X.dot(OLS),Y) 
True