Entwicklungsschritt 2 – Erstellen der Web-App und Integrieren des Modells

Schritt 2.1 Bibliotheken importieren

import streamlit as stimport numpy as npimport pandas as pdimport joblib

stremlit ist eine Python-Bibliothek, die es einfach macht, benutzerdefinierte Webanwendungen für maschinelles Lernen und Data-Science-Projekte zu erstellen und zu teilen.
numpy ist eine grundlegende Python-Bibliothek für numerische Berechnungen. Es bietet Unterstützung für große, mehrdimensionale Arrays und Matrizen sowie eine Sammlung mathematischer Funktionen, um diese Arrays effizient zu bearbeiten.

Schritt 2.2 Eingabedaten abrufen und kodieren

data = {    \\\"island\\\": island,    \\\"bill_length_mm\\\": bill_length_mm,    \\\"bill_depth_mm\\\": bill_depth_mm,    \\\"flipper_length_mm\\\": flipper_length_mm,    \\\"body_mass_g\\\": body_mass_g,    \\\"sex\\\": sex,}input_df = pd.DataFrame(data, index=[0])encode = [\\\"island\\\", \\\"sex\\\"]input_encoded_df = pd.get_dummies(input_df, prefix=encode)

Eingabewerte werden aus dem von Stremlit erstellten Eingabeformular abgerufen und kategoriale Variablen werden nach denselben Regeln codiert wie bei der Erstellung des Modells. Beachten Sie, dass die Reihenfolge der einzelnen Daten auch mit der Reihenfolge bei der Erstellung des Modells übereinstimmen muss. Wenn die Reihenfolge unterschiedlich ist, tritt beim Ausführen einer Prognose mithilfe des Modells ein Fehler auf.

Schritt 2.3 Laden Sie das Modell

clf = joblib.load(\\\"penguin_classifier_model.pkl\\\")

\\\"penguin_classifier_model.pkl\\\" ist die Datei, in der das zuvor gespeicherte Modell gespeichert ist. Diese Datei enthält einen trainierten RandomForestClassifier im Binärformat. Wenn Sie diesen Code ausführen, wird das Modell in clf geladen, sodass Sie es für Vorhersagen und Auswertungen neuer Daten verwenden können.

Schritt 2.4 Vorhersage durchführen

prediction = clf.predict(input_encoded_df)prediction_proba = clf.predict_proba(input_encoded_df)

clf.predict(input_encoded_df): Verwendet das trainierte Modell, um die Klasse für die neuen codierten Eingabedaten vorherzusagen, und speichert das Ergebnis in der Vorhersage.
clf.predict_proba(input_encoded_df): Berechnet die Wahrscheinlichkeit für jede Klasse und speichert die Ergebnisse in Prediction_proba.

Beispielcode

Schritt 3. Einsetzen

\\\"Machine

Sie können Ihre entwickelte Anwendung im Internet veröffentlichen, indem Sie auf die Stremlit Community Cloud (https://streamlit.io/cloud) zugreifen und die URL des GitHub-Repositorys angeben.

Über den Datensatz

\\\"Machine

Kunstwerk von @allison_horst (https://github.com/allisonhorst)

Das Modell wird mithilfe des Palmer Penguins-Datensatzes trainiert, einem weithin anerkannten Datensatz zum Üben von Techniken des maschinellen Lernens. Dieser Datensatz liefert Informationen zu drei Pinguinarten (Adelie, Zügelpinguin und Eselspinguin) aus dem Palmer-Archipel in der Antarktis. Zu den wichtigsten Funktionen gehören:

Dieser Datensatz stammt von Kaggle und kann hier abgerufen werden. Die Vielfalt der Merkmale macht es zu einer hervorragenden Wahl für die Erstellung eines Klassifizierungsmodells und das Verständnis der Bedeutung jedes Merkmals für die Artenvorhersage.

","image":"http://www.luping.net/uploads/20241006/17282217676702924713227.png","datePublished":"2024-11-02T21:56:21+08:00","dateModified":"2024-11-02T21:56:21+08:00","author":{"@type":"Person","name":"luping.net","url":"https://www.luping.net/articlelist/0_1.html"}}
„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Bereitstellung eines Modells für maschinelles Lernen als Web-App mit Streamlit

Bereitstellung eines Modells für maschinelles Lernen als Web-App mit Streamlit

Veröffentlicht am 02.11.2024
Durchsuche:458

Einführung

Ein Modell für maschinelles Lernen ist im Wesentlichen eine Reihe von Regeln oder Mechanismen, die verwendet werden, um Vorhersagen zu treffen oder Muster in Daten zu finden. Um es ganz einfach auszudrücken (und ohne Angst vor einer zu starken Vereinfachung): Eine Trendlinie, die mithilfe der Methode der kleinsten Quadrate in Excel berechnet wird, ist ebenfalls ein Modell. In realen Anwendungen verwendete Modelle sind jedoch nicht so einfach – sie beinhalten oft komplexere Gleichungen und Algorithmen, nicht nur einfache Gleichungen.

In diesem Beitrag werde ich damit beginnen, ein sehr einfaches Modell für maschinelles Lernen zu erstellen und es als sehr einfache Web-App zu veröffentlichen, um ein Gefühl für den Prozess zu bekommen.

Hier werde ich mich nur auf den Prozess konzentrieren, nicht auf das ML-Modell selbst. Außerdem werde ich Streamlit und Streamlit Community Cloud verwenden, um Python-Webanwendungen einfach zu veröffentlichen.

TL;DR:

Mit scikit-learn, einer beliebten Python-Bibliothek für maschinelles Lernen, können Sie schnell Daten trainieren und mit nur wenigen Codezeilen ein Modell für einfache Aufgaben erstellen. Das Modell kann dann mit joblib als wiederverwendbare Datei gespeichert werden. Dieses gespeicherte Modell kann wie eine normale Python-Bibliothek in eine Webanwendung importiert/geladen werden, sodass die App mithilfe des trainierten Modells Vorhersagen treffen kann!

App-URL: https://yh-machine-learning.streamlit.app/
GitHub: https://github.com/yoshan0921/yh-machine-learning.git

Technologie-Stack

  • Python
  • Streamlit: Zum Erstellen der Webanwendungsschnittstelle.
  • scikit-learn: Zum Laden und Verwenden des vorab trainierten Random Forest-Modells.
  • NumPy & Pandas: Zur Datenmanipulation und -verarbeitung.
  • Matplotlib & Seaborn: Zum Generieren von Visualisierungen.

Was ich gemacht habe

Mit dieser App können Sie Vorhersagen untersuchen, die von einem zufälligen Waldmodell erstellt wurden, das auf dem Palmer Penguins-Datensatz trainiert wurde. (Weitere Informationen zu den Trainingsdaten finden Sie am Ende dieses Artikels.)

Konkret sagt das Modell Pinguinarten basierend auf einer Vielzahl von Merkmalen voraus, darunter Art, Insel, Schnabellänge, Flossenlänge, Körpergröße und Geschlecht. Benutzer können durch die App navigieren, um zu sehen, wie sich verschiedene Funktionen auf die Vorhersagen des Modells auswirken.

  • Vorhersagebildschirm
    Machine Learning Model Deployment as a Web App using Streamlit

  • Lerndaten-/Visualisierungsbildschirm
    Machine Learning Model Deployment as a Web App using Streamlit

Entwicklungsschritt 1 – Erstellen des Modells

Schritt 1.1 Bibliotheken importieren

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
import joblib

pandas ist eine Python-Bibliothek, die auf Datenmanipulation und -analyse spezialisiert ist. Es unterstützt das Laden, Vorverarbeiten und Strukturieren von Daten mithilfe von DataFrames und bereitet Daten für Modelle für maschinelles Lernen vor.
sklearn ist eine umfassende Python-Bibliothek für maschinelles Lernen, die Tools zum Training und zur Bewertung bereitstellt. In diesem Beitrag werde ich ein Modell mithilfe einer Lernmethode namens Random Forest erstellen.
joblib ist eine Python-Bibliothek, die dabei hilft, Python-Objekte, wie z. B. Modelle für maschinelles Lernen, auf sehr effiziente Weise zu speichern und zu laden.

Schritt 1.2 Daten lesen

df = pd.read_csv("./dataset/penguins_cleaned.csv")
X_raw = df.drop("species", axis=1)
y_raw = df.species

Laden Sie den Datensatz (Trainingsdaten) und teilen Sie ihn in Features (X) und Zielvariablen (y) auf.

Schritt 1.3 Kodieren Sie die Kategorievariablen

encode = ["island", "sex"]
X_encoded = pd.get_dummies(X_raw, columns=encode)

target_mapper = {"Adelie": 0, "Chinstrap": 1, "Gentoo": 2}
y_encoded = y_raw.apply(lambda x: target_mapper[x])

Die kategorialen Variablen werden mithilfe der One-Hot-Kodierung (X_encoded) in ein numerisches Format konvertiert. Wenn „Insel“ beispielsweise die Kategorien „Biscoe“, „Dream“ und „Torgersen“ enthält, wird für jede eine neue Spalte erstellt (island_Biscoe, island_Dream, island_Torgersen). Das Gleiche gilt für Sex. Wenn die Originaldaten „Biscoe“ lauten, wird die Spalte island_Biscoe auf 1 und die anderen auf 0 gesetzt.
Die Zielvariablenart wird auf numerische Werte abgebildet (y_encoded).

Schritt 1.4 Teilen Sie den Datensatz auf

x_train, x_test, y_train, y_test = train_test_split(
    X_encoded, y_encoded, test_size=0.3, random_state=1
)

Um ein Modell zu bewerten, ist es notwendig, die Leistung des Modells anhand von Daten zu messen, die nicht für das Training verwendet werden. 7:3 wird häufig als allgemeine Praxis beim maschinellen Lernen verwendet.

Schritt 1.5 Trainieren Sie ein Random Forest-Modell

clf = RandomForestClassifier()
clf.fit(x_train, y_train)

Die Anpassungsmethode wird zum Trainieren des Modells verwendet.
Der x_train repräsentiert die Trainingsdaten für die erklärenden Variablen und der y_train repräsentiert die Zielvariablen.
Durch Aufrufen dieser Methode wird das auf Basis der Trainingsdaten trainierte Modell in clf gespeichert.

Schritt 1.6 Speichern Sie das Modell

joblib.dump(clf, "penguin_classifier_model.pkl")

joblib.dump() ist eine Funktion zum Speichern von Python-Objekten im Binärformat. Durch das Speichern des Modells in diesem Format kann das Modell aus einer Datei geladen und unverändert verwendet werden, ohne dass es erneut trainiert werden muss.

Beispielcode

Entwicklungsschritt 2 – Erstellen der Web-App und Integrieren des Modells

Schritt 2.1 Bibliotheken importieren

import streamlit as st
import numpy as np
import pandas as pd
import joblib

stremlit ist eine Python-Bibliothek, die es einfach macht, benutzerdefinierte Webanwendungen für maschinelles Lernen und Data-Science-Projekte zu erstellen und zu teilen.
numpy ist eine grundlegende Python-Bibliothek für numerische Berechnungen. Es bietet Unterstützung für große, mehrdimensionale Arrays und Matrizen sowie eine Sammlung mathematischer Funktionen, um diese Arrays effizient zu bearbeiten.

Schritt 2.2 Eingabedaten abrufen und kodieren

data = {
    "island": island,
    "bill_length_mm": bill_length_mm,
    "bill_depth_mm": bill_depth_mm,
    "flipper_length_mm": flipper_length_mm,
    "body_mass_g": body_mass_g,
    "sex": sex,
}
input_df = pd.DataFrame(data, index=[0])

encode = ["island", "sex"]
input_encoded_df = pd.get_dummies(input_df, prefix=encode)

Eingabewerte werden aus dem von Stremlit erstellten Eingabeformular abgerufen und kategoriale Variablen werden nach denselben Regeln codiert wie bei der Erstellung des Modells. Beachten Sie, dass die Reihenfolge der einzelnen Daten auch mit der Reihenfolge bei der Erstellung des Modells übereinstimmen muss. Wenn die Reihenfolge unterschiedlich ist, tritt beim Ausführen einer Prognose mithilfe des Modells ein Fehler auf.

Schritt 2.3 Laden Sie das Modell

clf = joblib.load("penguin_classifier_model.pkl")

"penguin_classifier_model.pkl" ist die Datei, in der das zuvor gespeicherte Modell gespeichert ist. Diese Datei enthält einen trainierten RandomForestClassifier im Binärformat. Wenn Sie diesen Code ausführen, wird das Modell in clf geladen, sodass Sie es für Vorhersagen und Auswertungen neuer Daten verwenden können.

Schritt 2.4 Vorhersage durchführen

prediction = clf.predict(input_encoded_df)
prediction_proba = clf.predict_proba(input_encoded_df)

clf.predict(input_encoded_df): Verwendet das trainierte Modell, um die Klasse für die neuen codierten Eingabedaten vorherzusagen, und speichert das Ergebnis in der Vorhersage.
clf.predict_proba(input_encoded_df): Berechnet die Wahrscheinlichkeit für jede Klasse und speichert die Ergebnisse in Prediction_proba.

Beispielcode

Schritt 3. Einsetzen

Machine Learning Model Deployment as a Web App using Streamlit

Sie können Ihre entwickelte Anwendung im Internet veröffentlichen, indem Sie auf die Stremlit Community Cloud (https://streamlit.io/cloud) zugreifen und die URL des GitHub-Repositorys angeben.

Über den Datensatz

Machine Learning Model Deployment as a Web App using Streamlit

Kunstwerk von @allison_horst (https://github.com/allisonhorst)

Das Modell wird mithilfe des Palmer Penguins-Datensatzes trainiert, einem weithin anerkannten Datensatz zum Üben von Techniken des maschinellen Lernens. Dieser Datensatz liefert Informationen zu drei Pinguinarten (Adelie, Zügelpinguin und Eselspinguin) aus dem Palmer-Archipel in der Antarktis. Zu den wichtigsten Funktionen gehören:

  • Art: Die Art des Pinguins (Adelie, Zügelpinguin, Eselspinguin).
  • Insel: Die spezifische Insel, auf der der Pinguin beobachtet wurde (Biscoe, Dream, Torgersen).
  • Schnabellänge: Die Länge des Pinguinschnabels (mm).
  • Schnabeltiefe: Die Tiefe des Pinguinschnabels (mm).
  • Flossenlänge: Die Länge der Flosse des Pinguins (mm).
  • Körpermasse: Die Masse des Pinguins (g).
  • Geschlecht: Das Geschlecht des Pinguins (männlich oder weiblich).

Dieser Datensatz stammt von Kaggle und kann hier abgerufen werden. Die Vielfalt der Merkmale macht es zu einer hervorragenden Wahl für die Erstellung eines Klassifizierungsmodells und das Verständnis der Bedeutung jedes Merkmals für die Artenvorhersage.

Freigabeerklärung Dieser Artikel ist abgedruckt unter: https://dev.to/yoshan0921/machine-learning-model-deployment-as-a-web-app-using-streamlit-2c5p?1 Bei Verstößen wenden Sie sich bitte an Study_golang@163 .com, um es zu löschen
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3