أقسام الموقع: Python

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

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

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

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

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

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

تنصيب NumPy

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

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

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

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

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

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

# python array
a = [1,2,3,4,5,6,7,8,9]

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

# numpy array
A = numpy.array([1,2,3,4,5,6,7,8,9])

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

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

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

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

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

list1 = [1,2,3,4,5] list2 = [9,4,1,8,6] list3 = list1 + list2

ماذا تتوقع أن تكون قيمة list3 ؟
الجواب :
[1, 2, 3, 4, 5, 9, 4, 1, 8, 6]

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

import numpy
list1 = numpy.array([1,2,3,4,5])
list2 = numpy.array([9,4,1,8,6])
list3 = list1 + list2

ماذا تتوقع أن تكون نتيجة list3 هنا ؟؟
الجواب :
[10 6 4 12 11]

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

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

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

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

import numpy
students_marks = numpy.array([[88,91],
[92,33],
[100,70],
[13,98],
[66,71]])

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

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

physics = numpy.mean(students_marks[:,0])
maths = numpy.mean(students_marks[:,1])

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

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

وأيضاً الانحراف المعياري Standard Deviation :
numpy.std()

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

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

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

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

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

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

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

numpy.shape(students_marks)
والنتيجة :
(5, 2)

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

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

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

students_marks.reshape(2,5)

النتيجة :
[[ 88, 91, 92, 33, 100],
[ 70, 13, 98, 66, 71]]

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

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

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

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

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

numpy.sum(students_marks)
والنتيجة : 722

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

numpy.sum(students_marks,axis=0)

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

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

Firas Maan

إظهار التعليقات

مشاركة
نُشر بواسطة
Firas Maan

آخر المنشورات

  • أخبار

برنامج DeepFake أونلاين لصناعة الفيديوهات المزيفة بدون تحميل

لم يمضي وقت كبير عندما قام أحد مستخدمي منصة reddit  يسمى ديب فيك Deep fake بنشر فيديوهات واقعية وذات جودة…

8 أشهر مضت
  • تعلم الآلة
  • مبادئ عامة

انشاء شبكة عصبية اصطناعية بسيطة Artificial Neural Network, الجزء الأول

0- تمهيد لدينا بعض المعلومات عن أزهار موجودة في الحديقة كان الباحث يسجل (طول ساق الزهرة) و(عرض ساق الزهرة) و…

9 أشهر مضت
  • أخبار

“شمرا أكاديميا” محرك بحث لمشاريع التخرج والابحاث العلمية السورية لطلاب الجامعات والباحثين

"شمرا أكاديميا" هي خدمة يقدمها محرك البحث السوري الأول "شمرا" وتعتبر خدمة "شمرا أكاديميا" كمحرك بحث خاص بالمؤلفات العلمية والأكاديمية…

سنة واحدة مضت
  • تعلم الآلة

[Scikit Learn] شرح عمل برنامج للتنبؤ بالقيم بخوارزمية Linear Regression

تعد خوارزمية المنحني الخطي/الانحدار الخطي Linear Regression من أشهر خوارزميات تعلم الالة وهي تدخل ضمن تصنيف التعلم بإشراف Supervised Learning…

سنة واحدة مضت
  • أخبار

“جوليا” لغة برمجة الذكاء الاصطناعي المنتظرة !

Follow my blog with Bloglovin "جوليا Julia" هي لغة برمجة عالية المستوى متعددة الاغراض , صممت في البداية لتوافق احتياجات…

سنة واحدة مضت
  • أخبار

برامج Deep Fake لانتاج المشاهد المفبركة بالذكاء الاصطناعي

لندن - نيويورك: «الشرق الأوسط» تصور مشهداً لغرفة فيها كنبة حمراء، ونبتة في حوض، ولمسة من الفنّ الخفيف الذي نراه…

سنة واحدة مضت