شرح التعامل مع dataset job باستخدام machine learning python

شرح التعامل مع dataset job باستخدام machine learning python

شرح التعامل مع dataset job باستخدام machine learning python

شرحنا لكم في البداية كورس بسيط حول لغة python وكيف نستعملها وكل شيئ فيها تقريبا وانتقلنا بعدها معكم الى استخدام مكتبات البايثون وشرحنا لكم الكثير من المكتبات الرائعه والتي تستخدم بكثرة ومن اشهر المكتاب المستخدمة pandas و numpy وشرحناها لكم وشرحنا لكم الكثير من المكتبات ببايثون يمكنكم الرجوع اليها وانتقلنا بعدها معكم الى تعليم الالة وشرحنا لكم في اول درس كيفية معرفة هل يوجد مرض مزمن للمريض ام لا والتعامل مع بيانات المرضى بشكل عام .


يايثون او لغة الثعبان كما يطلق عليها واحده من اهم لغات البرمجه التي يجب على كل مبرمج معرفتها وذلك بسبب سهولتها ولدعمها للمطورين بشكل كبير وتسهل عليهم القيام بالعديد من ال functions المختلفه وتوفر الكثير من الوقت عليهم وايضا python تدخل في تعليم الاله وهذا من اكثر التي اصبحت مطلوبه في يومنا هذا والاقبال عليها كبير جدا .


يتمتع مبرمج python بإمكانية تطوير برمجيات سطح المكتب وتطبيقات الهواتف الذكية وايضا يمكنك عمل apis لانك تستطيع ان تقوم باعمال ال backend ، اليست كل تلك المميزات تجعلك ترغب بالبدء فيها ؟ ومحن نشرح لك كل شيئ فيها تقريبا حتى ال machine learning نشرحه لك وكل ذلك بالمجان .


قراءة بيانات الdataset وماهي المكتبات اللازمه في تعليم الاله .

في الصورة التالية استخدمنا اشهر المكتبات والتي نستخدمها في اي مشروع نقوم به نحتاج فيه الى تعليم الاله وقد سبق وشرحناها لكم في المقالة السابقة بشكل مفصل اكثر 


قراءة بيانات الdataset وماهي المكتبات اللازمه في تعليم الاله .

كيفية عرض بيانات column معين و العناصر الفريده التي بداخلة ببايثون


كيفية عرض بيانات column معين و العناصر الفريده التي بداخلة ببايثون

نحتاج اولا الى قراءة محتويات الملف csv بشكل كامل اولا وبعد ذلك نطبعها لنتعرف عليها ثم  نقوم بكتابة اسم العمود الذي نستهدفه ثم ننتقل بعد ذلك الى عمل unique للعمود لكي نطبع العناصر الفريدة التي بداخله والمقصود هنا ان نطبع العنصر مره واحده فقط بمعنى لو يحتوي على اسم life خمس مرات واسم other ثلاث مرات سوف يطبع مرتين الاول life و الثاني other فقط , بعد ذلك سوف نستخدم الامر sort لكي يتم ترتيب العناصر . 


import pandas as pd
from sklearn.svm import SVC
import numpy as np
import seaborn as sns 
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt
import pickle
np.random.seed(42)

df = pd.read_csv("sample.csv")
print(df.head())

print(df["EducationField"])

print("*"*25 , "Sorting unique from Data " , "*"*25)
l = list(df["EducationField"].unique())
l.sort()
print(l)


تحويل جميع محتويات column من string الى integer ببايثون


تحويل جميع محتويات column من string الى integer ببايثون

اي dataset تاتي لك بشكل نصوص يجب ان تحولها الى ارقام لكي تستطيع تدريب الmodel الخاص بك عليها بشكل جيد يمكنك استخدام map للتحويل ولكن هنا يتعامل بkey و value ولذلك لن نستخدمها بما انه لدينا اكثر من جملة string وسوف نستخدم الامر lableencoder ليتم تحويل جميع العناصر النصية الى رقيمة ونستطيع اداخلها الى النموذج الخاص بنا وتدريبها بشكل جيد .


import pandas as pd
from sklearn.svm import SVC
import numpy as np
import seaborn as sns 
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import LabelEncoder
import matplotlib.pyplot as plt
import pickle
np.random.seed(42)

df = pd.read_csv( "sample.csv" , usecols=["EducationField"])
df.dropna(how="any", inplace=True)

