Pierwsza ul

Nov 28 2022
Jestem kimś więcej niż informatykiem i inżynierem, jestem istotą ludzką. Jako istota ludzka widzenie jest jednym z najważniejszych i najbardziej satysfakcjonujących doświadczeń zmysłowych, jakie możemy mieć.

Jestem kimś więcej niż informatykiem i inżynierem, jestem istotą ludzką. Jako istota ludzka widzenie jest jednym z najważniejszych i najbardziej satysfakcjonujących doświadczeń zmysłowych, jakie możemy mieć. Dlatego na początek pokażę mój pierwszy dashboard zbudowany na frameworku Streamlit (z pomocą pythona, pand i Altaira).

Wstęp

Pulpity nawigacyjne? Żywy obraz? PowerBI? Dlaczego po prostu nie użyć kilku arkuszy Excela?

Słowo „pulpit nawigacyjny” jest z pewnością popularnym hasłem w dziedzinie nauki o danych, inżynierii danych, analizy biznesowej i tak dalej. Ale co to jest deska rozdzielcza? I co mogę z tym zrobić?

Po pierwsze, kiedy słyszymy słowo deska rozdzielcza, szybciej przypominamy sobie policję ciągnącą samochody w filmach, zamiast systemu komputerowego wypełnionego wykresami. „Nie widziałeś przekroczenia prędkości na desce rozdzielczej samochodu?” Cóż… Dashboard to po prostu wizualna ramka zawierająca kluczowe wskaźniki wydajności, wykresy i statystyki. Mogą być responsywne, interaktywne i aktualizowane w czasie rzeczywistym. Wykorzystując inne podejście, są narzędziami do wizualizacji wyselekcjonowanych informacji w odniesieniu do konkretnego scenariusza przypadku. Dlaczego kurator? Ponieważ system jest często używany, a dane muszą być utrzymywane na niezbędnym poziomie, aby uniknąć przepełnienia aplikacji. Czas ma kluczowe znaczenie, a im szybciej informacje zostaną przetrawione, tym lepiej.

A więc… Tableau i Power BI to tylko frameworki do tworzenia kokpitów i historii. Ponadto Excel może być używany do tworzenia pulpitów nawigacyjnych. W rzeczywistości Excel jest dziadkiem kokpitów menedżerskich… W końcu słowo to jest tylko fantazyjnym terminem używanym do opisania systemu informacyjnego zawierającego statystyki.

Jak mówią niektórzy, obraz jest lepszy niż tysiąc słów, więc przechodzimy do części praktycznej. Kończymy wprowadzenie w tym miejscu i przechodzimy do wyboru narzędzi i losowego zestawu danych do przeprowadzenia EDA, a następnie znajdujemy punkty stresu, które można rozwiązać lub przeanalizować za pomocą naszego pulpitu nawigacyjnego i próbujemy na nie odpowiedzieć. Wszystko, podczas równoległego tworzenia pulpitów nawigacyjnych.

Stos

Aby skutecznie rozbijać ogromne ilości skał, prawdopodobnie potrzebny jest zestaw potężnych i dedykowanych narzędzi. Następna lista opisuje kilka narzędzi używanych w mini projekcie.

Opływowy . Platforma typu open source, która opiera się na trzech głównych zasadach: skrypty jako elementy wizualne, interakcja za pomocą komponentów jako zmiennych i szybkie wdrażanie. Innymi słowy, dzięki Streamlit możliwe jest stworzenie atrakcyjnego wizualnie dashboardu bez konieczności posiadania wiedzy na temat korzystania z front-endu i frameworków do stylizacji. Ten paradygmat pozwala systemowi ignorować specyfikę stylizacji i skupić całą uwagę na zdefiniowaniu KPI i które metody najlepiej je reprezentują.

Altaira. Narzędzie do wizualizacji danych. Altair ma podobny cel jak Matplotlib, ale został zbudowany na innym zestawie zasad. Styl kodowania jest zgodny z paradygmatem deklaratywnym, a jego składnia przypomina format JSON.

