كيفية حفظ مشروع machine learning واستخدمه في المشاريع
في هذة المقالة سوف نتعرف على كيفية معرفة نسبة نجاح الداتا سيت وايضا كيف نستطيع تحسينها وايضا سنططرق معكم بعدها الى كيفية حفظ مشاريع تعليم الالة وكيف نستخدمه في اختبارتنا وايضا في الدروس المقبلة سوف ننتقل معكم الى دروس اكثر تعمق في machine learning و deep learning وهذة العلوم من اكثر العلوم طلبا في سوق العمل واصبحت العديد من الشركات تهتم بمبرمجي بايثون وتفضل التعامل معه لانها يتميز في كثير من الجوانب عن غيره .
يايثون او لغة الثعبان كما يطلق عليها واحده من اهم لغات البرمجه التي يجب على كل مبرمج معرفتها وذلك بسبب سهولتها ولدعمها للمطورين بشكل كبير وتسهل عليهم القيام بالعديد من ال functions المختلفه وتوفر الكثير من الوقت عليهم وايضا python تدخل في تعليم الاله وهذا من اكثر التي اصبحت مطلوبه في يومنا هذا والاقبال عليها كبير جدا .
يتمتع مبرمج python بإمكانية تطوير برمجيات سطح المكتب وتطبيقات الهواتف الذكية وايضا يمكنك عمل apis لانك تستطيع ان تقوم باعمال ال backend ، اليست كل تلك المميزات تجعلك ترغب بالبدء فيها ؟ ومحن نشرح لك كل شيئ فيها تقريبا حتى ال machine learning نشرحه لك وكل ذلك بالمجان .
كيفية معرفة نسبة dataset للmodel في python وتفاصيل عنه
في طبيعة الحال بعد الانتهاء من model معين في machine learning وتريد معرفة نسبة نجاح هذا النموذج وهل يصلح ام لا وماهي البيانات الي نحتاجها ولا نحتاجها في المشروع , هنا سوف نحتاج الى عمل remove لاي بيانات غير صالحه وذلك عن طريق ازالة how="any" وبعدها نستخدم مكتبة sklearn لكي نتاكد من نسبة نجاح النموذج وذلك عن عمل تدريب للاسالة والاجابات الخاصة بالنموذج عن طريق x_train و y_train والاجابات في x_test و y_test بعدها نكتب المكتبة ونعطية قيمة x , y وبعدها نسبة البيانات التي نريد عمل بها تجربة ومن ثم نقوم باختيار عدد من الاسالة عشوائي واخيرا الامر shuffle لكي يقوم بجلب بيانات عشوائية .
قمنا بطباعة x و y للقيم وبعدها طبعنا x_train.head للجدول وبعدها قمنا بعمل fit لتدريب الاساله والاجابات على النموذج وبعدها لكي نخرج النتيجة لدنيا طريقتين الاولى accuracy ولكن يجب قبلها يجب ان نضع اجابات x بداخل y_per وهذا متغير والطريقة الاخرى والتي استخدمها والمعظم يفصلها وهي عمل score مباشرة وهنا لن تحتاج الى اي خطوة قبلها .
import pandas as pd
from sklearn.svm import SVC
import numpy as np
from sklearn.metrics import accuracy_score
from sklearn.model_selection import train_test_split
# load file data
data = pd.read_csv("/content/heart_attack_dataset.csv")
# remove
data_new = data.drop("Unnamed: 0" , axis=1 , inplace=True)
# delete any missing value .
data.dropna(how="any", inplace=True)
data = data.astype({"age":np.uint8})
# value of old data = value of data .map (replace) male to 1 , female to 0
data["sex"] = data["sex"].map({"male":1 , "female":0})
data["target"] = data["target"].map({"yes":1 , "no":0})
X = data.drop("target",axis=1)
Y = data["target"]
# Future of data , data + y (drop column) + test (100% , test with 20% from data) + random data + shuffle
# X_train = questions , y_train = solve | X_test = questions of 20% from data , y_test = solve
X_train , X_test , y_train , y_test = train_test_split( X , Y, test_size=0.2 , random_state=42 , shuffle = True)
print(" *** Result testing *** ")
print(X_train.shape , X_test.shape , data.shape)
print(" *** X_train Table *** ")
print(X_train.head())
# Teaching the model ------------
clt = SVC()
print(" *** data training *** ")
print(clt.fit(X_train,y_train))
print(" *** Result Teaching *** ")
y_per = clt.predict(X_test)
print(accuracy_score(y_per , y_test))
# last 2 steps you can replace by one line.
print(clt.score(X_test , y_test))
كيفية تحسين اداء النموذج في تعليم الالة python
لو نلاحظ ان النتيجة السابقة كانت 64% وهذة نسبة تعتبر سيئة لذلك يوجد طريقة تساعدنا على تحسين هذة المشكلة , سوف نحتاج الى مكتبة skrearn مره اخرى ونجلب منها كلاس svm وبعدها Import وتعني نريد svc methode التي بداخلها , بعدها سوف نستخدم kernal ونقوم بكتابة الامر linear وبعدها قيمة C وهذة القيمة التي سوف تتغير باستمرار لكي نحصل على افضل نتيجة جرب 1 ثم 2 ثم 3 وهكذا الى ان تصل الى افضل نسبة وافضل نسبة وصلنا اليها كانت 91% وهذة جيده جدا , اذا كانت النسبة اعلى من 85% يكون نموذج صالح للاستخدام وكلما تعلو النسبة يكون افضل طبعا .
import pandas as pd
from sklearn.svm import SVC
import numpy as np
from sklearn.model_selection import train_test_split
data = pd.read_csv("heart_attack_dataset.csv")
data_new = data.drop("Unnamed: 0" , axis=1 , inplace=True)
data.dropna(how="any", inplace=True)
data = data.astype({"age":np.uint8})
data["sex"] = data["sex"].map({"male":1 , "female":0})
data["target"] = data["target"].map({"yes":1 , "no":0})
X = data.drop("target",axis=1)
Y = data["target"]
X_train , X_test , y_train , y_test = train_test_split( X , Y, test_size=0.2 , random_state=40 , shuffle = True)
# Form improvement
# replace C=2 to best value 1, 2 ,3 ..... etc
clt = SVC(kernel="linear" , C=2)
clt.fit(X_train,y_train)
print(clt.score(X_train , y_train))
print(clt.score(X_test , y_test))
كيفية حفظ مشروع machine learning على جهاز الكمبيوتر بعد الانتهاء
سوف نحتاج هنا الى مكتبة pickle وهي واحده من المكتبات التي تحل لنا ورطه كبيره وتحفظ لنا المشروع الذي قمنا به في python وسوف نحتاج الى استخدام الامر dump منها ونمرر له البيانات وبعدها نكتب open ونكتب اسم الملف الذي نريد استخراجه به ومن ثم model وهي الصيغة او اي صيغة اخرى تريدها وبعدها الامر wb وهي للكتابة بالبينري وبعدها نضغط على الامر run لكي يتم حفظها في الجهاز وتحديدا في ملف العمل الذي نعمل عليه .
import pandas as pd
from sklearn.svm import SVC
import numpy as np
from sklearn.model_selection import train_test_split
import pickle
data = pd.read_csv("heart_attack_dataset.csv")
data_new = data.drop("Unnamed: 0" , axis=1 , inplace=True)
data.dropna(how="any", inplace=True)
data = data.astype({"age":np.uint8})
data["sex"] = data["sex"].map({"male":1 , "female":0})
data["target"] = data["target"].map({"yes":1 , "no":0})
X = data.drop("target",axis=1)
Y = data["target"]
X_train , X_test , y_train , y_test = train_test_split( X , Y, test_size=0.2 , random_state=40 , shuffle = True)
# Form improvement
# replace C=2 to best value 1, 2 ,3 ..... etc
clt = SVC(kernel="linear" , C=2)
clt.fit(X_train,y_train)
print(clt.score(X_train , y_train))
print(clt.score(X_test , y_test))
pickle.dump(clt , open("hard.model" , "wb"))
كيفية استخدام dataset بعد استخراجها في python
بعد اخر عملية قمنا به وهي استخراج الdataset بعد تدريب النموذج عليها الان سوف نحتاج الى مكتبة pickle وهنا تستخدم الامر load ونكتب مسار ال project وبعدها rb وبعدها نكتب القيم التي نريد اعطائها في النموذج وتمرير البيانات في predict وفي النهاية نقوم بطباعة النتائج وتستطيع تدريب اكثر من عملية واذا كانت النتيجة 1 يعني نعم واذا كانت 0 يعني لا بمعنى نريد ادخال بيانات لشخص لمعرفة هل لديه اي مرض مزمن او لا ومن خلال البيانات سوف نعرف هل لديه مرض ام لا .
import pickle
# read data from file
model = pickle.load(open("hard.model" , "rb"))
# enter data .
feature1 = [63 , 1 , 3.0 , 145 , 233 , 1, 0 , 150 , 0 , 2.3 , 0 , 0 , 1]
feature2 = [63 , 1 , 3.0 , 145 , 233 , 1, 0 , 150 , 0 , 2.8 , 0 , 0 , 1]
# between array [] enter variable data .
result = model.predict([feature1 , feature2])
print(result)
استخدام نموذج dataset داخل google colab .
بعد كتابة الكود الخاص بك يمكنك استخدام الاسطر التالية لتجريبة النموذج بدون استخراجه او تحميله لان قد تواجه مشكلة في الكود السابق .
feature1 = [63 , 1 , 3.0 , 145 , 233 , 1, 0 , 150 , 0 , 2.3 , 0 , 0 , 1]
result = clt.predict([feature1])
result