بايثون-29: تحليل البيانات بلغة بايثون المشروع الاول-2


السلام عليكم ورحمة الله وبركاته

اخوتي الكرام اخواتي الفاضلات

وصلنا معكم الى المرحلة الاولى من مراحل تحليل البيانات الا وهي استكشاف البيانات (data exploration) ولكن قبل ذلك احب ان ابين عدة امور:

بعد ان قمنا بتنزيل الملفات التي سنستخدمها في مشروعنا في الدرس السابق وقلنا انها ستكون ملف بيانات التدريب (training) وملف بيانات الاختبار (testing) وملف لنموذج التسليم ووضحنا معاني هذه الملفات بأختصار احببت ان ابين الموضوع بشكل اكثر تفصيلاً هنا:

الهدف من تحليل البيانات بشكل عام هو انشاء نموذج (model) قادر على تحليل البيانات المستقبلية بناءاً على معطيات حالية او ماضية بمعنى اننا نريد ان نبني نموذج يتدرب على بيانات سابقة لدينا نعرف نتائجها ثم نقوم بتطبيق هذا النموذج على بيانات جديدة لم يسبق له ان تعامل معها بهدف معرفة ما هي مخرجات كل منها وسنحاول توضيح هذين المعنيين (التدريب والاختبار) اكثر اثناء شرح المشروع وخطوات تحليله.

الان وكما قلنا في الدرس السابق نبدأ برنامج اناكوندا من سطر الاوامر بطباعة العبارة

ipython notebook

بشكل طبيعي كما تعلمنا سابقاً وفي داخل متصفح الانترنت حيث تظهر لنا الواجهة الرئيسية للبرنامج نقوم بأنشاء ملف جديد من نوع (python 3) ونقوم بتسميته بأي اسم ثم نقوم بكتابة هذا الايعاز

%pylab inline

لنقوم بجعل كل النتائج تعرض في نفس النافذة وليس في نوافذ اخرى (كما اشرنا الى ذلك في الدرس الماضي) ويقوم الايعاز اعلاه بأستيراد الدوال الرسومية والرياضية لمكتبة (numpy) ومكتبة (matplotlib) مباشرة ولأختبار ذلك نجرب رسم دالة بسيطة ولتكن رسم دالة القيم من الصفر الى الخمسة وكما في الصورة التالية:

ds1

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

استيراد المكتبات المهمة للعمل عليها:

المكتبات الرئيسية التي نحتاج استيرادها الى بيئة العمل خاصتنا هي (numpy, matplotlib, pandas) ورغم اننا قمنا بأستيراد اول مكتبتين منهما بالايعاز الاول اعلاه الا اننا سنقوم بأدراج كودات الاستيراد لهما ايضاً في حالة كنتم تعملون في بيئة اخرى غير الاناكوندا:

ds2

الان لنشرح الكود اعلاه قليلاً:

السطر الاول كما هو مبين في التعليق لأستيراد مكتبة (pandas) واسناد اسم (pd) لها.

ونفس الشيء بالنسبة للسطر الثاني والثالث.

واما بخصوص السطر الرابع فهو قراءة لملف البيانات الخاصة بالتدريب (train.csv) الذي قمنا بتنزيله سابقاً بأستخدام دالة القراءة الموجودة ضمن مكتبة (pandas) وهي دالة (read_csv) ولاحظ اننا قمنا بوضع اسم المكتبة الذي اسندناه لها (pd) ثم نقطة قبل اسم الدالة لأستدعائها وهذه هي الطريقة العامة لأستدعاء دوال هذه المكتبات من الان وصاعداً.

واخيراً قمنا بوضع امتداد خزن الملف (train.csv) بداخل علامات اقتباس مزودجة بداخل قوسي الدالة واسناد الناتج (خزن الملف) بداخل متغير اسمه (df).

الان لألقاء نظرة سريعة على البيانات في هذا الملف يمكننا عرض الحقول الاولى من الملف بأستخدام دالة (head) وتحديد عدد الاسطر التي نريد استعراضها وكما في ادناه:

ds3

هنا قمنا بطباعة اول 7 اسطر من البيانات وكما نرى هناك مجموعة من الحقول بحيث ان كل حقل له نوعية بيانات (data type) مختلفة وهذه هي الفائدة من استعراض البيانات.

لأخذ نظرة عامة عن الحقول الرقمية يمكن استخدام دالة الوصف (describe) وكما في ادناه:

ds4

ونلاحظ انه قام بعرض الحقول الرقمية ومجموعها والمعدل والانحراف المعياري وبقية الحسابات الرياضية الاخرى للحقول الرقمية فقط.

والان ومن خلال هذه المعطيات نستطيع استنتاج ان بعض الحقول تحتوي بيانات ناقصة (مثلاً loanAmount عددها اقل من ال ApplicantIncome) وهكذا.

كذلك نستطيع تحديد ان اغلب المتقدمين للحصول على قروض (في مثالنا هذا) لديهم سجل وتاريخ رصيد لأن معدل تاريخ الرصيد (Credit_History) هو 84% وهو معدل مرتفع.

وكذلك من خلال المقاييس الاحصائية لدخل المتقدمين (ApplicantIncome) والتوقع للسداد (Expectation) نرى ان كلاهما لهما نفس التوجه (orientation).