Pandy . Biblioteka, której można używać do eksplorowania, czyszczenia i manipulowania danymi tabelarycznymi. Pozwala łączyć wiele tabel, uzupełniać brakujące wartości, konwertować, czyścić, filtrować i wysyłać zapytania.

Scikit-Learn . Biblioteka oferuje wiele narzędzi do analizy danych. Od uczenia maszynowego i modeli statystycznych, harmonogramów szkoleń, metryk do kwantyfikacji błędów i prognoz danych. Korzystając z tego Scikit-Learn, można szybko i łatwo analizować dane. Należy jednak pamiętać, że wdrażane modele nie są najnowocześniejsze.

Numpy . Poprawia czas wymagany do obliczeń numerycznych w ekosystemie Pythona. Natywne dane Numpy składają się z tablic N-wymiarowych.

Marynowane . To narzędzie służy do serializacji i deserializacji obiektów Pythona.

Zestaw danych

Projekt koncentruje się na odkrywaniu tego, co Streamlit ma do zaoferowania, a nie na wykonywaniu kompleksowego, wyselekcjonowanego projektu data science. Tak więc zestaw danych, który zamierzamy wybrać, jest prawie wybierany przez przypadek.

Nasze ustalenia obejmują zestaw danych rynku mieszkaniowego w Seattle (USA). Instancje zbierano między maj'14 a maj'15.

Części

