ich bräuchte dringend die Hilfe eines Erfahrenen Programmierers. Ich Programmiere gerade an einem Programm für meine Bachelor Arbeit.Dafür ist das programmieren einer Regressionsgerade notwendig. Soweit so gut. Das kann ich ja noch. Ich schaffe es auch noch die Regression zu Plotten. Allerdings will ich, dass die y- Achse im Plott gespiegelt angezeigt wird das habe ich auch noch geschafft. Das Problem tritt erst auf, wenn ich mir die Parameter Alpha und ausgeben lasse, jene stimmen logischerweise nun nicht mehr mit dem Plot überein.
Ich hoffe ihr könnt mir bei meinem Problem helfen, Hier erstmal der Code:
Die Datensätze die ich für die Regression verwenden möchte, gehen aus einem vorigen Programm heraus und nennen sich "year" und "classification". Beides sind Listen. Für die Regression verwandle ich beide erst in ein Array.
Code: Alles auswählen
xi= np.array(year)
yi = np.array(classification)
Danach erstellte ich die Designmatrix mit
Code: Alles auswählen
A = np.array([[1, x,] for x in xi])
Code: Alles auswählen
B = np.dot(A.T, A)
b = np.dot(A.T, yi)
Code: Alles auswählen
alphaj = np.linalg.solve(B, b)
Die Regressionsparameter sind nun berechnet und ich möchte die Funktion plotten. Ich definiere mir mal die Funktion "fitted" fürs Plotten:
Code: Alles auswählen
def fitted(alpha, x):
return alpha[0]+x*(alpha[1])
Code: Alles auswählen
fig, axl =plt.subplots(figsize=(40,20))
ax = plt.subplot(1,1,1)
plt.xlabel('year')
plt.ylabel('Classification')
plt.title("Klimaklassifikation")
ax.grid(linestyle="dotted"
Hier definiere ich mir die Variablen zum Plotten:
Code: Alles auswählen
xplot = xi
yplot = fitted(alphaj, xplot)
Code: Alles auswählen
ax.plot(xplot, yplot, label="Regression der Form: a_0 + a_1*x" )
Code: Alles auswählen
ax.plot(xi,yi,"o" , label="data points")
Und hier kommt es nun zum tatsächlichem Problem: Ich möchte, dass die y-Achse inverteiert wird. Dies macht eigentlich der Befehl:
Code: Alles auswählen
plt.gca().invert_yaxis()
Ich hab schon überlegt, die liste classification bevor ich sie in ein array umwandle zu zu invertieren. Das geht allerdings ja auch nicht, weil das erste Element von years auch dem ersten Element von calssification zugeordnet sein muss.
Ich freue mich auf eure Antwort und hoffe ihr könnt mir helfen.
Grüße,
Hänschi