Wie wird die Y-Achse beschriftet ... ?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
rich96
User
Beiträge: 5
Registriert: Donnerstag 28. Mai 2020, 19:52

Hallöchen :)

Ich lerne gerade über einen Kurs von eduonix (furchtbar schlechte Aussprache der Dozenten) die Visualisierung von Python.

Ich versuche den Code der mir vorgegeben wird nachzuvollziehen bzw. für später verständlich zu dokumentieren.
Dabei ist mir nicht klar, ob die Y-Achse automatisch generiert wird und was es mit xs = [ i for i , j in enumerate(variance)] auf sich hat.
Warum braucht man hier eine zweite Variable in der schleife obwohl nur eine Liste angesprochen wird?
Python liefert mir bei Löschung einen TypeError aus der was von Tupel spricht.

Über eine kurze Erklärung wäre ich dankbar :)

Code: Alles auswählen

from matplotlib import pyplot as plt

variance = [1,2,4,8,16,32,64,128,256]
bias_sqaured=[ 256,128,64,32,16,8,4,2,1]
	# x + y = Rechenanweisung
	# for x , y in zip ( x = variance, y = bias_squared)
	# zip gleich addierung oder zusammentun von List_Element[i1] und List_Element2[i1]
total_error= [x+y for x,y in zip(variance, bias_sqaured)]
	#enumerate = Aufzählung der Anzahl der Elemente in der Liste
xs = [ i for i , j in enumerate(variance)]	
	#X-Achse, Beschriftung , farbe {g  = green, r = red, B = blue + "-" ganze linie / ":" gestrichelt
	# Label= Legende
plt.plot(xs, variance, "g-",label="variance")
plt.plot(xs, bias_sqaured, "r-",label="bias^2")
plt.plot(xs, total_error, "b:", label="total error")

	#loc Position Legende (9=zentriert o. Reihe)
plt.legend(loc=9)
plt.xlabel("model complexity")
plt.title("The Bias-Variance Tradeoff")
plt.show()


Ausgeführt wird folgendes :
Bild
Benutzeravatar
__blackjack__
User
Beiträge: 14052
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@rich96: Das ist völlig idiotisch wie da erst mit `enumerate()` die Werte aufgezählt aber dann nicht verwendet werden. Da würde man einfach `range()` verwenden. Und `xs` ist kein so toller Name.

Bei der Legende sollte man keine ”magischen” Zahlen verwenden, die man dann mit einem Kommentar erklären muss. Das Argument nimmt auch eine Zeichenkette die aussagekräftiger ist.

Anmerkung zu den Farben: So ca. jeder 10. männliche Mitmensch hat eine Rot-Grün-Sehschwäche und kann die beiden Farben bei gleicher oder ähnlicher Intensität nicht oder nur schwer auseinander halten. Da also zwei Linien zu zeichnen die sich für solche Leute farblich im Grunde gar nicht unterscheiden, aber im Diagramm eben nur durch die Farbe, ist keine gute Idee.

Ich würde da entweder einfach das voreingestellte Farbschema verwenden – die werden sich darüber schon ein paar Gedanken gemacht haben. Oder ein anderes Farbschema wählen das von Leuten mit Erfahrung und nicht nur aus persönlichem Geschmack zusammengestellt wurde. Selbst einzelne Farben wählen macht IMHO nur Sinn wenn die Farben etwas aussagen. Also beispielsweise wenn man Wahlergebnisse visualisiert und die den Parteien üblicherweise zugeordneten Farben verwendet.

Code: Alles auswählen

#!/usr/bin/env python3
from matplotlib import pyplot as plt


def main():
    variance = [1, 2, 4, 8, 16, 32, 64, 128, 256]
    bias_sqaured = [256, 128, 64, 32, 16, 8, 4, 2, 1]
    total_error = [x + y for x, y in zip(variance, bias_sqaured)]
    model_complexity = range(len(variance))
    plt.plot(model_complexity, variance, label="$variance$")
    plt.plot(model_complexity, bias_sqaured, label="$bias^2$")
    plt.plot(model_complexity, total_error, ":", label="$total\\ error$")
    plt.legend(loc="upper center")
    plt.xlabel("model complexity")
    plt.title("The Bias-Variance Tradeoff")
    plt.show()


if __name__ == "__main__":
    main()
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
rich96
User
Beiträge: 5
Registriert: Donnerstag 28. Mai 2020, 19:52

Deine Erklärung macht Sinn, und deine Alternative mit range() ergibt mir auch mehr Sinn. Danke x)


Bist du zufährlich Dozent? :lol:
Benutzeravatar
__blackjack__
User
Beiträge: 14052
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Ob ich ”zufährlich” Dozent bin? Nee, als Dozent wär' ich zu gefährlich. 😎
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Antworten