دليل خطوة بخطوة لنشر نماذج ML باستخدام Streamlit

نشرت: 2020-12-07

جدول المحتويات

مقدمة

يسجل معظم المتحمسين لتعلم الآلة أنفسهم في بعض الدورات والمناهج الدراسية لبدء استخدام الذكاء الاصطناعي والتعلم الآلي. تغطي هذه الدورات الكثير من العناصر الأساسية وتوجه المتعلمين بدقة لبناء وتدريب أحدث نماذج تعلم الآلة.

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

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

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

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

وهنا يبرز السؤال الرئيسي ، "لماذا يجب على هواة التعلم الآلي أن يضيعوا وقتهم في تعلم بعض أطر عمل واجهة المستخدم بينما يمكنهم بدلاً من ذلك استخدام هذا الوقت الثمين في تعلم بناء نماذج أفضل؟"

سيكون هناك الكثير من الموضوعات التي يتم تناولها هنا حول كيفية استخدام Streamlit لمشاريعك. لا تتردد في التخطي إلى الأجزاء التي تريد معرفة المزيد عنها.

  • لماذا Streamlit؟
  • بناء نموذج أساسي ML
  • إضافة السحر باستخدام Streamlit
  • نشر تطبيق الويب Streamlit
  • خاتمة

لماذا Streamlit؟

يجعل Streamlit الأمر سهلاً وسريعًا للغاية بالنسبة لنا لإنشاء تطبيق ويب التعلم الآلي. الطرق الأخرى المتاحة لتطوير مثل هذه الأغلفة لنماذج ML ليست مريحة للغاية.

Flask هو إطار عمل Python يسمح للمستخدمين بتطوير تطبيقات الويب ونشرها باستخدام لغة python. يتطلب معرفة جيدة ببيثون ونحتاج أيضًا إلى استثمار الوقت في تعلمه. حتى بعد ذلك ، ليس من السهل جدًا تطوير تطبيق ويب عند مقارنته بـ Streamlit.

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

يعد Tensorflow.js طريقة رائعة جدًا لحفظ النماذج المتوافقة مع منصات الويب ومن ثم يمكن استخدام هذه النماذج لإنشاء تطبيقات الويب. لا يدعم Tensorflow.js العديد من التطبيقات المعقدة لنماذج ML والبنى عالية المستوى. هناك العديد من النماذج التي ستعمل في Python وقد لا تعمل على Javascript في مكتبة Tensorflow.js.

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

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

عملت النماذج بشكل جيد في دفتر Jupyter لكنني أردت مشاركتها مع الآخرين. لقد بدأت في البحث عن أطر عمل لإنشاء تطبيق واستضافة النموذج ولكني لم أرغب في إضاعة وقتي في تعلم إطار عمل آخر لأنني أردت استكشاف تطبيقات GAN الأخرى.

لقد تحققت من جميع الموارد البديلة التي تحدثت عنها في هذه المقالة سابقًا. نموذج المولد المستخدم في مشروع توليد Sketch-To-Color معقد بعض الشيء. إنه نموذج معماري U-Net ويتطلب منك تخطي الاتصالات.

نظرًا لتعقيدها الشديد ، لم أتمكن من تحويل النموذج النهائي لجافا سكريبت باستخدام Tensorflow.js. لم يكن Learning Flask أو Django من البداية خيارًا بالنسبة لي ، لذلك بدأت في البحث عن بعض الأطر أو المكتبات الأخرى.

هذا عندما صادفت Streamlit. في مقال بقلم Adrien Treuille ، يوضح كيف قام ببناء تطبيق ويب مذهل لـ TL-GAN في أقل من 13 سطرًا من التعليمات البرمجية. كان كل هذا ممكنًا فقط بسبب Streamlit.

كما أن التوثيق الموجود على موقع الويب الرسمي الخاص بهم دقيق للغاية ومفيد. حاولت إنشاء تطبيق ويب Streamlit لنموذج Sketch to Color GANs الخاص بي وكان مذهلاً. كان علي فقط إضافة 12 سطرًا من التعليمات البرمجية إلى كود Python الحالي الخاص بي. لهذا السبب تقدمت أخيرًا في استكشاف Streamlit وبناء مشاريع أخرى باستخدامه.

