خطوة التطوير 2 - بناء تطبيق الويب ودمج النموذج

الخطوة 2.1 استيراد المكتبات

import streamlit as stimport numpy as npimport pandas as pdimport joblib

stremlit هي مكتبة Python تجعل من السهل إنشاء ومشاركة تطبيقات الويب المخصصة لمشاريع التعلم الآلي وعلوم البيانات.
numpy هي مكتبة بايثون الأساسية للحوسبة العددية. يوفر الدعم للمصفوفات والمصفوفات الكبيرة ومتعددة الأبعاد، إلى جانب مجموعة من الوظائف الرياضية للعمل على هذه المصفوفات بكفاءة.

الخطوة 2.2 استرداد وترميز بيانات الإدخال

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)

يتم استرداد قيم الإدخال من نموذج الإدخال الذي تم إنشاؤه بواسطة Stremlit، ويتم ترميز المتغيرات الفئوية باستخدام نفس القواعد التي كانت عند إنشاء النموذج. لاحظ أن ترتيب كل البيانات يجب أن يكون هو نفسه الذي تم إنشاؤه عند إنشاء النموذج. إذا كان الترتيب مختلفًا، سيحدث خطأ عند تنفيذ التنبؤ باستخدام النموذج.

الخطوة 2.3 قم بتحميل النموذج

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

\\\"penguin_classifier_model.pkl\\\" هو الملف الذي تم تخزين النموذج المحفوظ فيه مسبقًا. يحتوي هذا الملف على RandomForestClassifier مدرب بتنسيق ثنائي. يؤدي تشغيل هذا الكود إلى تحميل النموذج إلى clf، مما يسمح لك باستخدامه للتنبؤات والتقييمات على البيانات الجديدة.

الخطوة 2.4 تنفيذ التنبؤ

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

clf.predict(input_encoded_df): يستخدم النموذج المدرب للتنبؤ بفئة بيانات الإدخال المشفرة الجديدة، وتخزين النتيجة في التنبؤ.
clf.predict_proba(input_encoded_df): حساب الاحتمالية لكل فئة، وتخزين النتائج في Prophet_proba.

رمز العينة

الخطوة 3. نشر

\\\"Machine

