0

Ich versuche zu lernen, wie man ein lineares Regressionsmodell für eine Exponentialfunktion mit Python erstellt zu interpretieren. Ich erstelle ein Modell, indem ich zuerst die exponentiellen Y-Daten in eine gerade Linie umwandle, indem ich den natürlichen Logarithmus nehme. Ich erstelle dann ein lineares Modell und notiere die Steigung und den Achsenabschnitt. Zuletzt versuche ich, einen Abtastwert unter Verwendung der Steigung und des Achsenabschnitts zu berechnen. Insbesondere versuche ich das Y zu berechnen, wenn X = 1,1 ist. Y sollte ~ 2,14 sein, aber meine Modellinterpretation ergibt einen Y-Wert von 3,78.Passen Regressionslinie zu Exponentialfunktion in Python

Frage 1: Was mache ich falsch bei der Interpretation des Modells?

Frage 2: Ich muss das X-Array umformen oder ich bekomme einen Fehler in regr.fit. Warum muss ich das X-Array neu gestalten?

Der Code folgt:

import matplotlib.pyplot as plt 
import numpy as np 
from sklearn import datasets, linear_model 

# create some exponential data 
X = np.arange(1, 10, 0.1) 
print(X) 
Y = np.power(2, X) 
print(Y) 

# transform the exponential Y data to make it a straight line 
ln_Y = np.log(Y) 

# show the exponential plot 
plt.scatter(X, Y) 
plt.show() 

# Create linear regression object 
regr = linear_model.LinearRegression() 

# reshape the X to avoid regr.fit errors 
X = np.reshape(X, (X.size, 1)) 

# Train the model using the training sets 
regr.fit(X,ln_Y) 

# The coefficients 
print('Slope: \n', regr.coef_) 
print('Intercept: \n', regr.intercept_) 

# predict Y when X = 1.1 (should be approximately 2.14354693) 
# equation = e^(0.00632309*1.1) + 2.7772517886 
print("predicted val = ", np.exp(0.00632309*1.1) + 2.7772517886) 

Antwort

1

Stellen Sie sicher, dass die neueste Version von scikit haben; Ich habe verschiedene coeffiecients Ihnen:

Slope: 
[ 0.69314718] 
Intercept: 
4.4408920985e-16 

Und Sie werden die exp des gesamten Ausdrucks, nicht nur die Größe x nehmen müssen:

In [17]: np.exp(0.69314718*1.1 + 4.4408920985e-16) 
Out[17]: 2.1435469237522917 
+1

Vielen Dank maxymoo. Ich habe mein Scikit aktualisiert und habe die gleichen Koeffizienten wie du. Danke für den Tipp und das konkrete Beispiel, wie man das Modell interpretiert, indem man den Ausdruck des gesamten Ausdrucks nimmt. Sie sind ein Gelehrter und ein Gentleman! – user3457456

Verwandte Themen