بناء نموذج أساسي ML

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

أولاً ، سنقوم باستيراد المكتبات المطلوبة لنموذج ML البسيط الخاص بنا. سنستخدم هنا TensorFlow و pandas و NumPy.

استيراد tensorflow مثل tf

استيراد numpy كـ np

استيراد الباندا كما pd

الآن ، سوف نستخدم مجموعات البيانات من Scikit-Learn لتنزيل مجموعة بيانات الإسكان في كاليفورنيا.

من sklearn.datasets import fetch_california_housing

السكن = fetch_california_housing ()

بعد ذلك ، نحتاج إلى تقسيم البيانات المحملة إلى مجموعات تدريب وتحقق واختبار. هناك العديد من الطرق المتاحة للقيام بذلك. سوف نستخدم وظيفة train_test_split المتوفرة في مكتبة Scikit-Learn. سيؤدي استخدامه مرتين إلى تقسيم مجموعة البيانات إلى 3 مجموعات من التدريب والتحقق من الصحة والاختبار.

من sklearn.model_selection استيراد train_test_split

X_train_full ، X_test ، y_train_full ، y_test = train_test_split (

بيانات الإسكان ، الإسكان. الهدف

)

X_train ، X_valid ، y_train ، y_valid = train_test_split (

X_train_full ، y_train_full

)

البيانات المتاحة لنا لها قيم خطوط الطول والعرض لكل إدخال. لتصور هذا بشكل أفضل ، يمكننا عمل مخطط مبعثر على الخريطة. لاستخدام الخرائط ، سنقوم باستيراد مكتبة Altair .

استيراد altair كبديل

map_data = pd.DataFrame (

X_train ،

الأعمدة = [

"MedInc"،

"HouseAge"،

"AveRooms"،

"AveBedrms" ،

'تعداد سكاني'،

"AveOccup"،

'خط العرض'،

'خط الطول'

])

نقطة المنتصف = (np.average (map_data ["خط العرض"]) ، np.average (map_data ["خط الطول"]))

st.write (pdk.Deck (

map_style = ”mapbox: // styles / mapbox / light-v9 ″ ،

initial_view_state = {

"خط العرض": نقطة المنتصف [0] ،

"خط الطول": نقطة المنتصف [1] ،

"تكبير": 6 ،

"الملعب": 75 ،

} ،

الطبقات = [

طبقة pdk. (

"HexagonLayer" ،

data = map_data ،

get_position = ["خط الطول" ، "خط العرض"] ،

نصف القطر = 1000 ،

مقياس الارتفاع = 4 ،

الارتفاع_النطاق = [0 ، 10000] ،

قابل للانتقاء = صحيح ،

مقذوف = صحيح ،

) ،

] ،

))

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

من sklearn.preprocessing استيراد StandardScaler

قشارة = StandardScaler ()

X_train = scaler.fit_transform (X_train)

X_valid = scaler.transform (X_valid)

X_test = scaler.transform (X_test)

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

استيراد tensorflow مثل tf

النموذج = tf.keras.models.Sequential ([

tf.keras.layers.Dense (n_neurons، activation = 'relu'، input_shape = X_train.shape [1:]) ،

tf.keras.layers.Dense (1)

])

في TensorFlow ، يتعين علينا تجميع النموذج بعد بنائه. هنا يجب أن نذكر وظيفة الخسارة التي سنستخدمها وكذلك المحسن الذي نريده. سنستخدم دالة متوسط ​​خسارة الخطأ التربيعي ومحسن SGD بمعدل تعلم محدد.

model.compile (

الخسارة = 'mean_squared_error' ،

محسن = tf.keras.optimizers.SGD (l_rate)

)

كل شيء في مكانه الآن. كل ما علينا القيام به هو تدريب النموذج. في TensorFlow ، يمكن القيام بذلك ببساطة عن طريق استدعاء طريقة fit (). يمكننا حفظ جميع السجلات في متغير التاريخ .

التاريخ = model.fit (

X_train ،

y_train ،

العهود = n_epochs ،

Validation_data = (X_valid، y_valid)

)

