تحليل dataset سفينة تايتنك عن طريق تعليم الالة والوصول الى افضل النتائج ببايثون

تحليل dataset سفينة تايتنك عن طريق تعليم الالة والوصول الى افضل النتائج ببايثون

تحليل dataset سفينة تايتنك عن طريق تعليم الالة والوصول الى افضل النتائج ببايثون

في هذا المقال سوف نحاول معكم تحليل البيانات الخاصة بسفية تايتنك وهي السفينة العملاقة التي غرقت في المياه منذ مده كبيره والاغلب ان لم يكن الجميع يعرفها تقريبا , واليوم سوف نحاول عمل تحليل للبيانات الخاصة بها ونعرف ماهي اكبر نسبة من الاعمار غرقت وماهي اكثر فئة في السفينة كانت نسبة الغرق بها عاليه ومن غرق اكثر هل الرجال ام النساء وكل هذة البيانات سوف نحاول تحليلها معكم ومعرفة كل هذة الاحتمالات في مقالة اليوم .


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


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


titanic_train database


معرفة البيانات المفقوده من سفينة تايتنك machine learning


معرفة البيانات المفقوده من سفينة تايتنك machine learning

سوف نقوم في البداية بكتابة المكتبات التي نحتاجها في اي dataset وهي pandas و numpy و matplotlib و pickle وبعدها نجعل random.seed لكي نشاهد نفس القيمة لدينا جميعا وبعدها نقوم بقراءة محتوى الملف عن طريق pd.read_csv وبعدها نقوم بطباعة الجدول الخاص بالبيانات ومن ثم نقوم بعمل shape لمعرفة عدد الcolumns و الrows لكي نعرف كمية البيانات التي لدينا وبعدها نستخدم المر isna لكي نعرف ماهي ال miss value او البيانات الnull التي لا تحتوي على اي بيانات وغير صالحه لكي نحل مشكلتها .


import pandas as pd
import numpy as np
import seaborn as sns 
import matplotlib.pyplot as plt
import pickle
np.random.seed(42)

df = pd.read_csv("titanic_train.csv")
print(df.head())
print(f"\nsheap is : {df.shape}\n ")
print(df.isna().sum())


معرفة اكثر البيانات الفارغه في اي dataset عن طريق graph

معرفة اكثر البيانات الفارغه في اي dataset عن طريق graph

في الكود السابق بعد عرض البيانات شاهدنا ان الاعمار cabin هي من اكثر البيانات المفقوده ووياليها مباشرة الاعمار لذلك سوف نقوم بعمل graph بسيط يوضح لنا البيانات الغير صالحة ولطباعة هذا الرسم البياني نستخدم مكتبة sns ويجب ان نستخدم google colab او jupyter لكي يعرض لنا الرسمة لان vscode لا يعرض الرسومات لنرى اكثر البيانات غير موجوده في شكل منظم كما يظهر بالصورة .


sns.heatmap(df.isna() , yticklabels=False , cbar=False)


معرفة الاشخاص الذين نجو والذين ماتوا في سفينة تايتنك python

معرفة الاشخاص الذين نجو والذين ماتوا في سفينة تايتنك python

كما نتذكر انه قد مات كثير من الاشخاص في حادثة تايتنك وبعد جمع البيانات الخاص بكل الذين صعدوا على السفينة نريد نحن كمبرمجين تحليل هذة البيانات لنعرف هل نسبة الذين نجوا اكبر ام نسبة الموتى اكثر افضل طريقة هي عمل رسمة تعرض لنا الشكل بصورة منطقية واكثر وضوحا من الارقام ولذلك سوف نستخدم مكتبة sns ومنها نستخدم الامر .countplot وبعدها نقوم بكتابة اسم العمود الذي نريد معرفة معدل القيم التي بداخله وهي كانت 0 للميت و 1 للحي وسوف نلاحظ من الرسمة ان نسبة الموتى اكثر من نسبة الذين نجوا مع الاسف .


sns.countplot(x="Survived",data=df)


معرفة اكثر الاجناس الذين نجو والذين ماتو في titanic

معرفة اكثر الاجناس الذين نجو والذين ماتو في titanic

في الكود السابق قمنا بالتعرف على ان نسبة الذين ماتوا كانت اكبر نريد الان تحليل الgender للاشخاص سواء الرجال ام النساء لو نلاحظ انه لدينا عمود باسم Sex وهو الذي يحتوي على الgender لذلك سوف نضيف على الرسمة الامر hue لنعرف النسبة الاكبر ولو نلاحظ من الرسمة انه كانت نسبة الذين ماتو من الرجال اكبر من النساء ( تحية لجميع الرجال الذين ضحوا بانفسهم من اجل النساء 😂😂  ) والنسبة في الذين نجوا كانت للنساء اكبر في طبيعة الحال .


sns.countplot(x="Survived",hue="Sex" ,data=df)


معرفة اكثر درجات السفينة خطر في غرق سفينة تايتنك datasetpython

