Erste Str

Nov 28 2022
Ich bin mehr als ein Informatiker und Ingenieur, ich bin ein Mensch. Und als Mensch ist das Sehen eine der wichtigsten und lohnendsten Sinneserfahrungen, die wir machen können.

Ich bin mehr als ein Informatiker und Ingenieur, ich bin ein Mensch. Und als Mensch ist das Sehen eine der wichtigsten und lohnendsten Sinneserfahrungen, die wir machen können. Daher werde ich zunächst mein erstes Dashboard vorstellen, das auf dem Streamlit-Framework (mit Hilfe von Python, Pandas und Altair) basiert.

Einführung

Dashboards? Tafel? PowerBI? Warum nicht einfach einige Excel-Tabellen verwenden?

Das Wort „Dashboard“ ist sicherlich ein Trendwort im Bereich Data Science, Data Engineering, Business Intelligence und so weiter. Aber was ist ein Dashboard? Und was kann ich damit machen?

Erstens, wenn wir das Wort Dashboard hören, erinnert man sich schneller an eine Polizei, die Autos in den Filmen zieht, anstatt an ein Computersystem voller Diagramme. „Hast du nicht die Geschwindigkeitsüberschreitung auf dem Armaturenbrett des Autos gesehen?“ Nun… Ein Dashboard ist einfach ein visueller Rahmen, der einige Key-Performance-Indikatoren, Diagramme und Statistiken enthält. Sie können reaktionsschnell, interaktiv und in Echtzeit aktualisiert werden. Unter Verwendung eines anderen Ansatzes sind sie Werkzeuge zur Visualisierung kuratierter Informationen in Bezug auf ein bestimmtes Fallszenario. Warum kuratiert? Weil das System häufig verwendet wird und die Daten auf einem wesentlichen Niveau gehalten werden müssen, um eine Überfütterung der Anwendung zu vermeiden. Zeit ist entscheidend und je schneller die Informationen verdaut werden, desto besser.

Also… Tableau und Power BI sind nur Frameworks zum Erstellen von Dashboards und Storys. Excel kann auch zum Erstellen von Dashboards verwendet werden. Tatsächlich ist Excel der Großvater der Dashboards … Letztendlich ist das Wort nur ein ausgefallener Begriff, der verwendet wird, um ein Informationssystem zu beschreiben, das Statistiken enthält.

Wie manche sagen, ist ein Bild besser als tausend Worte, also kommen wir zum praktischen Teil. Wir beenden die Einführung hier und fahren mit der Auswahl der Tools und der Auswahl eines zufälligen Datensatzes zur Durchführung von EDA fort, finden dann Stresspunkte, die mithilfe unseres Dashboards gelöst oder analysiert werden können, und versuchen, sie zu beantworten. Und das alles bei parallelem Dashboarding.

Der Stapel

Um große Mengen an Steinen effizient zu brechen, benötigt man wahrscheinlich eine Reihe leistungsstarker und spezieller Werkzeuge. Die nächste Auflistung beschreibt die verschiedenen Tools, die im Miniprojekt verwendet werden.

Strombeleuchtet . Open-Source-Framework, das drei Hauptprinzipien folgt: Skripterstellung als Visuals, Interaktion durch Verwendung von Komponenten als Variablen und schnelle Bereitstellung. Mit anderen Worten, mit Streamlit ist es möglich, optisch ansprechende Dashboards zu erstellen, ohne dass man wissen muss, wie man Front-End- und Styling-Frameworks verwendet. Dieses Paradigma ermöglicht es dem System, Styling-Besonderheiten zu ignorieren und die gesamte Aufmerksamkeit auf die Definition der KPI und die Methoden zu richten, die sie besser darstellen können.

Altair. Tool zur Datenvisualisierung. Altair hat ein ähnliches Ziel wie Matplotlib, wurde aber auf anderen Prinzipien aufgebaut. Der Codierungsstil folgt einem deklarativen Paradigma, und seine Syntax ähnelt dem JSON-Format.

Pandas . Bibliothek, die zum Durchsuchen, Bereinigen und Bearbeiten von Tabellendaten verwendet werden kann. Ermöglicht das Zusammenführen mehrerer Tabellen, das Ausfüllen fehlender Werte, das Konvertieren, Bereinigen, Filtern und Abfragen.

