Str pertama

Nov 28 2022
Lebih dari seorang ilmuwan dan insinyur komputer, saya adalah manusia. Dan sebagai manusia, melihat adalah salah satu pengalaman sensorik yang paling penting dan bermanfaat yang dapat kita miliki.

Lebih dari seorang ilmuwan dan insinyur komputer, saya adalah manusia. Dan sebagai manusia, melihat adalah salah satu pengalaman sensorik yang paling penting dan bermanfaat yang dapat kita miliki. Oleh karena itu, sebagai permulaan, saya akan memamerkan dasbor pertama saya yang dibangun di atas kerangka kerja Streamlit (dengan bantuan python, panda, dan Altair).

pengantar

Dasbor? Tablo? PowerBI? Mengapa tidak menggunakan beberapa lembar Excel saja?

Kata “dashboard” tentunya menjadi trending buzzword di ranah data science, data engineering, business intelligence dan sebagainya. Tapi apa itu dasbor? Dan apa yang bisa saya lakukan dengannya?

Pertama, ketika kita mendengar kata dasbor, orang akan lebih cepat mengingat polisi yang menarik mobil di film, daripada sistem komputer yang penuh dengan grafik. "Apakah kamu tidak melihat kebut-kebutan di dasbor mobil?" Yah… Dasbor hanyalah bingkai visual yang berisi beberapa indikator kinerja utama, bagan, dan statistik. Mereka bisa responsif, interaktif dan diperbarui secara real-time. Menggunakan pendekatan yang berbeda, mereka adalah alat untuk memvisualisasikan informasi yang dikuratori relatif terhadap skenario kasus tertentu. Mengapa dikuratori? Karena sistem ini sering digunakan dan data harus disimpan pada tingkat yang penting untuk menghindari aplikasi yang berlebihan. Waktu sangat penting dan semakin cepat informasi dicerna, semakin baik.

Jadi… Tableau dan Power BI hanyalah kerangka kerja untuk membuat dasbor dan cerita. Juga, Excel dapat digunakan untuk membuat dasbor. Faktanya, Excel adalah kakek dari dasbor… Pada akhirnya, kata tersebut hanyalah istilah keren yang digunakan untuk mendeskripsikan sistem informasi yang berisi statistik.

Seperti yang dikatakan beberapa orang, sebuah gambar lebih baik daripada seribu kata, jadi kita beralih ke bagian praktisnya. Kami menyelesaikan pengantar di sini dan beralih ke memilih alat dan memilih kumpulan data acak untuk melakukan EDA, kemudian menemukan titik stres yang dapat dipecahkan, atau dianalisis, menggunakan dasbor kami dan mencoba menjawabnya. Semua, sambil melakukan dashboarding secara paralel.

Tumpukan

Untuk memecahkan batu dalam jumlah besar secara efisien, seseorang mungkin membutuhkan seperangkat alat yang kuat dan berdedikasi. Daftar berikutnya menjelaskan beberapa alat yang digunakan dalam proyek mini.

Streamlit . Kerangka kerja sumber terbuka yang mengikuti tiga prinsip utama: skrip sebagai visual, interaksi melalui penggunaan komponen sebagai variabel, dan penyebaran cepat. Dengan kata lain, dengan Streamlit dimungkinkan untuk membuat dasbor yang menarik secara visual tanpa perlu mengetahui cara menggunakan kerangka kerja front-end dan styling. Paradigma ini memungkinkan sistem untuk mengabaikan spesifikasi gaya dan memfokuskan semua perhatian pada penentuan KPI dan metode mana yang lebih baik untuk merepresentasikannya.

Altair. Alat visualisasi data. Altair memiliki tujuan yang sama dengan Matplotlib, tetapi dibangun di atas prinsip yang berbeda. Gaya pengkodean mengikuti paradigma deklaratif, dan sintaksnya menyerupai format JSON.

Panda . Library yang dapat digunakan untuk menjelajahi, membersihkan, dan memanipulasi data tabular. Mengizinkan menggabungkan beberapa tabel, mengisi nilai yang hilang, mengonversi, membersihkan, memfilter, dan kueri.