Teraz nadszedł czas na sprawdzenie kilku składników, które składają się na ostateczny pulpit nawigacyjny. Sprawdź pełną implementację na mojej stronie Github (https://github.com/LOCLuisPereira/streamlit_house_market).

Początkowe wskaźniki KPI

Te wskaźniki KPI są pierwszą rzeczą, którą widzi użytkownik. Powinny zwięźle przekazywać ważne informacje. Streamlit oferuje podobny do karty komponent (streamlit.metric), w którym można zdefiniować tytuł, wartość i deltę KPI. Służą do identyfikacji, kwantyfikacji i pomiaru fluktuacji wartości.

W naszym przypadku mamy całkowitą liczbę domów i inne średnie dotyczące rynku mieszkaniowego w Seattle (takie jak średnia cena domu, stan techniczny, liczba pięter itd.).

Początkowe wskaźniki KPI pulpitu nawigacyjnego

Mapa Seattle i dystrybucja domów

Streamlit ma komponent mapy, który umożliwia programistom szybkie tworzenie mapy słowa lub miasta (streamlit.map). Ten komponent jest dość prosty i nie ma skomplikowanych wymagań, ponieważ jego stopień dostosowania jest niski.

Weźmy jako przykład, że do sprawdzenia rozmieszczenia instancji w danym mieście wystarczy komponent. Ale aby zwizualizować rozmieszczenie klastrów i ich odpowiedni kolor, wymagane jest inne narzędzie.

Składnik mapy

Wykorzystanie Altair Map Graph do wizualizacji grupowania

Natywny komponent mapy Streamlit wykorzystuje Altair pod maską. Tak proste jak to. Wspomnieliśmy wcześniej, że ten komponent jest plug-and-play, ale nie oferuje żadnego rodzaju dostosowywania. Alternatywą dla natywnej implementacji jest użycie Altair Chart i połączenie go z komponentem Streamlit-Altair Chart.

Lokalizacja jest kluczowa. Zwłaszcza na rynku mieszkaniowym. Wartość tego samego domu może wzrosnąć 20-krotnie tylko dlatego, że znajduje się w pobliżu oceanu lub w dużym mieście.

Aby upewnić się, że to prawda, przeprowadziliśmy eksperyment. Używając Scikit-Learn i jego implementacji K-Means, uruchamiamy algorytm z różną liczbą klastrów (od 2 do 10). Długość i szerokość geograficzna zostały użyte jako cechy. Z każdego biegu sprawdzamy średnią cenę mieszkania.

Ostatni krok, wizualizacja, został wykonany poprzez połączenie trzech komponentów. Suwak do wybierania żądanej liczby klastrów. Mapa Altaira pokazująca instancje i lokalizację ich mapy. I ramka danych, pokazująca średnią cenę dla każdego klastra.

Liczba klastrów = 3
Liczba klastrów = 6

W końcu lokalizacja naprawdę ma znaczenie. W miarę jak przemieszczamy się z południa na północ, ceny domów rosną. Domy po lewej stronie Seattle są zwykle tańsze. Na rynku mieszkaniowym na cenę może wpływać kilka czynników. Na przykład domy po prawej stronie są bliżej lądu i łatwo jest nawigować do innych części Seattle lub pobliskich miast. Ten powód nie jest kluczowy, ale może wpłynąć na ostateczną cenę domu.

Stopień i stan

Ten element jest prosty i krótki. Korzystając z dwóch wykresów słupkowych, `streamlit.bar_chart`, wykreśliliśmy rozkład ocen i warunków. Wizualizując wykres dochodzimy do wniosku, że większość przypadków leży pośrodku (dla obu wykresów).

Wykres słupkowy do wizualizacji stanu i stopnia

Wykreśliliśmy te dwie cechy względem siebie. Jeśli uznamy, że średni wynik jest neutralny, to większość domów znajduje się po neutralnej stronie wyników. Jeśli nie są neutralne, uzyskują nieśmiały wynik pozytywny.

Wykres bąbelkowy przedstawiający ocenę i korelację razem

Co powiecie na remont domu? Kolejny zestaw wskaźników KPI

Używając streamlit.metric, zaimplementowaliśmy trzy wbudowane wskaźniki KPI, aby szybko analizować dane związane z renowacją domu. Pokazaliśmy liczbę wyremontowanych domów, ich reprezentację na tle pozostałych oraz jaki jest odstęp czasowy między rokiem budowy a remontem.

Kolejny zestaw wskaźników KPI

Patrząc na tablicę rozdzielczą, stwierdziliśmy, że 914 domów zostało wyremontowanych. A domy są zwykle odnawiane po 56 latach od ich budowy.

Kokpit bez wykresu liniowego? Niemożliwy…

Wykres liniowy jest dość powszechny. Streamlit oferuje komponent do zawijania, który umożliwia ich szybkie i łatwe kreślenie. Używamy ich na naszym pulpicie nawigacyjnym, aby zobaczyć sprzedaż domów miesięcznie.

Sprzedaż domu w czasie

Rzuć okiem… Najlepiej sprzedającymi się miesiącami były lipiec 2014 i kwiecień 2015.

Sypialnie i łazienki? Ułożyć je w stos lub zrównoważyć?

Czasami więcej nie jest ściśle związane z lepszym. Aby to potwierdzić lub obalić, wprowadzamy wykres mapy cieplnej, który odnosi się do liczby sypialni, łazienek i średniej ceny za każdą kombinację sypialnia-łazienka.

Patrząc na nowy wykres, widzimy, że zrównoważenie liczby sypialni i łazienek to podstawa. Przemysł faworyzuje proporcje 1:1 i więcej łazienek niż sypialni.

Podczas układania sypialni cena zwykle mieści się w tym samym przedziale. Ale przy dodawaniu łazienek cena zawsze ma tendencję do wzrostu.

Nasz wykres mapy cieplnej

Można to prawdopodobnie wyjaśnić, kierując się prostym rozumowaniem. Ludzie nie lubią czekać, a ludzie nie lubią udostępniać wyjątkowo prywatnych przestrzeni. Podsumowując, umożliwienie mieszkańcom i gościom wyższego stopnia prywatności prowadzi do wyższych wartości nieruchomości.

Mam nieruchomość w Seattle… Czy możesz mi pomóc znaleźć uczciwą cenę sprzedaży?

Możemy rozłożyć to pytanie na dwa mniejsze problemy. Co możemy zrobić, aby połączyć przepływ informacji od użytkownika do naszego systemu informatycznego. I czy możemy użyć dowolnego algorytmu uczenia maszynowego do przetworzenia danych i przypisania możliwej ceny na podstawie informacji wejściowych.

Streamlit oferuje kilka komponentów, które automatycznie łączą komunikację użytkownika i systemu. W tym konkretnym przypadku użyjemy komponentów formularza. Komponent ten umożliwia łączenie innych komponentów z jedynym wymaganiem ostatniego przycisku, który uruchamia przesyłanie danych.

Formularz do mostkowania komunikacji użytkownika z systemem

Informacje z komponentu formularza są przekazywane do dwóch wstępnie wytrenowanych modeli. Po wnioskowaniu dane są wysyłane do pulpitu nawigacyjnego, a użytkownicy mogą zobaczyć dwa możliwe oszacowania wartości.

Ponieważ misją projektu jest zbudowanie dashboardu i eksploracja większości komponentów Streamlit, wykorzystaliśmy dwa podstawowe algorytmy modelu uczenia maszynowego, które są zaimplementowane w Scikit-Learn. Ostatecznie mamy Bayesian Ridge i Random Forest z wynikiem 0,54 i 0,87 R2 dla wszystkich danych.

Prognozy cenowe

Można zapytać, po co utrzymywać model z wynikiem 0,54? Zachowaliśmy to jako żart. Model czasami generuje wartości ujemne. Innymi słowy, model mówi nam, że możemy kupić dom… i otrzymać pieniądze na jego utrzymanie.

Co znajduje się wewnątrz ramki danych?

Do tego zadania Streamlit oferuje trzy różne opcje. Jeden dla tabel statycznych, jeden dla ramki danych, a drugi dla JSON. Tutaj skupimy się na dwóch ostatnich.

Funkcja dataframe generuje tabelę, która umożliwia wizualizację struktury zbioru danych w sposób tabelaryczny. Istnieje możliwość sortowania kolumn rosnąco lub malejąco, co poprawia wizualizację i semantykę danych.

Usprawniona tabela ramek danych

Dane wyjściowe JSON przypominają funkcję dumpingową z wcięciem, która pochodzi z biblioteki JSON Pythona.

Usprawniony komponent JSON

Oba komponenty mają przypadek użycia. Komponent ramki danych może służyć do szybkiego analizowania informacji i na przykład znajdowania maksimów, minimów, sprawdzania brakujących lub pustych wartości i tak dalej. JSON doskonale nadaje się do sprawdzania struktury danych i typu, z wyjątkiem każdego pola w zbiorze danych.

Ostateczne ujęcia

To koniec drogi dla tego projektu. Nie badaliśmy żadnych delikatnych ani najnowocześniejszych algorytmów. Były proste w teorii iw realizacji. Ale dzięki tej implementacji jesteśmy w stanie medytować i odpowiadać na pytania dotyczące tego, jak dobry jest framework i czy jest kompatybilny z naszym stosem.

W końcu Streamlit jest w stanie zaoferować to, co proponuje. Tworzenie pulpitu nawigacyjnego jest tak proste, jak napisanie skryptu. Dane są wyświetlane w sposób interaktywny i uporządkowany. Chociaż nie pokazaliśmy tego, wdrożenie prototypu jest szybkie i łatwe.

W tej chwili widzimy tylko dwa możliwe minusy. Routing i stylizacja. Routing dla wielostronicowego pulpitu nawigacyjnego. Stylizacja w celu rozszerzenia obecnego mechanizmu stylizacji i umożliwienia wyższego stopnia dostosowania.

Moje osobiste podejście do Streamlit jest proste. Jestem bardzo podekscytowany możliwością wykorzystania w innych moich projektach. Tworzenie prototypów lub własnych kokpitów jest szybkie, wyniki są estetyczne, a EDA staje się jeszcze bardziej ekscytujące… ze względu na to, jak łatwo możemy wizualizować dane na froncie.

Premia. A co z pulpitami nawigacyjnymi w czasie rzeczywistym?

W naszym projekcie nie mieliśmy potrzeby aktualizowania danych w czasie rzeczywistym. Ale Streamlit oferuje metody implementacji wizualizacji danych w czasie rzeczywistym. Mechanizm jest prosty. Stwórz pusty komponent, ustaw pętlę, pobierz i wyślij dane… Voilà! Ciągłe strumienie danych w czasie rzeczywistym. Zobacz poniższe obrazy jako dowód możliwości frameworka.

Podkręcenie deski rozdzielczej i sprawdzenie ceny początkowej
Cena właśnie się zmieniła i pokazuje to pulpit nawigacyjny

że to! Do zobaczenia następnym razem.