V předchodí části jsme velice efektivně vytvořili jednoduchý a přesto užitečný dashboard na vizualizaci dat. Teď se podíváme na trochu rozsáhlejší aplikaci: Vrátíme se zpět k rybám, tučňákům a strojovému učení.
Když jsme zkoumali možnosti strojového učení (regrese, klasifikace, klastrování atd.), měnili jsme metody, (hyper)parametry a dívali jsme se, jak dobře se stroj naučil odhadovat nějakou vlastnost z dat. To je rozhodně příležitost pro pěkný dashboard, který nám takovou práci usnadní.
První verzi aplikace najdeš v Github repozitáři https://github.com/coobas/fishboard. K sobě si ji naklonuješ příkazem
git clone https://github.com/coobas/fishboard.git
Pro lokální vývoj takového dashboardu je rozumné vytvořit pro ni vlastní virtuální prostředí, aby se nemíchaly balíky z jiných projektů a aby tak chování aplikace bylo lokálně stejné jako na serveru. Můžeme postupovat takto:
cd fishboard
python3 -m venv .venv
Tím jsme vytvořili virtuální prostředí v adresáři .venv
. Aktivujeme ho na Linuxu / Mac OS pomocí
source .venv/bin/activate
nebo na Windows
.venv/bin/activate.bat
A teď nainstalujeme všechny potřebné balíky:
python -m pip install -r requirements.txt
Pak by měl jít fishboard spustit už známým způsobem:
streamlit run fishboard.py
Jistě si všichni všimli, že fishboard umí pracovat jen s rybími daty a navíc je neumí ani vykreslit. Ještě že máme tuto část připravenou z předchozí části a nic nám nebrání ji použít.
Úkol: Přidej do fishboardu naši předchozí aplikaci pro načítání a zobrazování dat. Asi bude potřeba někde místo st.
použít col1.
.
Streamlit aplikace je vlastně takový skript. Spouští se pořád dokola, jakmile uživatel něco zadá, někam klikne. Je to záměr, tento design přináší opravdu přímočarý způsob psaní užitečných webových aplikací. Za tuto přímočarost ale samozřejmě platíme některými omezeními.
Od Streamlitu rozhodně nečekejte nejsvižnější uživatelské rozhraní, spíš naopak. Tím, že se aplikace spouští celá stále dokola, může docházet k menším i větším prodlevám (které ovšem nemusí zásadně vadit). Existují dva jednoduché způsoby, jak rychlost optimalizovat:
st.cache
, která se nejčastěji používá jako @dekorátor.Programování ve Streamlitu je přímočaré a taková by měla být i aplikace, kterou vytváříme. Pokud potřebujeme nestandardní komponenty (widgety), detailní rozložení komponent na stránce nebo komplexní interakce mezi komponenty, je potřeba sáhnout jinam: Ve světě čistého Pythonu nám mohou posloužit Dash nebo Panel. Největší možnosti pak přináší rozdělení aplikace na backend a frontend. Backend napíšeme samozřejmě v Pythonu (pomůže nám např. FastAPI), frontend pak třeba v TypeScript a React.
Přidej do fishboardu možnost klasifikace a / nebo klastrování (PCA). Aplikaci spusť na Heroku. Jako bonus můžeš dát svůj kód k dispozici na Githubu.