يمكنك نشر تطبيقك المطور على الإنترنت عن طريق الوصول إلى Stremlit Community Cloud (https://streamlit.io/cloud) وتحديد عنوان URL لمستودع GitHub.

حول مجموعة البيانات

\\\"Machine

عمل فني بواسطة @allison_horst (https://github.com/allisonhorst)

تم تدريب النموذج باستخدام مجموعة بيانات Palmer Penguins، وهي مجموعة بيانات معترف بها على نطاق واسع لممارسة تقنيات التعلم الآلي. توفر مجموعة البيانات هذه معلومات عن ثلاثة أنواع من طيور البطريق (أديلي، وشينستراب، وجنتو) من أرخبيل بالمر في القارة القطبية الجنوبية. تشمل الميزات الرئيسية ما يلي:

تم الحصول على مجموعة البيانات هذه من Kaggle، ويمكن الوصول إليها هنا. التنوع في الميزات يجعله خيارًا ممتازًا لبناء نموذج تصنيف وفهم أهمية كل ميزة في التنبؤ بالأنواع.

","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"}}
"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > نشر نموذج التعلم الآلي كتطبيق ويب باستخدام Streamlit

نشر نموذج التعلم الآلي كتطبيق ويب باستخدام Streamlit

تم النشر بتاريخ 2024-11-02
تصفح:912

مقدمة

نموذج التعلم الآلي هو في الأساس مجموعة من القواعد أو الآليات المستخدمة للتنبؤات أو العثور على أنماط في البيانات. وبعبارة أبسط (وبدون خوف من التبسيط)، فإن خط الاتجاه المحسوب باستخدام طريقة المربعات الصغرى في Excel هو أيضًا نموذج. ومع ذلك، فإن النماذج المستخدمة في التطبيقات الحقيقية ليست بهذه البساطة، فهي غالبًا ما تتضمن معادلات وخوارزميات أكثر تعقيدًا، وليس مجرد معادلات بسيطة.

في هذا المنشور، سأبدأ ببناء نموذج بسيط جدًا للتعلم الآلي وإطلاقه كتطبيق ويب بسيط جدًا للتعرف على العملية.

هنا، سأركز فقط على العملية، وليس على نموذج تعلم الآلة نفسه. سأستخدم أيضًا Streamlit وStreamlit Community Cloud لإصدار تطبيقات ويب Python بسهولة.

ليرة تركية؛دكتور:

باستخدام scikit-learn، وهي مكتبة Python شائعة للتعلم الآلي، يمكنك تدريب البيانات بسرعة وإنشاء نموذج باستخدام بضعة أسطر من التعليمات البرمجية للمهام البسيطة. يمكن بعد ذلك حفظ النموذج كملف قابل لإعادة الاستخدام باستخدام joblib. يمكن استيراد/تحميل هذا النموذج المحفوظ مثل مكتبة Python العادية في تطبيق ويب، مما يسمح للتطبيق بالتنبؤ باستخدام النموذج المُدرب!

عنوان URL للتطبيق: https://yh-machine-learning.streamlit.app/
جيثب: https://github.com/yoshan0921/yh-machine-learning.git

كومة التكنولوجيا

  • بايثون
  • Streamlit: لإنشاء واجهة تطبيق الويب.
  • scikit-learn: للتحميل واستخدام نموذج Random Forest المُدرب مسبقًا.
  • NumPy & Pandas: لمعالجة البيانات ومعالجتها.
  • Matplotlib وSeaborn: لإنشاء تصورات.

ما صنعته

يسمح لك هذا التطبيق بفحص التنبؤات التي قدمها نموذج غابة عشوائي تم تدريبه على مجموعة بيانات Palmer Penguins. (راجع نهاية هذه المقالة لمزيد من التفاصيل حول بيانات التدريب.)

على وجه التحديد، يتنبأ النموذج بأنواع البطريق بناءً على مجموعة متنوعة من الميزات، بما في ذلك النوع والجزيرة وطول المنقار وطول الزعنفة وحجم الجسم والجنس. يمكن للمستخدمين التنقل في التطبيق لمعرفة مدى تأثير الميزات المختلفة على توقعات النموذج.

  • شاشة التنبؤ
    Machine Learning Model Deployment as a Web App using Streamlit

  • شاشة البيانات/التصورات التعليمية
    Machine Learning Model Deployment as a Web App using Streamlit

خطوة التطوير 1 - إنشاء النموذج

الخطوة 1.1 استيراد المكتبات

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 هي مكتبة بايثون متخصصة في معالجة البيانات وتحليلها. وهو يدعم تحميل البيانات، والمعالجة المسبقة، والهيكلة باستخدام DataFrames، وإعداد البيانات لنماذج التعلم الآلي.
sklearn هي مكتبة بايثون شاملة للتعلم الآلي توفر أدوات للتدريب والتقييم. في هذا المنشور، سأقوم ببناء نموذج باستخدام طريقة تعليمية تسمى Random Forest.
joblib هي مكتبة Python تساعد في حفظ وتحميل كائنات Python، مثل نماذج التعلم الآلي، بطريقة فعالة للغاية.

الخطوة 1.2 قراءة البيانات

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

تحميل مجموعة البيانات (بيانات التدريب) وفصلها إلى ميزات (X) ومتغيرات الهدف (ص).

الخطوة 1.3 تشفير متغيرات الفئة

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])

يتم تحويل المتغيرات الفئوية إلى تنسيق رقمي باستخدام التشفير الساخن (X_encoded). على سبيل المثال، إذا كانت "الجزيرة" تحتوي على الفئات "Biscoe" و"Dream" و"Torgersen"، فسيتم إنشاء عمود جديد لكل منها (island_Biscoe، Island_Dream، Island_Torgersen). وينطبق الشيء نفسه على الجنس. إذا كانت البيانات الأصلية هي "Biscoe"، فسيتم تعيين عمود Island_Biscoe على 1 والأعمدة الأخرى على 0.
يتم تعيين الأنواع المتغيرة المستهدفة إلى قيم عددية (y_encoded).

الخطوة 1.4 تقسيم مجموعة البيانات

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

لتقييم النموذج، من الضروري قياس أداء النموذج على البيانات غير المستخدمة للتدريب. تُستخدم نسبة 7:3 على نطاق واسع كممارسة عامة في التعلم الآلي.

الخطوة 1.5 تدريب نموذج غابة عشوائي

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

يتم استخدام طريقة الملاءمة لتدريب النموذج.
يمثل x_train بيانات التدريب للمتغيرات التوضيحية، ويمثل y_train المتغيرات المستهدفة.
من خلال استدعاء هذه الطريقة، يتم تخزين النموذج الذي تم تدريبه بناءً على بيانات التدريب في ملف clf.

