Sie können OLS (Ordinary Least Squares model) als erledigt here verwenden:
#imports
import numpy as np
import statsmodels.api as sm
#generate the input matrix
X=[foo,bar,spam]
#turn it into a numpy array
X = np.array(X).T
#add a constant column
X=sm.add_constant(X)
Dies gibt die Eingangsmatrix X
:
array([[ 1., 1., 50., -10.],
[ 1., 2., 60., -20.],
[ 1., 3., 70., -30.],
[ 1., 4., 80., -40.],
[ 1., 5., 90., -50.],
[ 1., 6., 100., -60.]])
Und jetzt können Sie jeden gewünschten Ausgangsvektor passen:
resFoo = sm.OLS(endog=foofoo, exog=X).fit()
resBar = sm.OLS(endog=barbar, exog=X).fit()
resSpam = sm.OLS(endog=spamspam, exog=X).fit()
resham = sm.OLS(endog=hamham, exog=X).fit()
Die result gibt Ihnen das Coef ficients (für die Konstante und die drei Spalten foo, bar, und Spam):
>>> resFoo.params
array([-0.00063323, 0.0035345 , 0.01001583, -0.035345 ])
Sie können nun überprüfen Sie mit dem Eingang:
>>> np.matrix(X)*np.matrix(resFoo.params).T
matrix([[ 0.85714286],
[ 1.31428571],
[ 1.77142857],
[ 2.22857143],
[ 2.68571429],
[ 3.14285714]])
die auf die gewünschte Ausgabe von foofoo
nahe .
Sehen Sie diese Frage für verschiedene Möglichkeiten, um die Regression zu tun: Multiple linear regression in Python
3 Eingangsvektoren und vier Ausgangsvektoren keinen Sinn machen. –
überprüfen Sie dies: http://connor-johnson.com/2014/02/18/linear-regression-with-python/ – vcp