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)
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