鳶尾花預測:如何創建機器學習Web應用程式?

2020-12-15 讀芯術

全文共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-learn

web應用程式代碼

現在就來一探究竟吧!我們要構建的應用程式只需不到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:8501

Network URL: http://10.0.0.11:8501

幾秒鐘會彈出一個網際網路瀏覽器窗口,通過網址http://localhost:8501引導用戶進入創建的web應用程式 ,如下所示:

鳶尾花預測應用程式截圖。點擊左上角按鈕(頂部窗口)可以顯示側面板(底部窗口)。

大功告成!用Python創建了機器學習web應用程式就是這麼簡單,快去親自操作一下吧。

留言點讚關注

我們一起分享AI學習與發展的乾貨

如轉載,請後臺留言,遵守轉載規範

相關焦點

  • 用Python構建數據科學Web應用程式
    在本文中,我將向你展示如何使用streamlit python庫快速構建一個簡單的數據驅動web應用程式,只需幾行代碼。作為一名數據科學家或機器學習工程師,能夠部署我們的數據科學項目是很重要的。傳統的使用Django或Flask這樣的框架來部署機器學習模型可能是一項艱巨和/或耗時的任務。
  • 機器學習可以預測股票走向,靠譜麼?
    有個很好耍的例子:安德森鳶尾花品種亞屬預測。我們有一百五十個鳶尾花的一些尺寸觀測值:萼片長度、寬度,花瓣長度和寬度。還有它們的亞屬:山鳶尾(Iris setosa)、變色鳶尾(Iris versicolor)和維吉尼亞鳶尾(Iris virginica)。我們使用這些數據,從中學習並預測一個新的數據。
  • 5分鐘入門到精通,適合AI初學者的10個機器學習項目!
    2.TensorFlow這個開源的人工智慧庫是初學者提高機器學習技能的絕佳工具。藉助TensorFlow,他們可以使用該庫來創建數據流程圖,使用Java的項目以及一系列應用程式。而且,它還包括Java API。
  • 算法應用|機器學習python應用,初識機器學習是怎樣滴感受?
    1.3 Python 中的機器學習本系列文章主要關注監督學習中的分類與回歸問題處理的預測模型,這是在工業中應用非常廣泛的分類,也是scikit-leam擅長的一個領域。與統計學不同,機器學習的預測模型是用來理解數據、解決問題的;聚焦於如何創建一個更加精準的模型,而不是用來解釋模型是如何設置的。
  • 用微軟Bot Framework創建機器人應用程式
    當連接到遠程伺服器或非本地主機時,我們需要在web.config和Bot Framework Emulator中提供BotId、MicrosoftAppId和MicrosoftAppPassword。我們將在我們創建的Web應用程式機器人中從Azure應用程式設置中獲得。
  • 數據科學孤島如何破壞應用程式現代化
    了解數據科學孤島如何破壞應用程式現代化,並了解構建智能應用程式為何需要智能團隊建設。現在是時候改造現代化了我經常與在其組織中管理定製應用程式的業務主管進行對話。為此,我認為有必要充分利用可用的大量數據源,並使用新的外部數據對應用程式進行增壓,然後使用這些數據來訓練能夠使應用程式適應經驗的機器學習模型。下一代的現代化將預測模型注入到應用程式中,以預測將來的某個特定結果,以便應用程式可以採取相應的措施。
  • 用Python將Keras深度學習模型部署為Web應用程式
    構建一個很棒的機器學習項目是一回事,但歸根結底,你希望其他人能夠看到你的辛勤工作。當然,你可以將整個項目放在GitHub上,但是怎麼讓你的祖父母也看到呢?我們想要的是將深度學習模型部署為世界上任何人都可以訪問的Web應用程式。在本文中,我們將看到如何編寫一個Web應用程式,該應用程式使用經過訓練的Keras遞歸神經網絡,並允許用戶生成新的專利文摘。
  • 這23項機器學習項目有點意思 涵蓋初中高不同級別
    了解現有超棒的機器學習項目是啟發研究人員構想新項目,獲取有關技術能力的最佳路徑。這裡羅列了適合初級學者、中級專家以及高級研究者需要了解的23個2020年度最佳機器學習項目。面向初學者的機器學習項目鳶尾花分類項目項目構想:鳶尾花有不同的種類,你可以根據花瓣和萼片的長度來區分它們。這是機器學習初學者預測新鳶尾花種類的基礎項目。
  • 可用於創建桌面應用程式的最佳JavaScript框架
    以前,使用JavaScript開發桌面應用程式是不可能的。但是現在JavaScript開發人員可以利用框架來創建用於web開發的桌面應用程式。在本文中,我將向您介紹用於創建桌面應用程式的5個最佳JavaScript框架。
  • 如何用簡單的Python編寫Web應用程式?
    圖片來源:Cody Black Unsplash稍作休息,開始編碼。於是StreamLit帶著自身的使命出現了,它僅藉助Python就能夠創建Web應用程式。Python的宗旨:簡單勝於複雜,而Streamlit創建應用程式則完美地詮釋了其易操作性。這篇文將為大家講解何使用Streamlit來創建支持數據科學項目的應用程式。
  • 我的第一個全棧 Web 應用程式 - CSDN
    在這篇文章,作者將使用 React.js 和 Redux.js 前端技術,並通過調用 Ruby on Rails API,手把手教會你如何創建一個完美的全棧 Web 應用程式。對於複雜的應用程式,第二種方式更常見。畢竟,單頁應用存在的原因就是它能提供更為平滑的用戶體驗,不會被全頁重新加載打斷。從代碼的角度來講,單頁應用意味著整個應用程式中只有一個HTML頁面,通常這個頁面名為index.html。
  • 機器學習中算法與模型的區別
    學術界可以設計出全息你的機器學習算法,而機器學習實踐者可以在他們的項目中使用標準的機器學習算法。這就像計算機科學的其他領域一樣,學者可以設計出全新的排序算法,程式設計師可以在應用程式中使用標準的排序算法。你還可能會看到多個機器學習算法實現,並在一個具有標準 API 的庫中提供。
  • Blend4Web 17.08 發布,三維應用程式創建平臺​
    我們很高興地推出Blend4Web的新版本, 用於創建交互式在線三維體驗的商業級開源平臺。
  • 每周一書《Python機器學習 預測分析核心算法》分享!
    本書通過集中介紹兩類可以進行有效預測的機器學習算法,展示了如何使用Python 程式語言完成機器學習任務,從而降低機器學習難度,使機器學習能夠被更廣泛的人群掌握。作者利用多年的機器學習經驗帶領讀者設計、構建並實現自己的機器學習方案。本書儘可能地用簡單的術語來介紹算法,避免複雜的數學推導,同時提供了示例代碼幫助讀者迅速上手。
  • 機器學習在生活中的九大有趣應用
    人工智慧現在已經變得無處不在了,生活中有很多關於它的應用,可能你正在以某種方式使用它,但你卻不知道它。人工智慧最流行的應用之一是機器學習,它是人工智慧的核心,是使計算機具有智能的根本途徑。本文我們為大家分享了一些我們每天使用的機器學習的例子,可能有的應用中你都不知道它們是由機器學習驅動的。
  • OpML 2019提前看:模型表現預測與分布式機器學習
    2)文章背景介紹:機器學習模型在工業界有著廣泛的應用。一般來說,研發者會針對一個工業問題使用許多的模型進行預測,並將表現最優秀的模型用於生產。然而,機器學習模型的表現好壞多由訓練數據與生產過程中收到的數據決定,模型的泛化力不同,根據收到的數據不同,預測效果也好壞不一。
  • 對鳶尾花識別之Keras
    對鳶尾花識別之Keras任務目標對鳶尾花數據集分析建立鳶尾花的模型利用模型預測鳶尾花的類別環境搭建pycharm編輯器搭建python3.*第三方庫numpypandassklearnkeras處理鳶尾花數據集了解數據集鳶尾花數據集是一個經典的機器學習數據集,非常適合用來入門
  • 為什麼說 Web 開發永遠不會退出歷史舞臺?
    漸進式Web應用程式(PWA)開發移動和本地應用程式的企業可以從漸進式Web應用程式中獲益。到目前為止,這是2019年最熱門的Web發展趨勢。它提倡全球資訊網(world wide web)為用戶創造更好的瀏覽體驗。
  • 多些體驗 10個免費web分析工具應用程式
    核心提示:在本文中,你將發現10個精選的免費web分析工具和應用程式,他們可以幫助你收集和分析與你網站內容有關的數據。
  • 如何應用Web頁面靜態化技術以提高J2EE Web應用系統的響應性能
    在Web應用系統的表示層開發中如何通過應用Velocity模板技術以提高Web應用系統的響應性能,作者在以前的文章中的做了詳細的介紹,有興趣的讀者可以翻看文章《軟體項目實訓及課程設計指導——如何在Web應用系統表示層開發實現中應用Velocity模板技術》。