Seite 1 von 1

Wie wird die Y-Achse beschriftet ... ?

Verfasst: Montag 8. Juni 2020, 00:28
von rich96
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

Re: Wie wird die Y-Achse beschriftet ... ?

Verfasst: Montag 8. Juni 2020, 01:18
von __blackjack__
@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()

Re: Wie wird die Y-Achse beschriftet ... ?

Verfasst: Montag 8. Juni 2020, 17:38
von rich96
Deine Erklärung macht Sinn, und deine Alternative mit range() ergibt mir auch mehr Sinn. Danke x)


Bist du zufährlich Dozent? :lol:

Re: Wie wird die Y-Achse beschriftet ... ?

Verfasst: Montag 8. Juni 2020, 19:49
von __blackjack__
Ob ich ”zufährlich” Dozent bin? Nee, als Dozent wär' ich zu gefährlich. 😎