Python

شرح مكتبة NumPy للمبتدئين في تعلم الالة والذكاء الاصطناعي

في هذا الدرس سأشرح بشكل كامل مكتبة نامباي NumPy الخاصة بلغة بايثون Python بشكل خاص للمبتدئين في مجال الذكاء الاصطناعي وتعلم الالة دون أي زيادات لاتهم هذا المجال

ماهي “المكتبة” في لغة بايثون ولماذا نستخدمها ؟

المكتبات Libraries هي عبارة عن كلاسات جاهزة تحتوي دوال تساعدنا وتسهل علينا البرمجة في مختلف المجالات

فلو أردنا برمجة برنامج تعلم آلة او ذكاء اصطناعي من الصفر فهذا سيتطلب وقت وجهد كبيرين جداً فضلاً عن خبرة برمجية كبيرة

وهنا يأتي دور المكتبات الجاهزة والتي هي عبارة عن Packages جاهزة وكاملة تغنينا عن هذا العمل

تنصيب NumPy

من خلال الـCmd اذا كنت مستخدم ويندوز

او من الـTerminal اذا كنت تستخدم لينوكس

اكتب الامر التالي :

او

وانتظر حتى انتهاء التنصيب , في حال ظهرت لك أي مشاكل لاتتردد في طلب المساعدة عبر التعليقات 🙂

أما امر استدعاء هذه المكتبة يكون بهذا الشكل

القوائم/المصفوفات في NumPy :
numpy.array()

يمكننا انشاء قائمة List بلغة بايثون ببساطة بهذا الشكل

أما اذا أردنا انشاء قائمة عبر مكتبة NumPy فتكون بهذا الشكل

وعند طباعة القائمتين تكون النتيجة هكذا

اذن ,, ما الفرق بين قوائم بايثون الأصلية وقوائم NumPy ؟

قد لايبدو للوهلة الأولى أن هناك فرق بين الطريقتين , لكن الواقع أن الفرق كبير

بدون أن ندخل في التفاصيل التقنية كثيراً وباختصار شديد , الفرق لن يظهر لك إلا عندما تتعامل حجم بيانات ضخم جداً يقدر بالغيغابايت أو أكبر , أو عندما تستخدم قوائم/مصفوفات متعددة الأبعاد ,, عندها ستلاحظ أن سرعة معالجة NumPy قد تصل إلى أكثر من ضعف سرعة معالجة قوائم بايثون العادية
عدا أنه في قوائم بايثون لايمكنك إجراء العمليات الرياضية (جمع, طرح, ضرب…) على عناصر القائمة بشكل مباشر , بينما في قوائم NumPy يمكن ذلك بشكل مباشر

مثال على قوائم بايثون :

ماذا تتوقع أن تكون قيمة list3 ؟
الجواب :

أما في قوائم NumPy :

ماذا تتوقع أن تكون نتيجة list3 هنا ؟؟
الجواب :

هل اتضح الفرق ؟

الدوال الإحصائية في NumPy :

للإحصاء دور أساسي في عالم الذكاء الاصطناعي وعلم البيانات سيتضح لك تدريجياً في الدروس القادمة
أما الان فسنأخذ لمحة بسيطة عن عمليات الإحصاء الأساسية في مكتبة NumPy

لنفرض مثلاً أنه لدينا قاعدة بيانات تحتوي على علامات مادتي الفيزياء والرياضيات لخمسة طلاب
إذاً يمكن تمثيل هذه المعلومات في قائمة/مصفوفة ثنائية الأبعاد في بايثون
حيث عدد الأسطر يساوي 5 أسطر (عدد الطلاب)
وعدد الأعمدة يساوي 2 (الأول لمادة الفيزياء والثاني لمادة الرياضيات)

حساب المتوسط الحسابي Mean :

لحساب المتوسط الحسابي لعلامتي المادتين لهؤلاء الطلاب من خلال مكتبة NumPy

المتوسط الحسابي لعلامات الفيزياء 71.8
أما لعلامات الرياضيات 72.6

وبنفس الطريقة يمكننا حساب الوسيط Median عبر الدالة التالية :

وأيضاً الانحراف المعياري Standard Deviation :

مع مراعاة الباراميترز داخل القوسين ..

المصفوفات متعددة الأبعاد Multi-dimensional arrays/lists :

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

ولو أضفنا لها عمود يحتوي على علامات مادة الكيمياء , فسيصبح عدد الأعمدة 3 وعدد الأسطر سيبقى 5
وستصبح مصفوفة/قائمة ثلاثية الأبعاد
إذاً نلاحظ أن عدد أبعاد مصفوفة ما يعتمد على عدد أعمدتها

وفي مجال تعلم الالة سنستخدم هذا النوع من المصفوفات غالباً

ويوجد دالة في مكتبة NumPy تعطينا شكل المصفوفة أي عدد أعمدتها وأسطرها , وهي :

فمثلاً لو طبقنا هذه الدالة على مصفوفة علامات الطلاب students_marks التي استخدمناها في الفقرة السابقة فستكون النتيجة كذلك :

والنتيجة :
(5, 2)

أي أن عدد الأسطر 5 وعدد الأعمدة 2

ويمكننا أيضاُ تغيير شكل المصفوفة عبر دالة reshape

فمثلاً اذا أردنا جعل المصفوفة السابقة مؤلفة من سطران و5 أعمدة ..

النتيجة :

وتستطيع من خلال مكتبة نامباي توليد بعض المصفوفات الجديدة

فمثلاً الدالة numpy.zeros() تنشئ لك مصفوفة صفرية (أي جميع عناصرها تساوي صفر)

والدالة numpy.eye() تنشئ لك مصفوفة واحدية (أي عناصر قطرها الرئيسي تساوي 1)

أما باراميترز كلتا الدالتين فهو عدد أسطر وأعمد الدالة التي تريد انشاءها (مثلاً : 7,4)

مجموع المصفوفات :
يوجد دالة في مكتبة NumPy تعطيك مجموع جميع عناصر المصفوفة

والنتيجة : 722

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

والنتيجة : [359, 363] حيث 363 هو حاصل جميع جميع عناصر العمود الأول
و 359 هو حاصل جميع عناصر العمود الثاني

ويمكنك جمع عناصر الأسطر فقط عبر نفس الدالة السابقة مع تغيير قيمة باراميتر axis إلى 1

اترك تعليقاً

2 تعليقان