小程序中input标签没有反应_鸢尾花预测:如何创建机器学习Web应用程序?
全文共2485字,預計學習時長12分鐘
圖源:unsplash
數據科學的生命周期主要包括數據收集、數據清理、探索性數據分析、模型構建和模型部署。作為數據科學家或機器學習工程師,能夠部署數據科學項目非常重要,這有助于完成數據科學生命周期。通過既有框架(如Django或Flask)對傳統機器學習模型進行部署,可能是一項艱巨耗時的任務。
本文就將展示如何在Python庫中使用streamlit,用不到50行的代碼構建一個簡單的基于機器學習的數據科學web應用程序。
數據科學生命周期
鳶尾花預測應用程序概述
我們將構建一個簡單的機器學習web應用程序,用于預測鳶尾花的類標簽,包括setosa、versicolor和virginica。這需要用到三個Python庫,即streamlit、pandas和scikitlearn。
應用程序的概念流程主要由兩個部分組成:前端和后端。
圖源:unsplash
在前端,左側欄將接受與鳶尾花特征(如花瓣長度、花瓣寬度、萼片長度和萼片寬度)相關的輸入參數。這些特性會被傳送到后端,后端的訓練模型將預測類標簽作為輸入參數的函數,預測結果再發回前端顯示。
在后端,用戶輸入的參數將被保存到一個數據幀中作為測試數據。同時,利用scikit-learn庫中的隨機森林算法建立分類模型。最后,將該模型應用于預測用戶輸入的數據,并將預測的類標簽返回到三種花卉類型:setosa、versicolor或virginica。此外,該模型還能夠預測概率,從而辨別預測類標簽的相對可信度。
安裝必備庫
本教程使用到的三個Python庫——streamlit, pandas 和 scikit-learn,可以通過pip install命令進行安裝。
安裝streamlit:
pip install streamlit安裝pandas:
pip install pandas安裝scikit-learn:
pip install -U scikit-learnweb應用程序代碼
現在就來一探究竟吧!我們要構建的應用程序只需不到50行代碼(確切地說是48行),如果刪除空行和注釋(占12行),就可以降至36行。
import streamlit as st import pandas as pd from sklearn import datasets from sklearn.ensemble importRandomForestClassifier st.write(""" # Simple Iris Flower Prediction App This app predicts the **Iris flower** type! """) st.sidebar.header('User InputParameters') defuser_input_features(): sepal_length = st.sidebar.slider('Sepal length', 4.3, 7.9, 5.4) sepal_width = st.sidebar.slider('Sepal width', 2.0, 4.4, 3.4) petal_length = st.sidebar.slider('Petal length', 1.0, 6.9, 1.3) petal_width = st.sidebar.slider('Petal width', 0.1, 2.5, 0.2) data = {'sepal_length': sepal_length, 'sepal_width': sepal_width, 'petal_length': petal_length, 'petal_width': petal_width} features = pd.DataFrame(data, index=[0]) return features df =user_input_features() st.subheader('User Inputparameters') st.write(df) iris = datasets.load_iris() X= iris.data Y= iris.target clf =RandomForestClassifier() clf.fit(X, Y) prediction = clf.predict(df) prediction_proba= clf.predict_proba(df) st.subheader('Class labels andtheir corresponding index number') st.write(iris.target_names) st.subheader('Prediction') st.write(iris.target_names[prediction]) #st.write(prediction) st.subheader('PredictionProbability') st.write(prediction_proba)逐行解讀代碼
來看看每一行(或代碼塊)的作用:
導入庫
· 第1-4行:導入streamlit 和 pandas庫,分別稱為st和pd。具體來說,從scikitlearn庫中(sklearn)導入datasets軟件包,然后使用loader函數加載鳶尾花數據集(第30行)。最后將專門從sklearn.ensemble軟件包中導入RandomForestClassifier()函數。
側欄面板
· 第11行:通過使用st.sidebar.header()函數來添加側欄的標題文本。請注意,在st和header之間使用sidebar(所以是st.sidebar.header()函數)可以向streamlit庫傳達信息,把標題文本放在側欄面板中。
· 第13-23行:此處創建一個名為user_input_features()的自定義函數,該函數主要是將用戶輸入的參數進行整合(即4個花的特征,可以通過滑動條接受用戶指定的值),并以數據幀的形式返回結果。
值得注意的是,每個輸入參數都將通過滑動按鈕接受用戶指定的值,如st.sidebar.slider(‘Sepal length’, 4.3, 7.9, 5.4)表示萼片長度。四個輸入參數中的首個參數對應于在滑動按鈕上方指定的標簽文本,在本例中為“萼片長度”,而接下來的兩個值對應于滑動條的最小值和最大值。最后,末尾輸入參數表示加載web應用程序時選擇的默認值,該值設置為5.4。
模型建立
· 第25行:如上所述,以數據幀形式整合的用戶輸入參數信息將分配到df變量中。
· 第30-38行:該代碼塊適用于實際模型構建階段。
第30行—從sklearn.datasets軟件包中加載鳶尾花數據集,并將其分配給iris變量;
第31行—創建X變量,包含iris.data中提供的4個花的特征(即萼片長度,萼片寬度,花瓣長度和花瓣寬度);
第32行—創建Y變量,與iris.target中提供的鳶尾花類標簽相關;
第34行—將隨機森林分類器(特別是RandomForestClassifier()函數)分配給clf變量;
第35行—通過clf.fit()函數使用X和Y變量作為輸入參數來訓練模型。這本質上意味著通過使用4個花的特征(X)和類標簽(Y)訓練,來建立分類模型。
圖源:unsplash
主面板
· 第6-9行:使用st.write()函數輸出文本,在本示例中使用該函數,以標記格式輸出此應用程序的標題。使用#符號表示標題文本(第7行),而后一行(第8行)提供應用程序的正常描述性文本。
· 第27-28行:第一部分將給出“User Input parameters”的子標題文本(使用st.subheader函數進行分配)。下一行將通過使用st.write()函數來顯示df數據幀的內容。
· 第40-41行:在主面板的第二部分中,輸出類標簽(即setosa、versicolor和virginica)及其相應索引號(即0、1和2)。
· 第43-44行:主面板的第三部分顯示的是預測類標簽。此處需要注意的是,prediction變量的內容(第45行)是預測的類索引號,如果要顯示類標簽(即setosa、versicolor和virginica),則需在iris.target_names[prediction]的括號內使用prediction變量作為參數。
· 第47-48行:主面板的第四部分也就是最后一部分顯示了預測概率。該概率值能夠識別預測類標簽的相對可信度(概率值越高,該預測的可信度就越高)。
運行web應用程序
因此,web應用程序的代碼被保存到iris-ml-app.py文件中,現在準備運行??梢栽诿钐崾痉?終端窗口)中輸入以下命令來運行該應用程序:
streamlit run iris-ml-app.py之后會看到以下消息:
> streamlit run iris-ml-app.pyYou can now view yourStreamlit app in your browser.Local URL: http://localhost:8501Network URL: http://10.0.0.11:8501幾秒鐘會彈出一個互聯網瀏覽器窗口,通過網址http://localhost:8501引導用戶進入創建的web應用程序 ,如下所示:
鳶尾花預測應用程序截圖。點擊左上角按鈕(頂部窗口)可以顯示側面板(底部窗口)。
大功告成!用Python創建了機器學習web應用程序就是這么簡單,快去親自操作一下吧。
留言點贊關注
我們一起分享AI學習與發展的干貨
如轉載,請后臺留言,遵守轉載規范
總結
以上是生活随笔為你收集整理的小程序中input标签没有反应_鸢尾花预测:如何创建机器学习Web应用程序?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何将风险应用加入白名单_理财要如何将资
- 下一篇: W10的服务器正在运行,win10开机提