l = list(df["EducationField"].unique())
l.sort()

eduation_le = LabelEncoder()
transformed = eduation_le.fit_transform(list(df["EducationField"]))
df["EducationField"] = transformed
print(df.head(10))


طباعة المتحويات الفارغه ومعرفة الاعمده و ازالة بعض الاعمده من الجدول csv


طباعة المتحويات الفارغه ومعرفة الاعمده و ازالة بعض الاعمده من الجدول csv

نستخدم الامر isna.sum لمعرفة العناصر الفارغه في الجدول ونستخدم الامر columns لكي نطبع الاعمده الموجوه في الجدول واخيرا الامر drop لكي نقوم بإزالة الcolumns التي لا نحتاجها والتي لا تؤثر علينا في البيانات سواء بوجودها او بدونها تتم العملية لذلك نقوم بإزالتها لكي نسرع من اداء عمل النموذج الذي نعمل عليه , بعد ذلك قمنا بتحويل الاعمده التي كانت تحتوي على string الى numbers كما قمنا به سابقا في الخطوة السابقة لهذة وفي النهاية طبعنا محتويات الجدول الجديدة .



from numpy.lib.arraysetops import union1d
import pandas as pd
from sklearn.svm import SVC
import numpy as np
import seaborn as sns 
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import LabelEncoder
import matplotlib.pyplot as plt
import pickle
np.random.seed(42)

df = pd.read_csv( "sample.csv" )
l = df["EducationField"].unique()
l.sort()

# Convert all items to numbers
eduation_le = LabelEncoder()
transformed = eduation_le.fit_transform(list(df["EducationField"]))
df["EducationField"] = transformed

print(eduation_le.transform(['Human Resources']))  # To find out the number of a specific item
print(df["BusinessTravel"].unique())               # print BusinessTravel unique .
print(df.isna().sum())                             # print non data in data .
print(df.columns)                                  # print all columns .
df.drop(['Over18','EmployeeCount','StandardHours', 'EmployeeNumber', 'YearsSinceLastPromotion'],axis=1 , inplace=True)  # Drop data .

att = LabelEncoder()
transformed = att.fit_transform(list(df["Attrition"]))
df["Attrition"] = transformed

over_t = LabelEncoder()
transformed = over_t.fit_transform(list(df["OverTime"]))
df["OverTime"] = transformed

dep = LabelEncoder()
transformed = dep.fit_transform(list(df["Department"]))
df["Department"] = transformed

busnises_tr = LabelEncoder()
transformed = busnises_tr.fit_transform(list(df["BusinessTravel"]))
df["BusinessTravel"] = transformed

marital_st = LabelEncoder()
transformed = marital_st.fit_transform(list(df["MaritalStatus"]))
df["MaritalStatus"] = transformed

jon_rl = LabelEncoder()
transformed = jon_rl.fit_transform(list(df["JobRole"]))
df["JobRole"] = transformed

df["Gender"] = df["Gender"].map({'Female':1 , 'Male':0})

print(df.head())


طباعة graph table للdataset في python


طباعة graph table للdataset في python

وصلنا الى النقطة التي تحتاج منا الى طباعة رسمة جدول يحتوي على تفاصيل البيانات من الdataset لذلك سوف نقوم باضافة السطرين التاليين اسفل الكود السابق ليتم بعد ذلك طباعة محتويات الجدول على شكل رسمة ولكن يجب ان تكون تستخدم google colab وقد سبق وشرحنا لكم ماهو google colab وفيما يستخدم تحديدا , قم باضافة السطريين التاليين اسفل الاكواد السابقة ليتم بعد ذلك طباعة الجدول كما يظهر على النحو التالي .


plt.figure(figsize=(16,12))
sns.heatmap(df.corr() ,annot=True)


كيفية تدريب الmodel الخاص بك بعد الانتهاء من dataset وطباعة report

كيفية تدريب الmodel الخاص بك بعد الانتهاء من dataset وطباعة report