بعد التدريب ، يمكننا أيضًا تقييم دقة نموذجنا وفقدانه باستخدام طريقة التقييم ().

التقييم = تقييم النموذج (X_test ، y_test)

الآن ، إذا أردنا توقع أسعار أي منزل باستخدام هذا النموذج ، فيمكننا فعل ذلك فقط عن طريق استدعاء الطريقة ، توقع () .

X_new = X_test [: 3]

تنبؤات = model.predict (X_new)

هذه هي الطريقة التي يمكنك بها بناء نموذج بسيط للتنبؤ بأسعار المنزل باستخدام TensorFlow و scikit-Learn و pandas. لكن المشكلة كما ترى هي أنه لا توجد طريقة لإظهار هذا النموذج للمستخدمين الآخرين حيث يمكنهم التفاعل معه وهذا مجرد نموذج داخل دفتر ملاحظات Jupyter. الآن دعونا نضيف بعض السحر مع Streamlit!

اقرأ أيضًا: أفكار مشروع التعلم الآلي

إضافة السحر باستخدام Streamlit

لإنشاء تطبيق ويب التعلم الآلي ، تحتاج فقط إلى إضافة بضعة أسطر من التعليمات البرمجية لمكالمات وظيفة Streamlit وهذا كل شيء. لا تحتاج إلى أي HTML أو CSS أو Javascript. فقط نقي الثعبان!

نعم ، لقد قرأتها بشكل صحيح. لا داعي للقلق بشأن أي شيء آخر. ما عليك سوى تثبيت Streamlit على نظامك وستكون جاهزًا للانطلاق. استخدم الأمر التالي في محطاتك:

تثبيت نقطة الانسيابية

يمكنك استخدام الأمر التالي للاستكشاف في تطبيق hello world الخاص بهم. إنه مثال جيد لكيفية ظهور تطبيقات الويب باستخدام Streamlit:

انسيابي مرحبا

بعد تثبيت Streamlit محليًا وإضافة السطر السحري إلى الكود ، تحتاج فقط إلى تنفيذ الأمر التالي لتشغيل التطبيق محليًا:

تدفق تدفق file_name.py

لذا فإن السؤال الآن هو ، "ما هي تلك الأسطر السحرية من التعليمات البرمجية؟" إنها بسيطة للغاية. سأشرح أولاً الوظائف الأساسية المستخدمة في Streamlit ثم سأعرض الكود بحيث يمكنك ربطه مباشرةً بالمثال.

قبل أي شيء آخر ، سنقوم باستيراد مكتبة Streamlit باستخدام سطر التعليمات البرمجية التالي:

استيراد Streamlit مثل شارع

الميزة الأولى المهمة هي أنه يمكنك ببساطة كتابة أي شيء في علامات الاقتباس المزدوجة الثلاثة ، فهي تعرض النص كما هو في تطبيق الويب. وهو يدعم بناء جملة لغة markdown. لذلك يمكنك القيام بالعديد من الأشياء مثل الرؤوس والنقاط والجداول وغير ذلك الكثير. يمكنك أيضًا استخدام وظيفة st.write () بدلاً من هذا الترميز. لها نفس الوظيفة.

التالي هو مع st.echo (): وظيفة. يؤدي هذا بشكل أساسي إلى تنفيذ رمز Python المكتوب فيه ثم يعرضه أيضًا على تطبيق الويب. بهذه الطريقة يمكننا إنشاء تطبيق ويب يوضح كيف تم إنشاؤه.

st.empty () هي منطقة محجوزة لبعض المحتويات الديناميكية فيما بعد.

يظهر st.spinner () عنصر تحميل عندما يكون هناك بعض التأخير في تنفيذ جزء من التعليمات البرمجية.

يظهر st.success () رسالة باللون الأخضر. هذا له جانب تصميم رائع في حوارات النجاح.

يعرض st.sidebar () المحتوى في شريط جانبي على اليسار افتراضيًا.