الخطوة 1.6 احفظ النموذج

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

joblib.dump() هي دالة لحفظ كائنات Python بتنسيق ثنائي. من خلال حفظ النموذج بهذا التنسيق، يمكن تحميل النموذج من ملف واستخدامه كما هو دون الحاجة إلى التدريب مرة أخرى.

رمز العينة

خطوة التطوير 2 - بناء تطبيق الويب ودمج النموذج

الخطوة 2.1 استيراد المكتبات

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

stremlit هي مكتبة Python تجعل من السهل إنشاء ومشاركة تطبيقات الويب المخصصة لمشاريع التعلم الآلي وعلوم البيانات.
numpy هي مكتبة بايثون الأساسية للحوسبة العددية. يوفر الدعم للمصفوفات والمصفوفات الكبيرة ومتعددة الأبعاد، إلى جانب مجموعة من الوظائف الرياضية للعمل على هذه المصفوفات بكفاءة.

الخطوة 2.2 استرداد وترميز بيانات الإدخال

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)

يتم استرداد قيم الإدخال من نموذج الإدخال الذي تم إنشاؤه بواسطة Stremlit، ويتم ترميز المتغيرات الفئوية باستخدام نفس القواعد التي كانت عند إنشاء النموذج. لاحظ أن ترتيب كل البيانات يجب أن يكون هو نفسه الذي تم إنشاؤه عند إنشاء النموذج. إذا كان الترتيب مختلفًا، سيحدث خطأ عند تنفيذ التنبؤ باستخدام النموذج.

الخطوة 2.3 قم بتحميل النموذج

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

"penguin_classifier_model.pkl" هو الملف الذي تم تخزين النموذج المحفوظ فيه مسبقًا. يحتوي هذا الملف على RandomForestClassifier مدرب بتنسيق ثنائي. يؤدي تشغيل هذا الكود إلى تحميل النموذج إلى clf، مما يسمح لك باستخدامه للتنبؤات والتقييمات على البيانات الجديدة.

الخطوة 2.4 تنفيذ التنبؤ

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

clf.predict(input_encoded_df): يستخدم النموذج المدرب للتنبؤ بفئة بيانات الإدخال المشفرة الجديدة، وتخزين النتيجة في التنبؤ.
clf.predict_proba(input_encoded_df): حساب الاحتمالية لكل فئة، وتخزين النتائج في Prophet_proba.

رمز العينة

الخطوة 3. نشر

Machine Learning Model Deployment as a Web App using Streamlit

يمكنك نشر تطبيقك المطور على الإنترنت عن طريق الوصول إلى Stremlit Community Cloud (https://streamlit.io/cloud) وتحديد عنوان URL لمستودع GitHub.

حول مجموعة البيانات

Machine Learning Model Deployment as a Web App using Streamlit

عمل فني بواسطة @allison_horst (https://github.com/allisonhorst)

تم تدريب النموذج باستخدام مجموعة بيانات Palmer Penguins، وهي مجموعة بيانات معترف بها على نطاق واسع لممارسة تقنيات التعلم الآلي. توفر مجموعة البيانات هذه معلومات عن ثلاثة أنواع من طيور البطريق (أديلي، وشينستراب، وجنتو) من أرخبيل بالمر في القارة القطبية الجنوبية. تشمل الميزات الرئيسية ما يلي:

  • الأنواع: أنواع البطريق (أديلي، تشينستراب، جنتو).
  • الجزيرة: الجزيرة المحددة التي تمت ملاحظة البطريق فيها (بيسكو، دريم، تورجيرسن).
  • طول المنقار: طول منقار البطريق (مم).
  • عمق المنقار: عمق منقار البطريق (مم).
  • طول الزعنفة: طول زعنفة البطريق (مم).
  • كتلة الجسم: كتلة البطريق (جم).
  • الجنس: جنس البطريق (ذكر أو أنثى).

تم الحصول على مجموعة البيانات هذه من Kaggle، ويمكن الوصول إليها هنا. التنوع في الميزات يجعله خيارًا ممتازًا لبناء نموذج تصنيف وفهم أهمية كل ميزة في التنبؤ بالأنواع.

بيان الافراج تم إعادة نشر هذه المقالة على: https://dev.to/yoshan0921/machine-learning-model-deployment-as-a-web-app-using-streamlit-2c5p?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ Study_golang@163 .com لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3