وبصورة عامة نستطيع من خلال استعراض البيانات اخذ نظرة اولية عن معناها والعلاقة بينها وهل هناك توجه معين (trend) يعطينا اشارة معينة لوجود علاقة بين زيادة مقدار ما ونقصان مقدار اخر او اي نوع من انواع العلاقات الاخرى وفي هذه الخطوة من الضروري معرفة التطبيق او المشكلة التي نتناولها والنظر لها من وجهة نظر مختص (ولا بأس بالاستعانة بمختص في هذا المجال للمساعدة في فهم الجداول) لأن ذلك سيحدد الخطوات اللاحقة في التحليل.

اما بالنسبة للقيم الغير رقمية فيمكننا ايضاً عرض نسبة تكرار كل منها لنعرف ايضاً هل هي منطقية ومعقولة وهل هناك علاقة بينها او لا ومن خلال الايعاز التالي:

ds5

تحليل التوزيع:

الان وبعد معرفة الخصائص الاساسية للبيانات نستطيع دراسة توزيعها وللمتغيرات (الاعمدة) المختلفة ولنبدأ بالمتغيرات الرقمية ولنأخذ مثالاً عليها وهو معدل دخل المتقدمين للحصول على قرض (ApplicantIncome) ونقوم برسم الهستوغرام او الرسم البياني (Histogram) وبأستخدام الايعاز التالي:

ds6

هنا ايضاً رأينا ان دالة (hist) التي تستخدم لرسم المخطط البياني للمتغير ApplicantIncome استخدمت مع معامل اخر وهو عدد ال (bins) او عدد النقاط في الاحداثي السيني لتمثيل هذا المتغير بشكل دقيق ونلاحظ ان اغلب المتقدمين يقعون في المساحة بين الصفر والعشرين الف دولار بالسنة (والذي يعتبر دخل منخفض او دون مستوى الفقر) وهو شيء منطقي ولكن مع ذلك نجد هناك عدة قفزات عند الاربعين الف والخمسين الف والخمسة وستون الف وهكذا.

اما اذا اردنا استخدام الرسم بطريقة (box plot) فيمكننا عمل ذلك كما يلي:

ds7.png

وهنا نلاحظ اننا استطعنا رؤية التوزيع للبيانات ضمن هذا المتغير (ApplicantIncome) بطريقة اخرى والتي تبين وجود حالات شاذة (outliers) بعيدة عن اغلبية البيانات وهي الدوائر الصغيرة المنفردة في الاعلى.

والان لنحاول الربط بين هذا التوزيع وبين المستوى العلمي للمتقدمين ونقوم برسم دخل المتقدمين مع الحالة (متخرج graduate او غير متخرج Not graduated) وكما في الايعاز التالي:

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

والان لنرسم مقدار القرض المطلوب بالطريقتين اعلاه وكما يلي:

ds8

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

تحليل المتغيرات الغير رقمية  Categorical Variable Analysis

ويمكننا ذلك بأستخدام عدة ادوات وكما مبين في الصورة التالية:

ds9

حيث قمنا بخزن قيمة تاريخ الرصيد للمتقدمين بطلب اقتراض في متغير اسمه (temp1) وخزن حالة القرض وهل تم ارجاعه او لا في جدول في المتغير (temp2) ثم قمنا بطباعتها وكما في الصورة اعلاه.

ولعمل نفس الشيء ولكن بطريقة رسومية وبأستخدام المكتبة (matplotlib) يمكننا استخدام الايعازات التالية:

ds10

وكما هو واضح فأغلب الايعازات مشابهة الى حد كبير لتلك المستخدمة في برنامج الماتلاب لرسم البيانات واضافة اسماء للمحور السيني والصادي وكذلك اسم لمحتويات الرسم وعنوان للرسم وتقسيم الرسومات الى عدة رسومات فرعية (sub plots).

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

وهناك طريقة اخرى لجمع الرسمين في شكل واحد وكما في ادناه:

ds11

حيث نرى توافق حالة القرض مع تاريخ الرصيد الى حد كبير.

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

الى هذه النقطة اعتقد ان الامور اصبحت واضحة بخصوص المشروع الذي نعمل عليه وهو بأختصار كالاتي:

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

وكما ذكرنا في الدرس السابق فمصدر هذه الدروس (مع الترجمة والتبسيط والشرح) هو الرابط التالي (انقر هنا لزيارة المصدر الاصلي)

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

تحياتي للجميع

اخوكم مصطفى صادق لطيف

اترك رد

إملأ الحقول أدناه بالمعلومات المناسبة أو إضغط على إحدى الأيقونات لتسجيل الدخول:

WordPress.com Logo

أنت تعلق بإستخدام حساب WordPress.com. تسجيل خروج   /  تغيير )

Google+ photo

أنت تعلق بإستخدام حساب Google+. تسجيل خروج   /  تغيير )

صورة تويتر

أنت تعلق بإستخدام حساب Twitter. تسجيل خروج   /  تغيير )

Facebook photo

أنت تعلق بإستخدام حساب Facebook. تسجيل خروج   /  تغيير )

w

Connecting to %s