يوفر st.sidebar.slider () شريط تمرير في الشريط الجانبي لاختيار القيم من نطاق من الأرقام المحددة. يسمح لك st.sidebar.selectbox () بتحديد قيمة من القائمة المحددة و يحتوي Streamlit على العديد من الوظائف والميزات الرائعة المليئة به. فيما يلي بعض الميزات:

  • التغييرات الحية عند حفظ الملف
  • أعد تشغيل التطبيق ببساطة عن طريق الضغط على R على لوحة المفاتيح
  • ذاكرة تخزين مؤقت واضحة بمجرد الضغط على C على لوحة المفاتيح
  • قم بتسجيل تطبيق الويب وحفظ ملف فيديو محليًا لمشاركته مع الجميع

…وأكثر بكثير

يجب أن تقرأ: مهنة في تعلم الآلة

الرمز

استيراد Streamlit مثل شارع

استيراد altair كبديل

استيراد pydeck مثل PDK

train_area = st.empty ()

"" "

# أسعار المساكن في كاليفورنيا

هذه هي مجموعة بيانات أسعار المساكن في كاليفورنيا والتي تحتوي على بيانات مأخوذة من تعداد الولايات المتحدة لعام 1990. يوفر الجدول التالي الأوصاف ونطاقات البيانات وأنواع البيانات لكل معلم في مجموعة البيانات.

## دعونا أولاً نلقي نظرة على الواردات

"" "

مع st.echo ():

استيراد tensorflow مثل tf

استيراد numpy كـ np

استيراد الباندا كما pd

"" "

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

سنستخدم وحدة مجموعة البيانات الخاصة بـ scikit-Learn لقيادة البيانات التي تم تنظيفها بالفعل لنا والتي تحتوي فقط على الميزات العددية.

"" "

مع st.echo ():

من sklearn.datasets import fetch_california_housing

السكن = fetch_california_housing ()

"" "

سيؤدي هذا إلى تحميل البيانات بالكامل في متغير "السكن" كما ترى أدناه

"" "

st.subheader ("ميزات الإدخال")

بيانات السكن

العنوان الفرعي ("تسميات الإخراج")

السكن. الهدف

"" "

## تقسيم البيانات إلى مجموعات تدريب واختبار وتطوير

يعد هذا أحد أهم الأشياء في بداية أي حل للتعلم الآلي لأن نتيجة أي نموذج يمكن أن تعتمد بشكل كبير على مدى جودة توزيع البيانات في هذه المجموعات.

لحسن الحظ بالنسبة لنا ، لدينا scikit-Learn للإنقاذ حيث أصبح سهلاً مثل سطرين من التعليمات البرمجية.

"" "

مع st.echo ():

من sklearn.model_selection استيراد train_test_split

X_train_full ، X_test ، y_train_full ، y_test = train_test_split (

بيانات الإسكان ، الإسكان. الهدف

)

X_train ، X_valid ، y_train ، y_valid = train_test_split (

X_train_full ، y_train_full

)

"" "

تقسم الوظيفة "train_test_split ()" البيانات إلى مجموعتين حيث تكون مجموعة الاختبار 25٪ من إجمالي مجموعة البيانات. لقد استخدمنا نفس الوظيفة مرة أخرى في train_full لتقسيمها إلى مجموعات تدريب وتحقق من الصحة. 25٪ هي معلمة افتراضية ويمكنك تعديلها حسب احتياجاتك. ألق نظرة عليه من [وثائق Scikit-Learn] (https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.train_test_split.html).

## إلقاء نظرة على بيانات القطار

تمثل الأعمدة البيانات التالية:

"" "

st.write (Housing.feature_names)

"" "

الآن دعونا نلقي نظرة على موقع المنازل من خلال رسمها على الخريطة باستخدام قيم خطوط الطول والعرض:

"" "

مع st.echo ():

map_data = pd.DataFrame (

X_train ،

أعمدة = [

"MedInc"،

"HouseAge"،

"AveRooms"،

"AveBedrms" ،

'تعداد سكاني'،

"AveOccup"،

'خط العرض'،

'خط الطول'

])

نقطة المنتصف = (np.average (map_data ["خط العرض"]) ، np.average (map_data ["خط الطول"]))

