做一個比較完整的 web 應用,包括 UI,我需要閱讀一些什么書籍?
時間:2024-01-09 23:36:01 | 來源:網(wǎng)站運營
時間:2024-01-09 23:36:01 來源:網(wǎng)站運營
做一個比較完整的 web 應用,包括 UI,我需要閱讀一些什么書籍?:
無需了解任何Web框架,數(shù)據(jù)科學項目也可被輕而易舉地轉換成出色的應用程序。
如果我們沒有將一個機器學習項目充分地展示出來,那么這個項目就不算真正地被完成。
在過去,一份精心制作的可視化圖表或幾頁PPT便足以展示一個數(shù)據(jù)科學項目,然而隨著RShiny和Dash這類的儀表板工具的出現(xiàn),優(yōu)秀的數(shù)據(jù)科學家也需要具備相當豐富的Web框架知識。
但是學習Web框架的難度很大,筆者在HTML、CSS和Javascript中摸爬滾打,卻依然對一些看似簡單的操作感到困惑。
更別提如何用多種方式去實現(xiàn)同一件事了,這會讓數(shù)據(jù)科學同胞感到更加困惑,畢竟對他們來說,Web開發(fā)只是一項次要的技能。
那么,我們注定要學Web框架嗎?或者要在半夜給做開發(fā)的好友打電話道出對Web框架的蠢蠢疑惑?
StreamLit的橫空出世使得利用Python來創(chuàng)建Web應用程序成為現(xiàn)實。
Python之禪:
簡勝于繁。Streamlight便是詮釋它最好的注腳,使創(chuàng)建web應用程序從未如此簡單。本文講解如何使用Streamlight創(chuàng)建支持數(shù)據(jù)科學項目的應用程序。
安裝安裝即運行以下簡單的命令:
運行以下命令查看安裝是否成功:
屏幕會顯示:可在瀏覽器中訪問本地網(wǎng)址:localhost:8501,查看正在運行的Streamlight應用程序。開發(fā)人員也提供了一些示范?;c時間來感受一下這個工具的力量。
Streamlight旨在利用簡單的Python來簡化應用程序的開發(fā)。
讓我們寫一個簡單的應用程序,看看它是否能夠實現(xiàn)這一目標。
此處,從一個稱為Hello World of streamlit的簡單應用程序開始,只需將下面的代碼粘貼到名為helloworld.py的文件中即可。
在終端上運行:瞧,這便使您能夠在連接到本地主機瀏覽器localhost:8501的中看到一個簡單的應用程序,利用它可以允許移動滑塊并給出結果。
操作相當簡單,在上述應用程序中,用到了StreamLit的兩個功能:
st.slider 小部件命令,實現(xiàn)滑動滑塊以更改Web應用程序的輸出的效果;
st.write 多功能命令,它居然能利用圖表、數(shù)據(jù)和簡單的文本寫出任何東西。稍后會詳述該功能。
重點提示:請記住,每次改變小部件的數(shù)值時,整個應用程序會從上到下運行。StreamLIT小部件小部件提供了一種控制應用程序的方法,了解小部件的最佳方法是閱讀API參考文檔,我將在此描述一些可能最終使用到的重點小部件。
1. 滑塊我們已經(jīng)在上面看到了滑塊st.slider 的運行效果,它可以與min_value、max_value和step一起使用,用于在一定范圍內獲取輸入。
2. 文本輸入獲取用戶輸入的最簡單方法是URL輸入或用于情感分析的文本輸入,只需要一個標簽來命名文本框。
應用程序是這樣呈現(xiàn)如下的:提示:只需更改文件helloworld.py并刷新瀏覽器即可。筆者的做法是打開該文件后在文本編輯器中更改,并查看瀏覽器中的每步變化。3. 復選框復選框的一個使用案例是在應用程序中隱藏或顯示/隱藏特定部分,另一個可能用途是在為函數(shù)st.checkbox()的參數(shù)中設置一個布爾值。st.checkbox()需要一個單獨指令,即小部件的標簽。在此應用程序中,該復選框用于切換條件語句。
4. 選擇框可使用st.selectbox從列表中進行選擇,常見使用是將其用作一個從列表中選擇值的簡單下拉列表。
5. 多選擇也可以從下拉列表中選用多個值,此處我們使用st.multiselect 來從變量選項中獲取多個數(shù)值。
逐步創(chuàng)建簡單的應用程序上面介紹了需要理解的重要小部件。下面將一次利用多個小部件來創(chuàng)建簡單的應用程序。
首先,嘗試利用streamlit來對足球數(shù)據(jù)進行可視化。有了上面這些小部件幫助會非常簡單。
簡單應用程序如下:這看起來并不難,但似乎太簡單了,能否添加一些圖表呢?
Streamlit目前支持許多用于繪圖的庫,包括Plotly, Bokeh, Matplotlib, Altair 和 Vega charts。PlolyExpress也行得通,盡管他們沒有在文檔中具體說明。Streamlit還有一些內置的圖表類型,如st.line_chart 和st.area_chart等都能在Streamlit中運行。
此處將使用plotly_express創(chuàng)建簡單應用程序,代碼如下。僅調用Streamlit四次,余下的便都是一些簡單的python代碼操作。
提高本文最初提到,每次對任何小部件進行修改以后,整個應用程序將會重新運行。當創(chuàng)建深度學習模型或復雜機器學習模型的應用程序時,這是不可行的,為此,Streamed引入“緩存(Caching)”來解決這一問題。
1. 緩存在一個簡單的應用程序中。每當一個值發(fā)生變化時,便會一遍遍地瀏覽 pandas數(shù)據(jù)框。雖然它適用于小數(shù)據(jù),但對于大數(shù)據(jù)或當必須對數(shù)據(jù)進行大量處理時將失效。下面采用streamlit中的st.cache函數(shù)來使用緩存。
對于僅需要僅運行一次的更復雜和耗時的函數(shù),采用:當用Streamlight的緩存裝飾器標記一個函數(shù)時,每逢該函數(shù)被調用時,它都會檢查被調用的函數(shù)的輸入?yún)?shù)。
如果Streamed第一次處理這些參數(shù),它將運行函數(shù)并將結果存儲在本地緩存中。當下一次函數(shù)被調用時,如果這些參數(shù)尚未改變,StreamLit知道它可以跳過執(zhí)行該函數(shù),而只使用緩存的結果。
2. 工具條為了有一個更清晰的外觀,可能希望小部件移動到一個側欄中,類似于Rshiny的儀表板。這也很簡單,只需在小部件的代碼中添加 st.sidebar 即可。
3.Markdown?(一種純文本格式的標記語言)我喜歡在Markdown里寫作,它不像HTML那么冗長,更適合于數(shù)據(jù)科學工作。那么,我們能不能在 streamlit 應用程序中使用Markdown呢?
答案是可以,有多種方法可以實現(xiàn)。在我看來,最好的方法就是使用Magic命令,Magic命令允許您像注釋一樣輕松地編寫標記,也可以使用st.markdown命令。
結論Streamlight已經(jīng)將創(chuàng)建應用程序的整個過程進行了普及,筆者已在文中做了詳盡描述。
本文雖然只創(chuàng)建了一個簡單的web應用程序,但潛力是無窮無盡的。例如,streamlit官網(wǎng)中的faceGAN,它只用了和本文一樣的小部件和緩存的指導思想達到如下效果。
我喜歡開發(fā)人員使用的默認顏色和風格,它比使用我一直以來用于展示的Dash要舒服的多。此外,還可以在streamlit應用程序中添加音頻和視頻。
最重要的是,Streamlight是一款免費開源軟件,而不是一個現(xiàn)成的專有網(wǎng)絡應用程序。以前需要修改演示稿時,筆者都需要請教做開發(fā)的好友,但現(xiàn)在,修改程序的難度相對來說已經(jīng)微不足道了。
不知道 streamlit 是否會在生產(chǎn)環(huán)境中表現(xiàn)良好,但就概念項目和演示而言已經(jīng)很便利了。我想從現(xiàn)在開始在工作流程中更多地使用到它,由于它用起來毫不費力,你也可以更多地使用它。