
作者: 俊欣
來源:關于數據分析與可視化
對于機器學習愛好者而言,很多時候我們需要將建好的模型部署在線上,實現前后端的交互,今天小編就通過Flask以及Streamlit這兩個框架實現機器學習模型的前后端交互。
首先是模型的建立,小編這回為了省事兒建立一個非常簡單的二分法模型,所引用的數據集如下所示
import pandas as pd
df = pd.read_csv("data.csv")
df.head()
output
Height Weight Species 0 88.9 48.3 Dog 1 90.2 47.4 Dog 2 82.7 44.8 Dog 3 81.4 48.2 Dog 4 83.5 39.9 Dog
所涉及到的特征也就兩列分別是“Hight”以及“Weight”也就是身高和體重,我們需要通過這兩個特征來預測它到底是“貓”還是“狗”,代碼如下
X = df[["Height", "Weight"]] y = df["Species"]
clf = GaussianNB()
clf.fit(X, y)
當然小編為了省事兒這里并沒有進行訓練集和測試集的區分,也沒有進行任何的調參以及模型的優化,只是簡單的建立了一個樸素貝葉斯的二分類模型。接下來我們將建立好的模型保存下來
import joblib
joblib.dump(clf, "clf.pkl")
前端頁面主要是由一系列的HTML代碼寫成的,代碼如下
<!DOCTYPE html> <html> <head> <title>Your Machine Learning App</title> </head> <body> <form name="form", method="POST", style="text-align: center;"> <br> Height: <input type="number" name="height", placeholder="Enter height in cm" required/> <br><br> Weight: <input type="number" name="weight", placeholder="Enter weight in kg" required/> <br><br> <button value="Submit">Run</button> </form> <p style="text-align: center;">{{ output }}</p> </body> </html>
輸出結果如下:
我們可以看到有兩個輸入框分別代表的是身高與體重,以及運行的按鈕鍵。接下來我們來寫后端的邏輯代碼,當前端傳過來數據的時候,也就是身高與體重的數據的時候,后端的代碼來調用已經訓練好的模型并且做出預測,然后顯示在前端的頁面上。在Flask框架中后端的業務代碼大致如下
from flask import Flask, request, render_template import pandas as pd import joblib # 聲明是一個Flask應用 app = Flask(__name__) # 主要業務邏輯 # ------------------ # 運行整體的應用 if __name__ == '__main__':
app.run(debug = True)
那么在本篇文章的項目背景下,代碼如下
@app.route('/', methods=['GET', 'POST']) def main(): # 表單數據提交,POST請求 if request.method == "POST": # 調用已經訓練好的模型 clf = joblib.load("clf.pkl") # 從輸入框中獲取身高與體重數據 height = request.form.get("height")
weight = request.form.get("weight") # 轉變成DataFrame格式 X = pd.DataFrame([[height, weight]], columns = ["Height", "Weight"]) # 獲取預測值 prediction = clf.predict(X)[0] else: prediction = "" return render_template("website.html", output = prediction)
然后我們運行整個腳本,效果如下
我們試著輸入一些身高與體重的值,看一下返回的結果,效果如下
下面我們來看一下將模型部署在Streamlit框架下該如何來操作。在Streamlit框架中沒有特別明顯的前后端代碼的分離,代碼如下
import streamlit as st import pandas as pd import joblib # 標題 st.header("Streamlit Machine Learning App") # 輸入框 height = st.number_input("Enter Height")
weight = st.number_input("Enter Weight") # 點擊提交按鈕 if st.button("Submit"): # 引入訓練好的模型 clf = joblib.load("clf.pkl") # 轉換成DataFrame格式的數據 X = pd.DataFrame([[height, weight]],
columns=["Height", "Weight"]) # 獲取預測出來的值 prediction = clf.predict(X)[0] # 返回預測的值 st.text(f"This instance is a {prediction}")
最后生成的頁面如下
我們在終端中運行以下命令
streamlit run streamlit_model.py
最后我嘗試在輸入框中填入一些虛構的數字,看一下出來的結果是什么樣的,如下
數據分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
CDA數據分析師證書考試體系(更新于2025年05月22日)
2025-05-26解碼數據基因:從數字敏感度到邏輯思維 每當看到超市貨架上商品的排列變化,你是否會聯想到背后的銷售數據波動?三年前在零售行 ...
2025-05-23在本文中,我們將探討 AI 為何能夠加速數據分析、如何在每個步驟中實現數據分析自動化以及使用哪些工具。 數據分析中的AI是什么 ...
2025-05-20當數據遇見人生:我的第一個分析項目 記得三年前接手第一個數據分析項目時,我面對Excel里密密麻麻的銷售數據手足無措。那些跳動 ...
2025-05-20在數字化運營的時代,企業每天都在產生海量數據:用戶點擊行為、商品銷售記錄、廣告投放反饋…… 這些數據就像散落的拼圖,而相 ...
2025-05-19在當今數字化營銷時代,小紅書作為國內領先的社交電商平臺,其銷售數據蘊含著巨大的商業價值。通過對小紅書銷售數據的深入分析, ...
2025-05-16Excel作為最常用的數據分析工具,有沒有什么工具可以幫助我們快速地使用excel表格,只要輕松幾步甚至輸入幾項指令就能搞定呢? ...
2025-05-15數據,如同無形的燃料,驅動著現代社會的運轉。從全球互聯網用戶每天產生的2.5億TB數據,到制造業的傳感器、金融交易 ...
2025-05-15大數據是什么_數據分析師培訓 其實,現在的大數據指的并不僅僅是海量數據,更準確而言是對大數據分析的方法。傳統的數 ...
2025-05-14CDA持證人簡介: 萬木,CDA L1持證人,某電商中廠BI工程師 ,5年數據經驗1年BI內訓師,高級數據分析師,擁有豐富的行業經驗。 ...
2025-05-13CDA持證人簡介: 王明月 ,CDA 數據分析師二級持證人,2年數據產品工作經驗,管理學博士在讀。 學習入口:https://edu.cda.cn/g ...
2025-05-12CDA持證人簡介: 楊貞璽 ,CDA一級持證人,鄭州大學情報學碩士研究生,某上市公司數據分析師。 學習入口:https://edu.cda.cn/g ...
2025-05-09CDA持證人簡介 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度、美團、阿里等 ...
2025-05-07相信很多做數據分析的小伙伴,都接到過一些高階的數據分析需求,實現的過程需要用到一些數據獲取,數據清洗轉換,建模方法等,這 ...
2025-05-06以下的文章內容來源于劉靜老師的專欄,如果您想閱讀專欄《10大業務分析模型突破業務瓶頸》,點擊下方鏈接 https://edu.cda.cn/g ...
2025-04-30CDA持證人簡介: 邱立峰 CDA 數據分析師二級持證人,數字化轉型專家,數據治理專家,高級數據分析師,擁有豐富的行業經驗。 ...
2025-04-29CDA持證人簡介: 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度,美團,阿里等 ...
2025-04-28CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-27數據分析在當今信息時代發揮著重要作用。單因素方差分析(One-Way ANOVA)是一種關鍵的統計方法,用于比較三個或更多獨立樣本組 ...
2025-04-25CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-25