st.write (pdk.Deck (

map_style = ”mapbox: // styles / mapbox / light-v9 ″ ،

initial_view_state = {

"خط العرض": نقطة المنتصف [0] ،

"خط الطول": نقطة المنتصف [1] ،

"تكبير": 6 ،

"الملعب": 75 ،

} ،

الطبقات = [

طبقة pdk. (

"HexagonLayer" ،

data = map_data ،

get_position = ["خط الطول" ، "خط العرض"] ،

نصف القطر = 1000 ،

مقياس الارتفاع = 4 ،

الارتفاع_النطاق = [0 ، 10000] ،

قابل للانتقاء = صحيح ،

مقذوف = صحيح ،

) ،

] ،

))

"" "

** لا تتردد في التكبير أو السحب أثناء الضغط على مفتاح ALT لتغيير زاوية عرض الخريطة ثلاثية الأبعاد ، كما هو مطلوب. **

## المعالجة المسبقة

كما أشرنا سابقًا ، فإن مجموعة البيانات هذه مُجهزة مسبقًا بشكل جيد بواسطة scikit-Learn لنا لاستخدامها مباشرة دون القلق بشأن أي قيم NaN وغيرها من الأشياء.

على الرغم من أننا بصدد قياس القيم في نطاقات محددة باستخدام "StandardScaler" لمساعدة نموذجنا في العمل بكفاءة.

"" "

مع st.echo ():

من sklearn.preprocessing استيراد StandardScaler

قشارة = StandardScaler ()

X_train = scaler.fit_transform (X_train)

X_valid = scaler.transform (X_valid)

X_test = scaler.transform (X_test)

"" "

## إنشاء نموذج

سننشئ نموذجًا تسلسليًا بسيطًا مع الطبقة الأولى التي تحتوي على 30 خلية عصبية ووظيفة التنشيط لـ RELU.

ستكون الطبقة التالية عبارة عن طبقة عصبية واحدة بدون وظيفة تنشيط لأننا نريد أن يتنبأ النموذج بمجموعة من القيم وليس فقط النتائج الثنائية أو متعددة الطبقات مثل مشاكل التصنيف.

"" "

st.sidebar.title ("Hyperparameters")

n_neurons = st.sidebar.slider ("الخلايا العصبية" ، 1 ، 128 ، 30)

l_rate = st.sidebar.selectbox ("معدل التعلم" ، (0.0001 ، 0.001 ، 0.01) ، 1)

n_epochs = st.sidebar.number_input ("عدد العهود" ، 1 ، 50 ، 20)

# The n_neurons و l_rate و _nepochs هي المدخلات المأخوذة من المستخدم لتدريب النموذج. يتم أيضًا تعيين القيم الافتراضية لهم. القيمة الافتراضية لـ n_neurons هي 30 ، والقيمة الافتراضية لـ l_rate هي 0.01 والقيمة الافتراضية لـ n_epochs هي 20. لذا في البداية سيكون للنموذج 30 خلية عصبية في الطبقة الأولى ، وسيكون معدل التعلم 0.01 وعدد فترات الذي سيتدرب عليه النموذج هو 20.

مع st.echo ():

استيراد tensorflow مثل tf

النموذج = tf.keras.models.Sequential ([

tf.keras.layers.Dense (n_neurons، activation = 'relu'، input_shape = X_train.shape [1:]) ،

tf.keras.layers.Dense (1)

])

"" "

## تجميع النموذج

تزودنا Tensorflow keras API بوظيفة `model.compile ()` لتعيين المحسّنين ووظيفة الخسارة وبعض التفاصيل الأخرى للنموذج.

"" "

مع st.echo ():

model.compile (

الخسارة = 'mean_squared_error' ،

محسن = tf.keras.optimizers.SGD (l_rate)

)

"" "

## تدريب النموذج

لتدريب النموذج ، عليك ببساطة استدعاء الوظيفة `` fit () '' في النموذج مع مجموعة التدريب والتحقق وعدد من الفترات التي تريد أن يتدرب عليها النموذج.

** جرب اللعب بالمعلمات الفائقة من الشريط الجانبي على الجانب الأيسر وانقر على زر "نموذج القطار" الموضح أدناه لبدء التدريب. **

"" "

القطار = زر سانت ("نموذج القطار")

إذا كان القطار:

مع st.spinner ("نموذج تدريب ..."):