بعد ان تنتهي من الdataset الخاص بك ياتي دور تدريب النموذج لكي تعرف نسبة النجاح و الفشل وقد سبق وشرحنا لكم هذا من قبل في المقالة السابقة , اولا حدد العمود الذي نريد استهدافة وقم بعمل له pop وبعدها تدريب للبيانات ومن ثم ترسل البيانات وترسل العمود الذي تستهدفه وكمية البيانات التي تريد تدريبها ومن ثم تخبره بان يختبر البيانات بشكل  عشوائي , بعدها نقوم بعمل score للبيانات ومن ثم نعرف بيانات الtrain و test والبيانات الاعلى نقوم بعملها في redict ونقوم بعمل target_name بالاسم yes , no ونطبع النتائج , لو نلاحظ ان نسبة الفشل 87% ولا يوجد نسبة للنجاح وهذا يعني ان هذا النموذج لا يصلح للاستخدام لان جميع الاجابات ستكون بي no .


import pandas as pd
from sklearn.svm import SVC
import numpy as np
import seaborn as sns 
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import LabelEncoder
from sklearn.metrics import classification_report
import matplotlib.pyplot as plt
import pickle
np.random.seed(42)

df = pd.read_csv( "sample.csv" )
l = df["EducationField"].unique()
l.sort()

# Convert all items to numbers
eduation_le = LabelEncoder()
transformed = eduation_le.fit_transform(list(df["EducationField"]))
df["EducationField"] = transformed

print(eduation_le.transform(['Human Resources']))  # To find out the number of a specific item
print(df["BusinessTravel"].unique())               # print BusinessTravel unique .
print(df.isna().sum())                             # print non data in data .
print(df.columns)                                  # print all columns .
df.drop(['Over18','EmployeeCount','StandardHours', 'EmployeeNumber', 'YearsSinceLastPromotion'],axis=1 , inplace=True)  # Drop data .

# Convert all items to numbers

att = LabelEncoder()
transformed = att.fit_transform(list(df["Attrition"]))  
df["Attrition"] = transformed

over_t = LabelEncoder()
transformed = over_t.fit_transform(list(df["OverTime"]))
df["OverTime"] = transformed

dep = LabelEncoder()
transformed = dep.fit_transform(list(df["Department"]))
df["Department"] = transformed

busnises_tr = LabelEncoder()
transformed = busnises_tr.fit_transform(list(df["BusinessTravel"]))
df["BusinessTravel"] = transformed

marital_st = LabelEncoder()
transformed = marital_st.fit_transform(list(df["MaritalStatus"]))
df["MaritalStatus"] = transformed

jon_rl = LabelEncoder()
transformed = jon_rl.fit_transform(list(df["JobRole"]))
df["JobRole"] = transformed

df["Gender"] = df["Gender"].map({'Female':1 , 'Male':0})

target = df.pop("Attrition")          # target column
x_train,x_test,y_train,y_test = train_test_split(df,target,test_size = 0.2 , random_state = 42 , shuffle = True) # Training
print(x_train.shape , x_test.shape , df.shape)     # print shape .

clf = SVC()
clf.fit(x_train, y_train)
print(clf.score(x_train, y_train))
print(clf.score(x_test, y_test))

y_pred = clf.predict(x_test)
print(classification_report(y_test, y_pred , target_names=["NO" , "YES"]))   # print report ( NO , YES )


تحسين نسبة model في الmachine learning


تحسين نسبة model في الmachine learning

في الدروس السابقة استخدمنا kernal لنحسن من نسبة النموذج وهنا سوف نستخدم نفس الطريقة ولكن سوف نستخدم معها linear و rbf و c ستكون من 1 الى 10 ونقوم بعمل اختبار خمس مرات بالنسبة لل verbose استخدمنا الرقم 3  يمكنك استخدام اي من الارقام التالية [1,2,3] لكي يظهر لنا كل التفاصيل حول ما يقوم به في النموذج والان بعد عمل run للنموذج سوف تلاحظ انه يقوم بالاختبار والتبديل بين المتغيرات ويظهر لك نسبة الscore اتركه الى ان ينتهي لكي تعرف ماهي اعلى نسبة score حصلت عليها .

from sklearn.model_selection import GridSearchCV


parameters = {'kernel':['linear' , 'rbf'],'C':[1,10]}
clf = SVC()
grid = GridSearchCV(clf, parameters, cv = 5 , verbose = 3)
print("--"*20)
print(grid.fit(df,target))


في النهاية نتمنى ان تكون المقالة نالت على اعجابكم وتكون واضحه بالنسبة لكم ولمزيد من المقالات في الذكاء الاصطناعي وتعليم الاله يمنكم متابعة المقالات السابقة

تحميل model jobs

تعليقات