Scikit-Lernen . Die Bibliothek bietet mehrere Tools für die Datenanalyse. Von maschinellem Lernen und statistischen Modellen, Trainingsplänen, Metriken zur Fehlerquantifizierung und Datenvorhersagen. Durch die Verwendung dieses Scikit-Learn ist es möglich, Daten schnell und einfach zu analysieren. Beachten Sie jedoch, dass die implementierten Modelle nicht auf dem neuesten Stand sind.

Nüppig . Verbessert die Zeit, die für numerische Berechnungen innerhalb des Python-Ökosystems benötigt wird. Die nativen Daten von Numpy bestehen aus N-dimensionalen Arrays.

Gurke . Dieses Tool wird zur Serialisierung und Deserialisierung von Python-Objekten verwendet.

Der Datensatz

Das Projekt konzentriert sich darauf, zu erkunden, was Streamlit zu bieten hat, und nicht darauf, ein kuratiertes End-to-End-Data-Science-Projekt durchzuführen. Der Datensatz, den wir auswählen werden, ist also fast reiner Zufall.

Unsere Ergebnisse bestehen aus einem Wohnungsmarktdatensatz aus Seattle (USA). Instanzen wurden zwischen Mai 14 und Mai 15 gesammelt.

Die Komponenten

Jetzt ist es an der Zeit, die verschiedenen Komponenten zu überprüfen, die zusammen das endgültige Dashboard ergeben. Überprüfen Sie die vollständige Implementierung auf meiner Github-Seite (https://github.com/LOCLuisPereira/streamlit_house_market).

Anfängliche KPI-Metriken

Diese KPI-Metriken sind das erste, was der Benutzer sieht. Sie sollen wichtige Informationen prägnant vermitteln. Streamlit bietet eine kartenähnliche Komponente (streamlit.metric), in der man den KPI-Titel, den Wert und ein Delta definieren kann. Sie dienen der Identifikation, Quantifizierung und Messwertschwankung.

In unserem Fall haben wir die Gesamtzahl der Häuser und einige andere Durchschnittswerte über den Wohnungsmarkt in Seattle (z. B. durchschnittlicher Hauspreis, Zustand der Anzahl der Stockwerke usw.).

Die anfänglichen KPI-Metriken des Dashboards

Seattle Karte und Hausverteilung

Streamlit verfügt über eine Kartenkomponente, die es dem Entwickler ermöglicht, schnell eine Wort- oder Stadtkarte zu erstellen (streamlit.map). Diese Komponente ist recht einfach und stellt keine komplexen Anforderungen, da ihr Anpassungsgrad gering ist.

Nehmen Sie als Beispiel, um die Instanzverteilung auf eine bestimmte Stadt zu überprüfen, reicht die Komponente aus. Aber um die Clusterverteilung und ihre jeweilige Farbe zu visualisieren, ist ein anderes Werkzeug erforderlich.

Kartenkomponente

Verwenden von Altair Map Graph für die Clustering-Visualisierung

Die native Kartenkomponente von Streamlit verwendet Altair unter der Haube. So einfach ist das. Wir haben bereits erwähnt, dass diese Komponente Plug-and-Play ist, aber keinerlei Anpassungsmöglichkeiten bietet. Eine Alternative zur nativen Implementierung besteht darin, Altair Chart zu verwenden und es mit der Streamlit-Altair Chart-Komponente zu verknüpfen.

Der Standort ist entscheidend. Vor allem auf dem Wohnungsmarkt. Dasselbe Haus kann seinen Wert mit dem 20-fachen multiplizieren, nur weil es in der Nähe des Ozeans oder in einer großen Stadt liegt.

Um sicherzustellen, dass es tatsächlich wahr ist, haben wir ein Experiment durchgeführt. Unter Verwendung von Scikit-Learn und seinen K-Means-Implementierungen führen wir den Algorithmus mit einer unterschiedlichen Anzahl von Clustern (von 2 bis 10) aus. Als Merkmale wurden Längen- und Breitengrad verwendet. Bei jedem Durchlauf prüfen wir den durchschnittlichen Wohnungspreis.

Der letzte Schritt, die Visualisierung, erfolgte durch die Zusammenführung von drei Komponenten. Ein Schieberegler zum Auswählen der gewünschten Anzahl von Clustern. Eine Altair-Karte zum Anzeigen der Instanzen und der Position ihrer Karte. Und einen Datenrahmen, um den Durchschnittspreis für jeden Cluster anzuzeigen.

Anzahl der Cluster = 3
Anzahl der Cluster = 6

Am Ende spielt der Ort eine große Rolle. Wenn wir von Süden nach Norden gehen, steigen die Immobilienpreise. Häuser auf der linken Seite von Seattle sind tendenziell günstiger. Auf dem Wohnungsmarkt können mehrere Faktoren den Preis beeinflussen. Beispielsweise sind die Häuser auf der rechten Seite näher am Festland, und es ist einfach, zu anderen Teilen von Seattle oder nahe gelegenen Städten zu navigieren. Dieser Grund ist nicht entscheidend, kann aber den Endpreis des Hauses beeinflussen.

Grad und Zustand

Diese Komponente ist einfach und kurz. Unter Verwendung von zwei Balkendiagrammen, `streamlit.bar_chart`, haben wir die Noten- und Zustandsverteilung grafisch dargestellt. Durch die Visualisierung der Grafik schließen wir, dass die Mehrheit der Instanzen in der Mitte liegt (für beide Diagramme).

Balkendarstellung zur Visualisierung von Zustand und Grad

Wir haben diese beiden Merkmale gegeneinander aufgetragen. Betrachtet man die durchschnittliche Bewertung als neutral, dann liegt die Mehrheit der Häuser eher auf der neutralen Seite der Bewertungen. Wenn sie nicht neutral sind, fallen sie auf eine schüchterne positive Bewertung.

Blasendiagramm, das Grad und Korrelation zusammen darstellt

Wie sieht es mit Hausrenovierungen aus? Ein weiterer Satz von KPIs

Mit streamlit.metric haben wir drei Inline-KPI-Metriken implementiert, um Daten im Zusammenhang mit Hausrenovierungen schnell zu analysieren. Wir haben die Anzahl der renovierten Häuser, ihren Anteil am Rest und die Zeitspanne zwischen dem Bau- und dem Renovierungsjahr gezeigt.

Ein weiterer Satz von KPIs

Beim Blick auf das Dashboard haben wir festgestellt, dass 914 Häuser renoviert wurden. Und Häuser werden in der Regel nach 56 Jahren nach ihrem Bau restauriert.

Ein Dashboard ohne Liniendiagramm? Unmöglich…

Liniendiagramme sind in der Regel weit verbreitet. Streamlit bietet eine Wrap-Komponente, um sie schnell und einfach zu plotten. Auf unserem Dashboard verwenden wir sie, um Hausverkäufe pro Monat anzuzeigen.

Hausverkauf im Laufe der Zeit

Werfen Sie einen kurzen Blick darauf… Die umsatzstärksten Monate waren Juli 2014 und April 2015.

Schlafzimmer und Badezimmer? Stapeln oder balancieren?

Manchmal ist mehr nicht eng mit besser verbunden. Um dies zu bestätigen oder zu entlarven, implementieren wir ein Heatmap-Chart, das die Anzahl der Schlafzimmer, Badezimmer und den Durchschnittspreis für jede Schlafzimmer-Badezimmer-Kombination in Beziehung setzt.

Wenn wir uns das neue Diagramm ansehen, können wir sehen, dass es von grundlegender Bedeutung ist, die Anzahl der Schlafzimmer und Badezimmer auszugleichen. Die Industrie bevorzugt 1:1-Verhältnisse und mehr Badezimmer als Schlafzimmer.

Beim Stapeln von Schlafzimmern liegt der Preis tendenziell in der gleichen Größenordnung. Aber wenn Badezimmer hinzugefügt werden, steigt der Preis tendenziell immer an.

Unser Heatmap-Diagramm

Dies kann wahrscheinlich erklärt werden, indem man einer einfachen Argumentation folgt. Menschen warten nicht gerne und Menschen teilen nicht gerne Räume mit extremer Privatsphäre. In der Summe führt ein höheres Maß an Privatsphäre für Bewohner und Gäste zu höheren Werten von Immobilien.

Ich habe eine Immobilie in Seattle… Können Sie mir helfen, einen fairen Verkaufspreis zu finden?

Wir können diese Frage in zwei kleinere Probleme zerlegen. Was können wir tun, um den Informationsfluss vom Benutzer zu unserem Informationssystem zu überbrücken? Und können wir einen beliebigen maschinellen Lernalgorithmus verwenden, um Daten zu verdauen und anhand der Eingabeinformationen einen möglichen Preis zuzuordnen.

Streamlit bietet mehrere Komponenten, die die Benutzer- und Systemkommunikation automatisch überbrücken. In diesem speziellen Fall werden wir die Formularkomponenten verwenden. Diese Komponente ermöglicht die Zusammenführung anderer Komponenten mit der einzigen Anforderung einer abschließenden Schaltfläche, die die Datenübermittlung auslöst.

Formular zur Überbrückung der Benutzer-System-Kommunikation

Informationen aus der Formularkomponente werden in zwei vortrainierte Modelle eingespeist. Nach der Inferenz werden die Daten an das Dashboard gesendet und Benutzer können zwei mögliche Wertschätzungen sehen.

Da die Aufgabe des Projekts darin besteht, ein Dashboard zu erstellen und die meisten Streamlit-Komponenten zu untersuchen, haben wir zwei grundlegende Modellalgorithmen für maschinelles Lernen verwendet, die auf Scikit-Learn implementiert sind. Am Ende haben wir einen Bayesian Ridge und Random Forest mit 0,54 und 0,87 R2-Score für die gesamten Daten.

Preisvorhersagen

Man kann sich fragen, warum man ein Modell mit 0,54 Punkten behält? Wir haben es aus Spaß behalten. Das Modell gibt manchmal negative Werte aus. Mit anderen Worten, das Modell sagt uns, dass wir ein Haus kaufen können … und Geld erhalten, um es zu behalten.

Was befindet sich im Datenrahmen?

Für diese Aufgabe bietet Streamlit drei verschiedene Optionen an. Eine für statische Tabellen, eine für Datenrahmen und eine für JSON. Hier konzentrieren wir uns auf die letzten beiden.

Die Funktion von Dataframe gibt eine Tabelle aus, die es ermöglicht, die Struktur des Datensatzes tabellarisch zu visualisieren. Es ist möglich, Spalten aufsteigend oder absteigend zu sortieren, was die Visualisierung und Datensemantik verbessert.

Streamlit-Datenrahmentabelle

Die Ausgabe von JSON ähnelt der dumping-Funktion mit Einrückung, die aus der JSON-Bibliothek von Python stammt.

Streamlit-JSON-Komponente

Beide Komponenten haben einen Anwendungsfall. Die Datenrahmenkomponente kann verwendet werden, um Informationen schnell zu analysieren und beispielsweise Maxima, Minima zu finden, auf fehlende oder Nullwerte zu prüfen und so weiter. Der JSON-Typ eignet sich hervorragend zum Überprüfen der Datenstruktur und des Typs, mit Ausnahme der einzelnen Felder im Datensatz.

Letzte Aufnahmen

Dies ist das Ende des Weges für dieses Projekt. Wir haben keine heiklen oder hochmodernen Algorithmen untersucht. Sie waren einfach in Theorie und Umsetzung. Aber mit dieser Implementierung sind wir in der Lage, darüber nachzudenken und Fragen darüber zu beantworten, wie gut das Framework ist und ob es mit unserem Stack kompatibel ist.

Am Ende kann Streamlit anbieten, was es vorschlägt. Das Erstellen eines Dashboards ist so einfach wie das Schreiben eines Skripts. Daten werden interaktiv und organisiert angezeigt. Auch wenn wir es nicht gezeigt haben, ist die Bereitstellung eines Prototyps schnell und einfach.

Im Moment können wir nur zwei mögliche Nachteile sehen. Routing und Styling. Routing für mehrseitiges Dashboard. Styling, um den aktuellen Styling-Mechanismus zu erweitern und ein höheres Maß an Anpassung zu ermöglichen.

Meine persönliche Einstellung zu Streamlit ist einfach. Ich freue mich sehr darauf, es in meinen anderen Projekten zu verwenden. Das Erstellen von Prototypen oder internen Dashboards geht schnell, die Ergebnisse sind ästhetisch ansprechend und EDA wird noch spannender … weil wir Daten auf dem Frontend so einfach visualisieren können.

Bonus. Was ist mit Echtzeit-Dashboards?

In unserem Projekt war keine Datenaktualisierung in Echtzeit erforderlich. Streamlit bietet jedoch Methoden zur Implementierung von Echtzeit-Datenvisualisierung. Der Mechanismus ist einfach. Erstellen Sie eine leere Komponente, setzen Sie eine Schleife, holen und füttern Sie die Daten … Voilà! Kontinuierliche Datenströme in Echtzeit. Sehen Sie sich die Bilder unten als Beweis für die Framework-Fähigkeiten an.

Drehen Sie das Dashboard hoch und überprüfen Sie den Anfangspreis
Der Preis hat sich gerade geändert und das Dashboard zeigt es an

Dass es! Bis zum nächsten Mal.