مع st.echo ():

model.summary (print_fn = lambda x: st.write (“{}”. format (x)))

التاريخ = model.fit (

X_train ،

y_train ،

العهود = n_epochs ،

Validation_data = (X_valid، y_valid)

)

st.success ("اكتمال تدريب النموذج!")

"" "

## أداء النموذج

"" "

مع st.echo ():

st.line_chart (pd.DataFrame (history.history))

"" "

## تقييم النموذج على مجموعة الاختبار

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

"" "

مع st.echo ():

التقييم = تقييم النموذج (X_test ، y_test)

تقييم

"" "

> هذه الخسارة في مجموعة الاختبار أسوأ قليلاً من تلك الموجودة في مجموعة التحقق ، وهو ما هو متوقع ، حيث لم يشاهد النموذج الصور من مجموعة الاختبار.

"" "

"" "

## التنبؤات باستخدام النموذج

"" "

مع st.echo ():

X_new = X_test [: 3]

تنبؤات = model.predict (X_new)

"" "

### التوقعات

"" "

تنبؤات

"" "

### الحقيقة الأرضية

"" "

y_test [: 3]

هذا كان! فقط بضعة أسطر من التعليمات البرمجية الإضافية وقد قمت بالفعل بإنشاء تطبيق ويب رائع يبدو جميلًا ويحتوي على محتوى ديناميكي أيضًا. لم يكن الأمر بهذه الصعوبة ، أليس كذلك؟ حاول بناء مشاريع مختلفة واستخدام وظائف أخرى من Streamlit من وثائقهم. إنه سهل للغاية وبديهي.

قراءة: تعلم الآلة باستخدام بايثون

نشر تطبيق الويب Streamlit

يمكن نشر تطبيقات الويب Streamlit للاستخدام المباشر من خلال الخيارات المختلفة المتاحة على الإنترنت. يمكننا أن نراجعها بإيجاز ونرى كيف يمكن القيام بذلك.

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

إذا تم تحميل الكود الخاص بك على مستودعات GitHub الخاصة بك ، فيمكنك ببساطة اختيار المستودع من لوحة معلومات Streamlit وسيستضيفه تلقائيًا نيابة عنك. إنه مذهل جدًا وخالٍ تمامًا حتى الآن. لم تكن هناك طريقة أسهل من قبل لنشر تطبيقات الويب للتعلم الآلي.

Heroku هي طريقة أخرى جيدة لنشر تطبيق الويب Streamlit. بهذه الطريقة لن تضطر إلى اختيار أي خوادم سحابية ثم إعداد مثيلات افتراضية فيها. يتم الاهتمام بكل شيء من قبل Heroku.

هناك عيب واحد بسيط في Heroku وهو أن نسخته المجانية لن تسمح لك بالحصول على جميع الحزم التي يزيد حجمها عن 512 ميجا بايت في إصدار مجاني. TensorFlow 2.2.0 الذي استخدمته للمشروع أكبر قليلاً من المساحة المحددة لذلك كان علي استخدام خدمات أخرى.

تعد AWS (Amazon Web Services) أيضًا طريقة رائعة لنشر تطبيقات Streamlit الخاصة بك. إنه معقد بعض الشيء بالنسبة للمبتدئين ولكن مع استخدامه ، يصبح من الأسهل إعداده. أنها توفر مثيلات EC2 مجانية للمستخدمين الجدد. يمكنك تشغيل واحد مع Ubuntu 18.04 أو أعلى وتثبيت جميع التبعيات المطلوبة للتطبيق.

بعد إعداد كل شيء ، يمكنك تشغيل التطبيق باستخدام الأمر - streamlit run filename.py. هنا ، ستحصل على عنوان URL عام يمكن مشاركته مع الجميع. أحد العوائق الرئيسية هنا هو أن التطبيق غير متاح عبر الإنترنت إذا قمت بإغلاق المثيل. لذلك سيكون للمثيل المجاني بعض القيود.

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

إذا كان Streamlit متاحًا على النظام ولديك رابط ملف python لتطبيق Streamlit ، فيمكنك تشغيل تطبيق الويب ببساطة عن طريق تنفيذ الأمر: streamlit run url . يمكنك التحقق من تطبيقي محليًا إذا قمت بتثبيت Streamlit. استخدم الأمر التالي في محطاتك:

