首頁 >後端開發 >Python教學 >Streamlit:ML 應用程式建立的魔杖

Streamlit:ML 應用程式建立的魔杖

Patricia Arquette
Patricia Arquette原創
2024-10-07 20:10:30825瀏覽

Streamlit 是一個強大的開源框架,允許您為資料科學機器學習建立網路應用程式,隻隻只需幾行Python程式碼。

它簡單、直觀,並且不需要前端經驗,這使其成為初學者和想要快速部署機器學習模型的經驗豐富的開發人員的絕佳工具。

在本部落格中,我將指導您逐步使用 Iris 資料集 和 RandomForestClassifier 建立基本的 Streamlit 應用程式和 機器學習專案 .

Streamlit 入門

在進入專案之前,讓我們先了解一些基本的 Streamlit 功能,以熟悉該框架。您可以使用以下命令安裝 Streamlit:


pip install streamlit


安裝後,您可以透過建立一個 Python 檔案(例如 app.py)來啟動您的第一個 Streamlit 應用程序,並使用以下命令運行它:


streamlit run app.py


現在,讓我們來探討一下 Streamlit 的核心功能:

1。寫標題並顯示文字


import streamlit as st

# Writing a title
st.title("Hello World")

# Display simple text
st.write("Displaying a simple text")


Streamlit: The Magic Wand for ML App Creation

2。顯示資料框


import pandas as pd

# Creating a DataFrame
df = pd.DataFrame({
    "first column": [1, 2, 3, 4],
    "second column": [5, 6, 7, 8]
})

# Display the DataFrame
st.write("Displaying a DataFrame")
st.write(df)


Streamlit: The Magic Wand for ML App Creation

3。用圖表視覺化數據


import numpy as np

# Generating random data
chart_data = pd.DataFrame(
    np.random.randn(20, 4), columns=['a', 'b', 'c', 'd']
)

# Display the line chart
st.line_chart(chart_data)


Streamlit: The Magic Wand for ML App Creation

4。使用者互動:文字輸入、滑桿和選擇框
Streamlit 支援互動式小工具,例如文字輸入、滑桿和根據使用者輸入動態更新的選擇框。


# Text input
name = st.text_input("Your Name Is:")
if name:
    st.write(f'Hello, {name}')

# Slider
age = st.slider("Select Your Age:", 0, 100, 25)
if age:
    st.write(f'Your Age Is: {age}')

# Select Box
choices = ["Python", "Java", "Javascript"]
lang = st.selectbox('Favorite Programming Language', choices)
if lang:
    st.write(f'Favorite Programming Language is {lang}')


Streamlit: The Magic Wand for ML App Creation

5。文件上傳
您可以允許使用者上傳檔案並在您的 Streamlit 應用程式中動態顯示其內容:


# File uploader for CSV files
file = st.file_uploader('Choose a CSV file', 'csv')

if file:
    data = pd.read_csv(file)
    st.write(data)


Streamlit: The Magic Wand for ML App Creation

使用 Streamlit 建構機器學習專案

現在您已經熟悉了基礎知識,讓我們深入創建一個機器學習專案。我們將使用著名的 Iris 資料集,並使用 scikit-learn 中的 RandomForestClassifier 建立一個簡單的分類 模型

專案結構:

  • 載入資料集。
  • 訓練隨機森林分類器。
  • 允許使用者使用滑桿輸入功能。
  • 根據輸入特徵預測物種。

1。安裝必要的依賴項
首先,讓我們安裝必要的函式庫:


pip install streamlit scikit-learn numpy pandas


2。導入庫並載入資料
讓我們導入必要的庫並載入 Iris 資料集:


import streamlit as st
import pandas as pd
from sklearn.datasets import load_iris
from sklearn.ensemble import RandomForestClassifier

# Cache data for efficient loading
@st.cache_data
def load_data():
    iris = load_iris()
    df = pd.DataFrame(iris.data, columns=iris.feature_names)
    df["species"] = iris.target
    return df, iris.target_names

df, target_name = load_data()


3。訓練機器學習模型
獲得資料後,我們將訓練隨機森林分類器以根據花的特徵來預測花的種類:


# Train RandomForestClassifier
model = RandomForestClassifier()
model.fit(df.iloc[:, :-1], df["species"])


4。建立輸入介面
現在,我們將在側邊欄中建立滑桿,以允許使用者輸入用於進行預測的特徵:


# Sidebar for user input
st.sidebar.title("Input Features")
sepal_length = st.sidebar.slider("Sepal length", float(df['sepal length (cm)'].min()), float(df['sepal length (cm)'].max()))
sepal_width = st.sidebar.slider("Sepal width", float(df['sepal width (cm)'].min()), float(df['sepal width (cm)'].max()))
petal_length = st.sidebar.slider("Petal length", float(df['petal length (cm)'].min()), float(df['petal length (cm)'].max()))
petal_width = st.sidebar.slider("Petal width", float(df['petal width (cm)'].min()), float(df['petal width (cm)'].max()))


5。預測物種
獲得使用者輸入後,我們將使用經過訓練的模型進行預測:


# Prepare the input data
input_data = [[sepal_length, sepal_width, petal_length, petal_width]]

# Prediction
prediction = model.predict(input_data)
prediction_species = target_name[prediction[0]]

# Display the prediction
st.write("Prediction:")
st.write(f'Predicted species is {prediction_species}')


這看起來像:

Streamlit: The Magic Wand for ML App Creation

Streamlit: The Magic Wand for ML App Creation

最後,Streamlit 讓建立和部署機器學習 Web 介面變得非常容易,並且花費最少的精力。 ?只需幾行程式碼,我們就建立了一個互動式應用程式?允許使用者輸入特徵並預測花的種類?使用機器學習模型。 ??

編碼愉快! ?

以上是Streamlit:ML 應用程式建立的魔杖的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn