المزيد من مقالات التعلم العميق......المزيد من مقالات تعلم الآلة.....مقالات التعلم العميقمقالات تعلم الآلة

حفظ وتحميل نماذج التعلم الآلي في بايثون باستخدام scikit-Learn

اقرأ في هذا المقال
  • حفظ النموذج الخاص بك مع pickle
  • حفظ النموذج الخاص بك مع Joblib
  • نصائح لحفظ النموذج الخاص بك
  • الملخص

إن العثور على نموذج تعلم آلي دقيق ليس نهاية المشروع.

في هذا المنشور، سوف تكتشف كيفية حفظ وتحميل نموذج التعلم الآلي الخاص بك في بايثون باستخدام scikit-Learn.

يسمح لك هذا بحفظ النموذج الخاص بك في ملف وتحميله لاحقًا لعمل تنبؤات.

ينقسم هذا البرنامج التعليمي إلى 3 أجزاء:

  1. حفظ النموذج الخاص بك مع pickle.
  2. حفظ النموذج الخاص بك مع Joblib
  3. نصائح لحفظ النموذج الخاص بك.

حفظ النموذج الخاص بك مع pickle

Pickle هي الطريقة القياسية لتسلسل serialize الكائنات في بايثون.

يمكنك استخدام عملية pickle لإجراء تسلسل لخوارزميات التعلم الآلي وحفظ التنسيق المتسلسل في ملف.

يمكنك لاحقًا تحميل هذا الملف لإلغاء تسلسل deserialize نموذجك واستخدامه لعمل تنبؤات جديدة.

يوضح المثال أدناه كيف يمكنك تدريب نموذج الانحدار اللوجستي logistic regression على بداية مجموعة بيانات مرض السكري في Pima Indians ، وحفظ النموذج في ملف وتحميله لعمل تنبؤات على مجموعة الاختبار غير المرئية (التنزيل من هنا).

# Save Model Using Pickle
import pandas
from sklearn import model_selection
from sklearn.linear_model import LogisticRegression
import pickle
url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/pima-indians-diabetes.data.csv"
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
dataframe = pandas.read_csv(url, names=names)
array = dataframe.values
X = array[:,0:8]
Y = array[:,8]
test_size = 0.33
seed = 7
X_train, X_test, Y_train, Y_test = model_selection.train_test_split(X, Y, test_size=test_size, random_state=seed)
# Fit the model on training set
model = LogisticRegression()
model.fit(X_train, Y_train)
# save the model to disk
filename = 'finalized_model.sav'
pickle.dump(model, open(filename, 'wb'))

# some time later...

# load the model from disk
loaded_model = pickle.load(open(filename, 'rb'))
result = loaded_model.score(X_test, Y_test)
print(result)

يؤدي تشغيل المثال إلى حفظ النموذج في finalized_model.sav في دليل العمل المحلي الخاص بك.

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

قم بتحميل النموذج المحفوظ وتقييمه يوفر تقديرًا لدقة النموذج على البيانات غير المرئية.

0.755905511811

حفظ النموذج الخاص بك مع Joblib

Joblib هو جزء من نظام SciPy البيئي ويوفر أدوات مساعدة لدوال خطوط الأنابيب في بايثون.

يوفر أدوات مساعدة لحفظ وتحميل كائنات بايثون التي تستخدم هياكل بيانات NumPy بكفاءة.

يمكن أن يكون هذا مفيدًا لبعض خوارزميات التعلم الآلي التي تتطلب الكثير من المعلمات أو تخزن مجموعة البيانات بأكملها (مثل K-Nearest Neighbours).

يوضح المثال أدناه كيف يمكنك تدريب نموذج الانحدار اللوجستي على بداية مجموعة بيانات مرض السكري Pima Indians، وحفظ النموذج في ملف باستخدام Joblib وتحميله لعمل تنبؤات على مجموعة الاختبار غير المرئية.

# Save Model Using joblib
import pandas
from sklearn import model_selection
from sklearn.linear_model import LogisticRegression
import joblib
url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/pima-indians-diabetes.data.csv"
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
dataframe = pandas.read_csv(url, names=names)
array = dataframe.values
X = array[:,0:8]
Y = array[:,8]
test_size = 0.33
seed = 7
X_train, X_test, Y_train, Y_test = model_selection.train_test_split(X, Y, test_size=test_size, random_state=seed)
# Fit the model on training set
model = LogisticRegression()
model.fit(X_train, Y_train)
# save the model to disk
filename = 'finalized_model.sav'
joblib.dump(model, filename)

# some time later...

# load the model from disk
loaded_model = joblib.load(filename)
result = loaded_model.score(X_test, Y_test)
print(result)

يؤدي تشغيل المثال إلى حفظ النموذج في ملف كـ finalized_model.sav وأيضًا إنشاء ملف واحد لكل مصفوفة NumPy في النموذج (أربعة ملفات إضافية).

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

بعد تحميل النموذج، يتم الإبلاغ عن تقدير دقة النموذج على البيانات غير المرئية.

 

نصائح لحفظ النموذج الخاص بك

يسرد هذا القسم بعض الاعتبارات المهمة عند الانتهاء من نماذج التعلم الآلي الخاصة بك.

  • نسخة بايثون Python Version. لاحظ نسخة بايثون. من شبه المؤكد أنك تحتاج إلى نفس الإصدار الرئيسي (وربما الثانوي) من بايثون المستخدم في إجراء تسلسل للنموذج عند تحميله لاحقًا وإلغاء تسلسله.
  • إصدارات المكتبة Library Versions. من شبه المؤكد أن يكون إصدار جميع المكتبات الرئيسية المستخدمة في مشروع التعلم الآلي الخاص بك هو نفسه عند إلغاء تسلسل نموذج محفوظ. لا يقتصر هذا على إصدار NumPy وإصدار scikit-Learn.
  • التسلسل اليدوي Manual Serialization. قد ترغب في إخراج معلمات النموذج الذي تعلمته يدويًا بحيث يمكنك استخدامها مباشرة في scikit-learn أو في نظام أساسي آخر في المستقبل. غالبًا ما تكون الخوارزميات التي تستخدمها خوارزميات التعلم الآلي لعمل تنبؤات أبسط بكثير من تلك المستخدمة لتعلم المعلمات، وقد يكون من السهل تنفيذها في التعليمات البرمجية المخصصة التي يمكنك التحكم فيها.

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

الملخص

اكتشفت في هذا المنشور كيفية استمرار خوارزميات التعلم الآلي الخاصة بك في بايثون باستخدام scikit-Learn.

لقد تعلمت طريقتين يمكنك استخدامهما:

  • واجهة برمجة تطبيقات Pickle لتسلسل كائنات بايثون القياسية.
  • واجهة برمجة تطبيقات joblib لتسلسل كائنات بايثون بكفاءة باستخدام مصفوفات NumPy.
بواسطة
Jason Brownlee
المصدر
Save and Load Machine Learning Models in Python with scikit-learn

د. علاء طعيمة

كلية علوم الحاسوب وتكنولوجيا المعلومات / جامعة القادسية / العراق

مقالات ذات صلة

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

زر الذهاب إلى الأعلى