معرفة اكثر درجات السفينة خطر في غرق سفينة تايتنك datasetpython

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


sns.countplot(x="Survived",hue="Pclass" ,data=df)


معرفة اعمار الاشخاص الذين صعدوا على سفينة تايتنك


معرفة اعمار الاشخاص الذين صعدوا على سفينة تايتنك

في هذا الجزء نريد ان نعرف اعمار الاشخاص الذين صعدوا على سفينة تايتنك لذلك لن نستخدم الرسمة السابقة لانها ليست الانسب بالنسبة لنا ولكن رسمة boxenplot هي الانسب في هذة الحالة لذلك سوف نقوم بإدخال العمود الخاص بالمرحلة ( الدرجه ) والذين كان باسم Pclass وايضا العمر لكي نعرف متوسط الاعمار في كل درجة ونستبدلهم بالاعمار الفارغه لو نلاحظ ان في الدرجة الاولى متوسط الاعمار كانت 37 تقريبا وفي الدرجة الثانيه 28 والاخيره كانت متوسط نسبة الاعمار بها 25 وهذا سوف يساعدنا في حل مشكلة الاعمار الnull .


plt.figure(figsize=(10,8))
sns.boxenplot(x="Pclass" , y="Age" , data=df)


استبدال قيم الdataset التي لا تحتوي على بيانات في بايثون


استبدال قيم الdataset التي لا تحتوي على بيانات في بايثون

في الخطوة السابقه حددنا القيم التي نريد استبدالها ولاحظنا ان القيم الnull مهمة ولا يمكن تدريب الmodel بدونها لذلك سوف نقوم بعمل def وهي عباره عن methode ونخبرة اذا كان العمر غير فارع اي يحتوي لا بيانات لا تقم باي عمليه عليه وقم بإرجاعه واذا كان nan سوف ينظر الى الدرجة التي بها الراكب واذا كان في اول درجة فغالبا عمره سيكون 37 واذا كان في الدرجة الثانية سيكون 29 والاخيره 25 والان قم بتمرير الdef الى الAge لكي يتم تطبيق الخوارزمية عليها .

import inspect
import pandas as pd
import numpy as np
import seaborn as sns 
import matplotlib.pyplot as plt
import pickle
np.random.seed(42)

df = pd.read_csv("titanic_train.csv")

def age_replace(cols):
    age = cols[0]
    lvl = cols[1]
    if not pd.isnull(age) :
        return age
    else :
        if lvl == 1 :
            return 37
        elif lvl ==2 :
            return 29
        else :
            return 25

df["Age"] = df[["Age" , "Pclass"]].apply(age_replace , axis=1)

df.dropna(how="any" ,axis=1 ,inplace=True)
list_drop = ["PassengerId" ,"Name" , "Ticket" , "Fare"]
df.drop(list_drop , axis=1 ,inplace=True)

print(df.head())


حذف البيانات الغير صالحه وازالة البيانات التي لا نحتاجها في titanic model

قبل اي شيئ يجب علينا التخلص من البيانات التي ليس لها اهميه لدينا وايضا البيانات الnull التي لا نحتاجها لذلك سوف نعرض الtable الخاص بالبيانات ونشاهد البيانات التي لا نحتاجها وبعدها سوف نقوم بوضعهم في array وبعدها نحذفهم وايضا قم بعمل dropna لازالة اي miss value وبعدها احذف البيانات التي لا تحتاجها .


تجربة اكثر من نموذج لايجاد افضل score في python


تجربة اكثر من نموذج لايجاد افضل score في python

بعد حذف البيانات التي لا تريدها نريد تدريب اكثر من model لمعرفة افضل score للdataset التي نعمل عليها وهذا يكون عن طريق مكتبة sklearn وجربنا بها نموذج LogisticRegression ونموذج GridSearchCV لكي نعرف ايهم افضل والنتجية في النهاية اعتقد واضحة جدا وايضا يتم استخدام الامر params لكي نعرف افضل اعدادات تستخدم لتحسين الmodel .


from sklearn.linear_model import LogisticRegression # use only , output data = 1 or 0 .
clf = LogisticRegression()
clf.fit(x_train , y_train)
print(clf.score(x_train , y_train))
print(clf.score(x_test , y_test))

from sklearn.svm import SVC
from sklearn.model_selection import GridSearchCV
grid = GridSearchCV(SVC() , {"kernel":['linear' , 'rbf'] , "C":[1,5,10], "gamma":[0.1 , 0.08 , 0.05] , "degree":[1,2,3]} , cv=5 , verbose=1)
print(grid.fit(df , target))
print(f" score : {grid.best_score_}")
print(f" params : {grid.best_params_}")


الى هنا تكون انتهت مقالة اليوم اتمنى ان تكون المقالة نالت على اعجابكم وتكون واضحة لكم ولمزيد من المقالات يمكنكم مشاهدة احد المقالات السابقة .


tensorflow python erp python django mongodb python mongodb python host


تعليقات