Scikit-Pelajari . Perpustakaan menawarkan beberapa alat untuk analisis data. Dari pembelajaran mesin dan model statistik, jadwal pelatihan, metrik untuk kuantifikasi kesalahan, dan prediksi data. Dengan menggunakan Scikit-Learn ini, dimungkinkan untuk menganalisis data dengan cepat dan mudah. Namun perlu diingat bahwa model yang diterapkan bukanlah model yang mutakhir.

Numpy . Meningkatkan waktu yang dibutuhkan untuk komputasi numerik di dalam ekosistem Python. Data asli Numpy terdiri dari larik N-Dimensi.

Acar . Alat ini digunakan untuk serialisasi dan deserialisasi objek Python.

Kumpulan Data

Proyek ini berfokus untuk mengeksplorasi apa yang ditawarkan Streamlit, bukan untuk melakukan proyek ilmu data kurasi end-to-end. Jadi dataset yang akan kita pilih hampir dipilih karena keberuntungan belaka.

Temuan kami terdiri dari dataset pasar perumahan Seattle (AS). Instance dikumpulkan antara 14 Mei dan 15 Mei.

Komponen

Sekarang saatnya memeriksa beberapa komponen yang ditambahkan ke dasbor akhir. Periksa implementasi lengkapnya di halaman Github saya (https://github.com/LOCLuisPereira/streamlit_house_market).

Metrik KPI Awal

Metrik KPI ini adalah hal pertama yang dilihat pengguna. Mereka harus menyampaikan informasi penting secara ringkas. Streamlit menawarkan komponen mirip kartu (streamlit.metric), di mana seseorang dapat menentukan judul KPI, nilai, dan delta. Mereka digunakan untuk identifikasi, kuantifikasi dan mengukur fluktuasi nilai.

Dalam kasus kami, kami memiliki jumlah total rumah dan beberapa rata-rata lainnya tentang pasar perumahan Seattle (seperti harga rumah rata-rata, jumlah lantai kondisi, dan sebagainya).

Metrik KPI Awal Dasbor

Peta Seattle dan Distribusi Rumah

Streamlit memiliki komponen peta yang memungkinkan pengembang membuat kata atau peta kota dengan cepat (streamlit.map). Komponen ini cukup sederhana dan tidak memerlukan persyaratan yang rumit, karena tingkat penyesuaiannya rendah.

Ambil contoh, untuk memeriksa distribusi instance di kota tertentu, komponennya sudah cukup. Tetapi untuk memvisualisasikan distribusi cluster, dan warnanya masing-masing, diperlukan alat lain.

Komponen peta

Menggunakan Grafik Peta Altair Untuk Visualisasi Clustering

Komponen peta asli Streamlit menggunakan Altair di bawah tenda. Sesimpel itu. Kami menyatakan sebelumnya, bahwa komponen ini adalah plug-and-play, tetapi tidak menawarkan penyesuaian apa pun. Alternatif untuk implementasi asli adalah menggunakan Altair Chart dan menautkannya dengan komponen Streamlit-Altair Chart.

Lokasi adalah kuncinya. Terutama, pada bisnis pasar perumahan. Rumah yang sama dapat memiliki nilainya dikalikan 20x hanya dengan berada di dekat laut atau berada di dalam kota besar.

Untuk memastikan kebenarannya, kami menjalankan percobaan. Menggunakan Scikit-Learn dan implementasi K-Means-nya, kami menjalankan algoritme dengan jumlah cluster yang berbeda (dari 2 hingga 10). Bujur dan lintang digunakan sebagai fitur. Dari setiap putaran, kami memeriksa harga rumah rata-rata.

Langkah terakhir yaitu visualisasi dilakukan dengan menggabungkan tiga komponen. Slider untuk memilih jumlah cluster yang diinginkan. Peta Altair untuk menampilkan instance dan lokasi peta mereka. Dan kerangka data, untuk menunjukkan harga rata-rata untuk setiap cluster.

Jumlah cluster = 3
Jumlah cluster = 6

Pada akhirnya, lokasi memang penting. Saat kita pergi dari Selatan ke Utara, harga rumah naik. Rumah di sisi kiri Seattle cenderung lebih murah. Di pasar perumahan, beberapa faktor dapat mempengaruhi harga. Misalnya, rumah di sisi kanan lebih dekat ke daratan, dan mudah dinavigasi ke bagian lain Seattle atau kota terdekat. Alasan ini tidak penting, tapi bisa membebani harga akhir rumah.

Grade dan Kondisi

Komponen ini sederhana dan pendek. Dengan menggunakan dua bagan batang, `streamlit.bar_chart`, kami memplot distribusi nilai dan kondisi. Dengan memvisualisasikan grafik, kami menyimpulkan bahwa sebagian besar contoh terletak di tengah (untuk kedua grafik).

Bar plotting untuk visualisasi kondisi dan grade

Kami memplot kedua fitur ini satu sama lain. Jika kita menganggap, skor rata-rata netral, maka mayoritas rumah cenderung berada di sisi netral skor. Jika tidak netral, mereka jatuh ke skor positif yang pemalu.

Bagan gelembung merencanakan nilai dan korelasi secara bersamaan

Bagaimana dengan Renovasi Rumah? Kumpulan KPI lainnya

Dengan menggunakan streamlit.metric, kami menerapkan tiga metrik KPI sebaris untuk menganalisis data terkait renovasi rumah dengan cepat. Kami menunjukkan jumlah rumah yang direnovasi, keterwakilannya terhadap yang lain, dan berapa rentang waktu antara tahun konstruksi dan renovasi.

Kumpulan KPI lainnya

Dengan melihat dashboard, kami menemukan 914 rumah telah direnovasi. Dan rumah cenderung dipulihkan setelah 56 tahun setelah pembangunannya.

Dasbor tanpa bagan garis? Mustahil…

Bagan garis cenderung cukup umum. Streamlit menawarkan komponen bungkus untuk memplotnya dengan cepat dan mudah. Di dasbor kami, kami menggunakannya untuk melihat penjualan rumah per bulan.

Penjualan rumah dari waktu ke waktu

Lihat sekilas… Bulan terlaris adalah Juli 2014 dan April 2015.

Kamar Tidur dan Kamar Mandi? Tumpuk atau seimbangkan?

Terkadang, lebih banyak tidak terkait erat dengan lebih baik. Untuk mengonfirmasi atau menyanggahnya, kami menerapkan arang peta panas yang terkait dengan jumlah kamar tidur, kamar mandi, dan harga rata-rata untuk setiap kombinasi kamar tidur-kamar mandi.

Saat melihat grafik baru, kita dapat melihat bahwa menyeimbangkan jumlah kamar tidur dan kamar mandi adalah hal mendasar. Industri menyukai rasio 1:1 dan lebih banyak kamar mandi daripada kamar tidur.

Saat menumpuk kamar tidur, harganya cenderung berada di kisaran yang sama. Namun saat menambah kamar mandi, harganya selalu cenderung naik.

Bagan peta panas kami

Ini mungkin dapat dijelaskan dengan mengikuti penalaran sederhana. Orang tidak suka menunggu, dan orang tidak suka berbagi ruang yang sangat privasi. Singkatnya, memungkinkan penghuni dan tamu memiliki tingkat privasi yang lebih tinggi menghasilkan nilai properti yang lebih tinggi.

Saya memiliki properti di Seattle… Bisakah Anda membantu saya menemukan harga jual yang wajar?

Kita dapat mendekonstruksi pertanyaan ini menjadi dua masalah yang lebih kecil. Apa yang bisa kita lakukan untuk menjembatani arus informasi dari pengguna ke sistem informasi kita. Dan dapatkah kita menggunakan algoritme pembelajaran mesin apa pun untuk mencerna data dan atribut harga yang mungkin diberikan informasi masukan.

Streamlit menawarkan beberapa komponen yang secara otomatis menjembatani komunikasi pengguna dan sistem. Dalam kasus khusus ini, kita akan menggunakan komponen formulir. Komponen ini memungkinkan penggabungan komponen lain dengan satu-satunya persyaratan tombol terakhir, yang memicu pengiriman data.

Formulir untuk menjembatani komunikasi pengguna-sistem

Informasi dari komponen formulir dimasukkan ke dalam dua model terlatih. Setelah inferensi, data dikirim ke dasbor dan pengguna dapat melihat dua kemungkinan estimasi nilai.

Karena misi proyek ini adalah membangun dasbor dan menjelajahi sebagian besar komponen Streamlit, kami menggunakan dua algoritme model pembelajaran mesin dasar, yang diterapkan di Scikit-Learn. Pada akhirnya, kami memiliki Bayesian Ridge dan Random Forest dengan skor 0,54 dan 0,87 R2 pada keseluruhan data.

Prediksi harga

Orang bisa bertanya, mengapa mempertahankan model dengan skor 0,54? Kami menyimpannya sebagai lelucon. Model terkadang menampilkan nilai negatif. Dengan kata lain, model memberi tahu kita bahwa kita dapat membeli rumah… dan menerima uang untuk menyimpannya.

Apa yang ada di dalam Bingkai Data?

Untuk tugas ini, Streamlit menawarkan tiga opsi berbeda. Satu untuk tabel statis, satu untuk kerangka data dan satu lagi untuk JSON. Di sini, kita akan fokus pada dua yang terakhir.

Fungsi Dataframe menghasilkan tabel yang memungkinkan memvisualisasikan struktur kumpulan data secara tabular. Dimungkinkan untuk mengurutkan kolom naik atau turun, yang meningkatkan visualisasi dan semantik data.

Tabel bingkai data Streamlit

Keluaran JSON menyerupai fungsi dumping, dengan indentasi, yang asli dari pustaka JSON Python.

Streamlit komponen JSON

Kedua komponen memiliki use case. Komponen kerangka data dapat digunakan untuk menganalisis informasi dengan cepat dan, misalnya, menemukan maksimum, minimum, memeriksa nilai yang hilang atau nol, dan seterusnya. Yang JSON sangat bagus untuk memeriksa struktur data dan tipe apa kecuali untuk setiap bidang pada kumpulan data.

Pengambilan Akhir

Ini adalah akhir dari jalan untuk proyek ini. Kami tidak mengeksplorasi algoritme rumit atau canggih apa pun. Mereka sederhana dalam teori dan implementasi. Tetapi dengan implementasi ini, kami berada dalam posisi untuk bermeditasi dan menjawab pertanyaan tentang seberapa bagus framework tersebut dan apakah itu kompatibel dengan tumpukan kami.

Pada akhirnya, Streamlit mampu menawarkan apa yang ditawarkannya. Membuat dasbor semudah menulis skrip. Data ditampilkan secara interaktif dan terorganisir. Meskipun kami tidak memamerkannya, menyebarkan prototipe itu cepat dan mudah.

Saat ini, kami hanya dapat melihat dua kemungkinan kerugian. Perutean dan gaya. Perutean untuk dasbor multi halaman. Styling untuk memperluas mekanisme styling saat ini dan memungkinkan tingkat penyesuaian yang lebih tinggi.

Pandangan pribadi saya tentang Streamlit sederhana. Saya cukup bersemangat untuk menggunakannya dalam proyek saya yang lain. Membuat prototipe atau dasbor internal cepat, hasilnya menyenangkan secara estetika dan EDA menjadi lebih mendebarkan… karena betapa sederhananya kita dapat memvisualisasikan data di frontend.

Bonus. Bagaimana dengan dasbor waktu nyata?

Dalam proyek kami, kami tidak memerlukan pembaruan data waktu nyata. Tetapi Streamlit menawarkan metode untuk mengimplementasikan visualisasi data secara real-time. Mekanismenya sederhana. Buat komponen kosong, atur loop, ambil dan beri makan data… Voila! Aliran data berkelanjutan dan real-time. Lihat gambar di bawah ini sebagai bukti kemampuan framework.

Menghidupkan dasbor dan memeriksa harga awal
Harga baru saja berubah dan dasbor menunjukkannya

Itu saja! Sampai jumpa lain waktu.