تشغيل بث مباشر https://raw.githubusercontent.com/tejasmorkar/housing_price_prediction_aws/master/CaliforniaHousingPrices.py

خاتمة

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

الشيء الوحيد الذي يجعل هذا الإطار سهل التنفيذ هو التوثيق الرسمي. كل ما هو مكتوب في المستندات دقيق وواضح. أقترح عليك مراجعة المستندات مرة واحدة ومحاولة تنفيذ مشروع جديد. إنها أفضل طريقة للبدء في أي أطر عمل جديدة. ابحث عن وثائق Streamlit الرسمية على الرابط التالي - https://docs.streamlit.io/en/stable/ target = ”_ blank” rel = ”nofollow” .

المجتمع هو دائمًا أفضل مورد لتعلم الأشياء وإيجاد مشكلة في حلولنا. يحتوي Streamlit على منتدى مناقشة رائع حيث يمكنك نشر أي أسئلة بخصوص عملية تطوير تطبيق Streamlit وأي شكوك تتعلق بالنشر وطلبات الميزات وتقارير الأخطاء وأي شيء آخر قد يساعدك في بناء تطبيقك بنجاح. انضم إلى منتدى المناقشة على الرابط التالي - https://discuss.streamlit.io/

إذا كنت مهتمًا بمعرفة المزيد حول التعلم الآلي ، فراجع دبلوم PG في IIIT-B & upGrad في التعلم الآلي والذكاء الاصطناعي المصمم للمهنيين العاملين ويقدم أكثر من 450 ساعة من التدريب الصارم ، وأكثر من 30 دراسة حالة ومهمة ، IIIT- حالة الخريجين B ، أكثر من 5 مشاريع تتويجا عملية ومساعدة وظيفية مع أفضل الشركات.

ما هي أكبر صعوبة في نشر مشروع التعلم الآلي؟

تتمثل أكبر صعوبة في نشر مشروع التعلم الآلي في عدم اكتمال جمع البيانات. في معظم الأوقات لا يكون الوقت والمال كافيين لجمع كل البيانات اللازمة للحصول على تحليل دقيق. لذلك ، يجب أن تكون البيانات التي يتم جمعها موثوقة وذات نوعية جيدة. بالإضافة إلى ذلك ، يجب اختيار البيانات الصحيحة. اختيار البيانات هو المفتاح لنشر المشروع.

ما هو Streamlit في التعلم الآلي؟

Streamlit هي خوارزمية تدريجية للتعلم الآلي. إنه يستغل حقيقة أن مساحة البحث للشبكات العصبية كبيرة جدًا وأن التدريب سريع ، وبالتالي لا يحتاج إلى البحث في المساحة بأكملها ، ولكن يمكنه بناء شبكة عصبية محليًا. StreamLit هو شكل من أشكال الذاكرة طويلة المدى المستخدمة لمعالجة البيانات المتسلسلة. إنها خوارزمية التعلم العميق التي تستخدم RNNs لتشفير البيانات إلى ناقلات من الأرقام. يمكن استخدام هذه المتجهات لتمثيل البيانات في الرسوم البيانية أو النص. يمكن استخدامه أيضًا لإنشاء نص بلغة طبيعية.

كيف يمكنني النشر باستخدام Streamlit؟

يعد النشر باستخدام Streamlit أمرًا بسيطًا. أولاً ، يجب أن يكون لديك حساب Streamlit. ثانيًا ، أنت بحاجة إلى برنامج يمكنه النشر. على سبيل المثال ، Beanstalk أو S3 أو rsync. ثالثًا ، تحتاج إلى إعداد برنامجك للنشر. انسخ تطبيقك إلى خادم الويب الخاص بك باستخدام rsync. إذا كنت تنشر موقعًا جديدًا ، فإن موقع الويب هو الدليل الذي نسخته. إذا كنت تنشر موقعًا إلكترونيًا موجودًا ، فإن موقع الويب الذي تم تحميله هو الدليل الذي نسخته. على الجانب الأيسر من الشاشة أسفل ملف