https://github.com/dajor/HoloViz-Example
Das Panel bietet eine Vielzahl nützlicher Standard-Widgets, um interaktive Effekte in einem Jupyter-Notebook oder als eigenständige Anwendung zu erstellen. Es gibt mehrere Möglichkeiten, um Interaktivität im Panel zu erreichen, aber die Callback/Watcher-Methode bietet die größte Flexibilität:

Hinweis: Wenn Sie Ihren eigenen Callback/Watcher schreiben und sich nichts ändert, könnte es einen Fehler in Ihrer Callback-Funktion geben. Zumindest in einem Notebook werden alle Ausnahmen, die ausgelöst werden, standardmäßig nicht gedruckt, was die Fehlersuche erheblich erschwert.
Das Ziel der Visualisierung
Mit Daten, die eine grundlegende “Wahrheit” der binären Klassifikation darstellen, und vorhergesagten Werten (Fließkommazahlen von 0 bis 1,0) werde ich ein Dashboard zusammenstellen, um das zu tun:
- Harte Vorhersagen generieren
- Eine Confusion Matrix anzeigen
- Bewerten Sie den Klassifikator anhand der AUC-Kurve und einer Precision-Recall-Kurve
Die „Daten”
Im Grunde habe ich einen künstlichen Satz binärer Kategorien (85% / 15%) erstellt, Zufallsdaten auf jeden Behälter geworfen und dann die Werte zwischen [0,1] festgelegt. Dies sollte dem Ergebnis eines binären Klassifikators aus Scikit-Learning sehr ähnlich sehen.
Harte Vorhersagen generieren
Schieberegler, dessen Werte die Cut-off-Werte darstellen (über diesem Wert, angenommene Kategorie 1, darunter, angenommen 0).
Standardmäßig initialisiere ich den Cutoff-Wert, um den F1-Score zu maximieren. Wenn wir theoretisch perfekte Präzision und Erinnerung haben könnten, sollte diese Größe 1 sein.
Wenn sich der Schieberegler durch die verschiedenen Cutoff-Werte bewegt, sollte der Rest der Visualisierung Änderungen in den verschiedenen anderen Metriken vermitteln. Eine der besten Möglichkeiten, diese Beziehung zu erfassen, ist eine Confusion Matrix, oder eine 2×2-Tabelle, die die Ergebnisse der Vorhersage gegen die tatsächlichen Werte anzeigt.
https://github.com/dajor/HoloViz-Example/blob/master/Panel_Interactive.ipynb

Die Confusion Matrix
Um dieses visuelle Element zu erreichen, werde ich die hv.HeatMap-Grafik verwenden, zusammen mit einigen Tricks, um das Verhalten zu beeinflussen. Es erwies sich als ziemlich schwierig, angepasste Achsen und Markierungen zu erhalten, daher werde ich stattdessen auch hv.Labels verwenden, um explizit zu verdeutlichen, was die Confusion Matrix anzeigt:

Der knifflige Teil war hier die Deaktivierung der Achsen und die korrekte Positionierung der Dinge. Die Heatmap ist in Wirklichkeit ein 2×2, mit Bereichen (0,1) sowohl auf x als auch auf y. Um also etwas im oberen linken Quadranten zu platzieren, müssen Sie sich mit einem Tupel entsprechend (x,y) darauf beziehen: (0,1,VAL), wobei VAL der tatsächliche Wert der Heatmap oder des entsprechenden Labels ist. Ich habe zwei Listen erstellt und eine Karte verwendet, um die Dinge in der richtigen Reihenfolge zu sortieren.
AUC- und Precision-Recall-Kurven
Der Code für die Erzeugung dieser Kurven ist ziemlich einfach, da ich mich weiterhin auf HoloViews stützen werde:
# Für die AUC brauchen wir nur unsere FP gegen TP zu zeichnen. hv.Kurve(Daten[:,[3,1]]). \ opts(xrotation=45, xlabel='False Positive', ylabel='True Positive')

# for the PR curve, we need only plot recall vs precision hv.Curve(data[:,[6,5]]). \ opts(xlim=(0,1), ylim=(0,1))

Ein Layout und alles zusammensetzen
