2016-06-16 4 views
1

Ich habe 5000 Datenpunkte von like_so_ (x, y, z) für zB (0,1,50) gesetzt wo x = 1, y = 2, z = 120.mit Hilfe dieser 5000 Enteries, muss ich eine Gleichung in
erhalten, die gegeben x und y, Gleichung sollte in der Lage sein, zWie man Gleichung für nichtlineare mutivariate Regression erhält, in der eine Variable von anderen zwei unabhängigen Variablen in Python abhängt

+0

Warum nicht zeigen, was Sie bisher haben und angeben, wo Sie stecken bleiben? –

+0

Ich habe versucht, pyplot-Funktion in Python zu verwenden, aber es passt nur zu Datensätzen, in denen es eine abhängige und eine unabhängige Variable gibt, dh 2D-Oberfläche –

+0

aber unser Dataset ist in 3values ​​statt zwei Werte dh es ist multivariate –

Antwort

0

Sie können Verwenden Sie statsmodels.ols. Einige Beispieldaten - vorausgesetzt, Sie ein pd.DataFrame von Ihren (x, y, z) Daten erstellen:

import pandas as pd 
df = pd.DataFrame(np.random.randint(100, size=(150, 3)), columns=list('XYZ')) 
df.info() 

RangeIndex: 150 entries, 0 to 149 
Data columns (total 3 columns): 
X 150 non-null int64 
Y 150 non-null int64 
Z 150 non-null int64 

Jetzt linearen Regressionsparameter ermitteln:

import numpy as np 
import statsmodels.api as sm 

model = sm.OLS(df['Z'], df[['X', 'Y']]) 
results = model.fit() 

zu erhalten:

results.summary()) 

          OLS Regression Results        
============================================================================== 
Dep. Variable:      Z R-squared:      0.652 
Model:       OLS Adj. R-squared:     0.647 
Method:     Least Squares F-statistic:      138.6 
Date:    Fri, 17 Jun 2016 Prob (F-statistic):   1.21e-34 
Time:      13:48:38 Log-Likelihood:    -741.94 
No. Observations:     150 AIC:        1488. 
Df Residuals:      148 BIC:        1494. 
Df Model:       2           
Covariance Type:   nonrobust           
============================================================================== 
       coef std err   t  P>|t|  [95.0% Conf. Int.] 
------------------------------------------------------------------------------ 
X    0.5224  0.076  6.874  0.000   0.372  0.673 
Y    0.3531  0.076  4.667  0.000   0.204  0.503 
============================================================================== 
Omnibus:      5.869 Durbin-Watson:     1.921 
Prob(Omnibus):     0.053 Jarque-Bera (JB):    2.990 
Skew:       -0.000 Prob(JB):      0.224 
Kurtosis:      2.308 Cond. No.       2.70 
============================================================================== 

Warnings: 
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified. 

vorherzusagen, zu verwenden:

params = results.params 
params = results.params 
df['predictions'] = model.predict(params) 

, die ergibt:

X Y Z predictions 
0 31 85 75 54.701830 
1 36 46 43 34.828605 
2 77 42 8 43.795386 
3 78 84 65 66.932761 
4 27 54 50 36.737606 
+0

ich brauche nichtlineare Regression zu verwenden aber das Dataset ist nichtlinear –

+0

Wenn die Beziehung zwischen Ihren Features und Ihrer Ausgabe nicht linear ist, können Sie beides transformieren - z Quadrate, Quadratwurzel oder trignometrische Funktionen mit Features oder Ausgaben, und verwenden Sie die transformierten Werte mit der obigen 'ols'-Prozedur. Letztendlich müssen Sie jedoch weitere Informationen bereitstellen, um Hilfe zu erhalten. Sehen Sie hier beispielsweise die verschiedenen Formen, die eine nichtlineare Beziehung annehmen kann: http://stats.stackexchange.com/questions/148638/how-to-tell- die Differenz zwischen linearen und nichtlinearen Regressionsmodellen – Stefan

Verwandte Themen