İlk Sokak

Nov 28 2022
Bir bilgisayar bilimcisi ve mühendisinden daha fazlası, ben bir insanım. Ve bir insan olarak görmek, sahip olabileceğimiz en önemli ve ödüllendirici duyusal deneyimlerden biridir.

Bir bilgisayar bilimcisi ve mühendisinden daha fazlası, ben bir insanım. Ve bir insan olarak görmek, sahip olabileceğimiz en önemli ve ödüllendirici duyusal deneyimlerden biridir. Bu nedenle, başlangıç ​​olarak, Streamlit çerçevesi üzerine inşa edilmiş ilk kontrol panelimi (python, pandas ve Altair'in yardımıyla) sergileyeceğim.

giriiş

Panolar? Tablo? PowerBI? Neden sadece birkaç Excel sayfası kullanmıyorsunuz?

"Gösterge panosu" kelimesi kesinlikle veri bilimi, veri mühendisliği, iş zekası ve benzeri alanlarda trend olan bir terimdir. Ancak gösterge panosu nedir? Ve onunla ne yapabilirim?

İlk olarak, gösterge panosu kelimesini duyduğumuzda, çizelgelerle dolu bir bilgisayar sistemi yerine, filmlerde araba çeken bir polisi daha hızlı hatırlıyoruz. "Aşırı hızı arabanın gösterge panelinde görmedin mi?" Pekala… Gösterge tablosu, bazı temel performans göstergelerini, çizelgeleri ve istatistikleri içeren basit bir görsel çerçevedir. Duyarlı, etkileşimli ve gerçek zamanlı olarak güncellenebilirler. Farklı bir yaklaşım kullanarak, belirli bir vaka senaryosuna göre seçilmiş bilgilerin görselleştirilmesine yönelik araçlardır. Neden küratörlüğünü yaptı? Çünkü sistem sıklıkla kullanılıyor ve uygulamanın aşırı beslenmesini önlemek için verilerin önemli bir seviyede tutulması gerekiyor. Zaman çok önemlidir ve bilgi ne kadar hızlı sindirilirse o kadar iyidir.

Yani... Tableau ve Power BI, panolar ve hikayeler oluşturmak için yalnızca çerçevelerdir. Ayrıca, Excel panoları oluşturmak için kullanılabilir. Aslında, Excel gösterge tablolarının atası... Sonuç olarak, kelime sadece istatistik içeren bir bilgi sistemini tanımlamak için kullanılan süslü bir terimdir.

Bazılarının dediği gibi, bir resim bin kelimeden daha iyidir, bu yüzden pratik kısma geçiyoruz. Giriş bölümünü burada tamamlıyoruz ve araçları seçmeye ve EDA gerçekleştirmek için rastgele bir veri kümesi seçmeye geçiyoruz, ardından panomuzu kullanarak çözülebilecek veya analiz edilebilecek stres noktalarını bulup yanıtlamaya çalışıyoruz. Tümü, paralel olarak pano oluştururken.

Yığın

Büyük miktarlarda kayayı verimli bir şekilde kırmak için, muhtemelen bir dizi güçlü ve özel araç gerekir. Bir sonraki liste, mini projede kullanılan çeşitli araçları açıklamaktadır.

Akış ışığı Üç ana ilkeyi izleyen açık kaynaklı çerçeve: görsel olarak komut dosyası oluşturma, bileşenleri değişken olarak kullanarak etkileşim ve hızlı dağıtım. Başka bir deyişle, Streamlit ile ön uç ve stil çerçevelerinin nasıl kullanılacağını bilmeye gerek kalmadan görsel açıdan çekici bir pano oluşturmak mümkündür. Bu paradigma, sistemin stil özelliklerini göz ardı etmesine ve tüm dikkatini KPI'yı tanımlamaya ve bunları temsil etmek için hangi yöntemlerin daha iyi olduğuna odaklamasına olanak tanır.

Altair. Veri görselleştirme aracı. Altair, Matplotlib ile benzer bir amaca sahiptir, ancak farklı bir dizi ilke üzerine inşa edilmiştir. Kodlama stili bildirimsel bir paradigmayı takip eder ve sözdizimi JSON biçimine benzer.

pandalar _ Tablo verilerini keşfetmek, temizlemek ve değiştirmek için kullanılabilen kitaplık. Birden çok tabloyu birleştirmeye, eksik değerleri doldurmaya, dönüştürmeye, temizlemeye, filtrelemeye ve sorgulamaya izin verir.

Scikit-Öğrenin . Kütüphane, veri analizi için birden fazla araç sunar. Makine öğreniminden ve istatistiksel modellerden, eğitim programlarından, hata ölçümü için metriklerden ve veri tahminlerinden. Bu Scikit-Learn'ü kullanarak verileri hızlı ve kolay bir şekilde analiz etmek mümkündür. Ancak uygulanan modellerin son teknoloji olmadığını unutmayın.

Uyuşuk _ Python ekosistemindeki sayısal hesaplamalar için gereken süreyi iyileştirir. Numpy'nin yerel verileri, N-Boyutlu dizilerden oluşur.

turşu _ Bu araç, Python nesnelerinin serileştirilmesi ve seri durumundan çıkarılması için kullanılır.

Veri Kümesi

Proje, uçtan uca seçilmiş bir veri bilimi projesi gerçekleştirmek için değil, Streamlit'in neler sunabileceğini keşfetmeye odaklanıyor. Yani seçeceğimiz veri seti neredeyse tamamen şans eseri seçilmiştir.

Bulgularımız bir Seattle (ABD) konut piyasası veri setinden oluşmaktadır. Örnekler Mayıs'14 ile Mayıs'15 arasında toplandı.

Bileşenler

Şimdi, son kontrol panelini oluşturan çeşitli bileşenleri kontrol etme zamanı. Github sayfamdaki tam uygulamayı kontrol edin (https://github.com/LOCLuisPereira/streamlit_house_market).

İlk KPI Metrikleri

Bu KPI metrikleri, kullanıcının gördüğü ilk şeydir. Önemli bilgileri kısa ve öz bir şekilde iletmelidirler. Streamlit, KPI başlığının, değerinin ve bir deltanın tanımlanabileceği, kart benzeri bir bileşen (streamlit.metric) sunar. Tanımlama, niceleme ve ölçüm değeri dalgalanması için kullanılırlar.

Bizim durumumuzda, toplam ev sayısına ve Seattle konut piyasasıyla ilgili diğer bazı ortalamalara sahibiz (ortalama ev fiyatı, kat durumu sayısı vb.).

Dashboard'un İlk KPI ölçümleri

Seattle Haritası ve Ev Dağılımı

Streamlit, geliştiricinin hızlı bir şekilde bir kelime veya şehir haritası (streamlit.map) oluşturmasını sağlayan bir harita bileşenine sahiptir. Bu bileşen oldukça basittir ve özelleştirme derecesi düşük olduğu için karmaşık gereksinimler oluşturmaz.

Örnek olarak, belirli bir şehirdeki bulut sunucusu dağılımını kontrol etmek için bileşen yeterlidir. Ancak küme dağılımını ve ilgili renklerini görselleştirmek için başka bir araç gereklidir.

Harita bileşeni

Kümeleme Görselleştirmesi İçin Altair Harita Grafiğini Kullanma

Streamlit'in yerel harita bileşeni, başlık altında Altair'i kullanır. Kadar basit. Daha önce bu bileşenin tak ve çalıştır olduğunu ancak herhangi bir özelleştirme sunmadığını belirtmiştik. Yerel uygulamaya bir alternatif, Altair Chart'ı kullanmak ve onu Streamlit-Altair Chart bileşenine bağlamaktır.

Konum anahtardır. Özellikle konut piyasası işinde. Aynı evin okyanusa yakın olması veya büyük bir şehrin içinde olması bile değerini 20 kat arttırabilir.

Bunun gerçekten doğru olduğundan emin olmak için bir deney yaptık. Scikit-Learn ve K-Means uygulamalarını kullanarak, algoritmayı farklı sayıda kümeyle (2'den 10'a kadar) çalıştırıyoruz. Boylam ve enlem öznitelik olarak kullanılmıştır. Her çalıştırmada, ortalama konut fiyatını kontrol ederiz.

Son adım olan görselleştirme, üç bileşenin birleştirilmesiyle yapılmıştır. İstenen sayıda küme seçmek için kaydırıcı. Örnekleri ve haritalarının konumunu gösteren bir Altair haritası. Ve her küme için ortalama fiyatı gösteren bir veri çerçevesi.

Küme sayısı = 3
Küme sayısı = 6

Sonunda, konum gerçekten önemli. Güneyden Kuzeye gidildikçe ev fiyatları artıyor. Seattle'ın sol tarafındaki evler genellikle daha ucuzdur. Konut piyasasında, birkaç faktör fiyatı etkileyebilir. Örneğin, sağ taraftaki evler anakaraya daha yakındır ve Seattle'ın diğer bölgelerine veya yakın şehirlere gitmek kolaydır. Bu neden çok önemli değildir, ancak evin nihai fiyatına ağırlık verebilir.

Sınıf ve Durum

Bu bileşen basit ve kısadır. `streamlit.bar_chart` adlı iki çubuk grafiği kullanarak derece ve koşul dağılımını çizdik. Grafiği görselleştirerek, örneklerin çoğunun ortada olduğu sonucuna varıyoruz (her iki grafik için).

Durum ve eğim görselleştirmesi için çubuk çizimi

Bu iki özelliği birbirine karşı çizdik. Ortalama puanı tarafsız olarak düşünürsek, evlerin çoğu puanların nötr tarafında yer alma eğilimindedir. Tarafsız değilse, ürkek bir pozitif puana düşerler.

Notu ve korelasyonu birlikte çizen kabarcık grafiği

Ev Tadilatı Nasıl Olur? Başka bir KPI seti

Streamlit.metric'i kullanarak, ev yenilemeleriyle ilgili verileri hızlı bir şekilde analiz etmek için üç satır içi KPI metriği uyguladık. Yenilenen evlerin sayısını, diğerlerine karşı temsillerini ve inşaat ile yenileme yılı arasındaki süreyi gösterdik.

Başka bir KPI seti

Panoya baktığımızda 914 evin yenilendiğini gördük. Ve evler inşa edildikten 56 yıl sonra restore edilme eğilimindedir.

Çizgi grafiği olmayan bir pano mu? İmkansız…

Çizgi grafiği oldukça yaygın olma eğilimindedir. Streamlit, bunları hızlı ve kolay bir şekilde çizmek için bir sarma bileşeni sunar. Kontrol panelimizde, bunları aylık ev satışlarını görmek için kullanırız.

Zamanla ev satışı

Bir göz atın… En çok satan aylar Temmuz 2014 ve Nisan 2015 oldu.

Yatak odaları ve Banyolar? İstifleyin veya dengeleyin?

Bazen daha çok, daha iyi ile yakından ilişkili değildir. Bunu doğrulamak veya çürütmek için, yatak odası, banyo sayısı ve her bir yatak odası-banyo kombinasyonu için ortalama fiyatla ilgili bir ısı haritası karakteri uyguluyoruz.

Yeni grafiğe baktığımızda, yatak odası ve banyo sayısını dengelemenin esas olduğunu görebiliriz. Endüstri 1:1 oranlarını ve yatak odalarından daha fazla banyoyu tercih eder.

Yatak odasını istiflerken, fiyat aynı aralıkta olma eğilimindedir. Ancak banyo eklerken fiyat her zaman artma eğilimindedir.

Isı haritası grafiğimiz

Bu muhtemelen basit bir akıl yürütme izlenerek açıklanabilir. İnsanlar beklemeyi sevmezler ve insanlar aşırı mahremiyet alanlarını paylaşmayı sevmezler. Özetle, sakinlerin ve misafirlerin daha yüksek derecede mahremiyete sahip olmalarını sağlamak, mülklerde daha yüksek değerlere yol açar.

Seattle'da bir mülküm var… Satış için makul bir fiyat bulmama yardım eder misiniz?

Bu soruyu daha küçük iki probleme ayırabiliriz. Kullanıcıdan bilgi sistemimize bilgi akışını köprülemek için ne yapabiliriz? Verileri sindirmek ve girdi bilgileri verildiğinde olası bir fiyatı ilişkilendirmek için herhangi bir makine öğrenimi algoritmasını kullanabilir miyiz?

Streamlit, kullanıcı ve sistem iletişimi arasında otomatik olarak köprü kuran çeşitli bileşenler sunar. Bu özel durumda, form bileşenlerini kullanacağız. Bu bileşen, veri gönderimini tetikleyen son bir düğmenin tek gereksinimiyle diğer bileşenlerin birleştirilmesine olanak tanır.

Kullanıcı-sistem iletişimini köprülemek için form

Form bileşeninden gelen bilgiler, önceden eğitilmiş iki modele beslenir. Çıkarımdan sonra, veriler panoya gönderilir ve kullanıcılar iki olası değer tahminini görebilir.

Projenin misyonu bir pano oluşturmak ve Streamlit bileşenlerinin çoğunu keşfetmek olduğundan, Scikit-Learn'de uygulanan iki temel makine öğrenimi modeli algoritması kullandık. Sonunda, tüm verilerde 0.54 ve 0.87 R2 puanına sahip Bayesian Ridge ve Random Forest'a sahibiz.

fiyat tahminleri

0.54 puanlı bir model neden tutulur diye sorulabilir. Şaka amaçlı sakladık. Model bazen negatif değerler verir. Sırayla, model bize bir ev satın alabileceğimizi… ve onu korumak için para alabileceğimizi söylüyor.

Dataframe'in içinde neler var?

Bu görev için Streamlit üç farklı seçenek sunuyor. Biri statik tablolar için, biri dataframe için ve diğeri JSON için. Burada son ikisine odaklanacağız.

Dataframe'in işlevi, veri kümesinin yapısını tablo şeklinde görselleştirmeye izin veren bir tablo çıkarır. Sütunları artan veya azalan şekilde sıralamak mümkündür, bu da görselleştirmeyi ve veri semantiğini geliştirir.

Streamlit dataframe tablosu

JSON'un çıktısı, Python'un JSON kitaplığından özgün olan girintili boşaltma işlevine benzer.

Streamlit JSON bileşeni

Her iki bileşenin de bir kullanım durumu vardır. Dataframe bileşeni, bilgileri hızlı bir şekilde analiz etmek ve örneğin maksimumları, minimumları bulmak, eksik veya boş değerleri kontrol etmek vb. için kullanılabilir. JSON, veri yapısını ve veri kümesindeki her alan dışında hangi türü kontrol etmek için mükemmeldir.

Son Çekimler

Bu proje için yolun sonu geldi. Herhangi bir hassas veya son teknoloji ürünü algoritma keşfetmedik. Teoride ve uygulamada basittiler. Ancak bu uygulamayla, çerçevenin ne kadar iyi olduğu ve yığınımızla uyumlu olup olmadığı hakkında meditasyon yapacak ve soruları yanıtlayacak durumdayız.

Sonunda, Streamlit önerdiği şeyi sunabilir. Pano oluşturmak, komut dosyası yazmak kadar kolaydır. Veriler etkileşimli ve organize bir şekilde gösterilir. Sergilememiş olsak da bir prototipi dağıtmak hızlı ve kolaydır.

Şu anda sadece iki olası olumsuzluk görebiliriz. Yönlendirme ve stil. Çok sayfalı pano için yönlendirme. Mevcut stil mekanizmasını genişletmek ve daha yüksek derecede kişiselleştirmeye izin vermek için stil.

Streamlit'e kişisel yaklaşımım basit. Diğer projelerimde kullanmak için oldukça heyecanlıyım. Prototip veya şirket içi gösterge panoları oluşturmak hızlıdır, sonuçlar estetik açıdan hoştur ve EDA daha da heyecan verici hale gelir… çünkü verileri ön uçta ne kadar basit görselleştirebiliriz.

Bonus. Peki ya gerçek zamanlı panolar?

Projemizde gerçek zamanlı veri güncellemeye ihtiyaç duymadık. Ancak Streamlit, gerçek zamanlı veri görselleştirmeyi uygulamak için yöntemler sunar. Mekanizma basittir. Boş bir bileşen oluşturun, bir döngü ayarlayın, verileri alın ve besleyin… Voilà! Sürekli ve gerçek zamanlı veri akışları. Çerçeve yeteneklerinin bir kanıtı olarak aşağıdaki resimlere bakın.

Kontrol panelini açma ve ilk fiyatı kontrol etme
Fiyat az önce değişti ve pano bunu gösteriyor

işte bu! Bir dahaki sefere görüşürüz.