لا يحتاج طالب الذكاء الاصطناعي إلى حفظ لغة Python كاملة قبل أن يبدأ، لكنه يحتاج إلى مجموعة محددة من المهارات تمكّنه من قراءة البيانات وتنظيفها وتحويلها إلى شكل يمكن تحليله واستخدامه في بناء النماذج.
الخطأ الشائع هو قضاء أشهر في دراسة البرمجة بصورة عامة، أو الانتقال مباشرة إلى مكتبات التعلم الآلي ونسخ الأكواد دون فهم البيانات التي تدخل إلى النموذج. المسار الأفضل يقع بين الطرفين: تعلّم أساسيات Python الضرورية، ثم استخدمها في مشروع صغير تتعامل فيه مع بيانات غير مكتملة ونتائج تحتاج إلى تفسير.
في هذا الدرس ستتعلم المتغيرات والقوائم والقواميس والشروط والحلقات والدوال، لكن من زاوية طالب الذكاء الاصطناعي. وفي النهاية ستبني برنامجًا صغيرًا يفحص بيانات طلاب ويحسب مؤشرات مفيدة دون استخدام أي مكتبة خارجية.
يأتي هذا الدرس ضمن خريطة تعلم الذكاء الاصطناعي لطالب الجامعة، التي ترتب المهارات من أساسيات البرمجة والبيانات وصولًا إلى تعلم الآلة وبناء المشروعات.
لماذا تستخدم Python في الذكاء الاصطناعي؟
Python ليست ذكاءً اصطناعيًا بحد ذاتها، بل لغة تساعدك على:
- قراءة البيانات وتنظيفها.
- إجراء العمليات الحسابية والإحصائية.
- عرض البيانات بصريًا.
- تدريب نماذج تعلم الآلة.
- تقييم النتائج ومقارنتها.
- حفظ النموذج واستخدامه داخل تطبيق.
- أتمتة المهام المتكررة في المشروع.
سبب انتشار Python لا يعود إلى سهولة كتابتها فقط، بل إلى منظومتها الواسعة من المكتبات مثل NumPy وPandas وMatplotlib وScikit-learn وPyTorch.
لكن المكتبة لا تعوض الفهم. إذا لم تعرف نوع البيانات التي تتعامل معها، أو سبب استبعاد بعض السجلات، فلن ينقذك استدعاء نموذج جاهز.
وإذا كانت مفاهيم النماذج والتدريب والبيانات ما تزال جديدة عليك، فابدأ من دليل الذكاء الاصطناعي لفهم الصورة العامة قبل الدخول في التفاصيل البرمجية.
ما الذي تحتاج إلى تعلمه الآن؟
في البداية ركز على:
- المتغيرات وأنواع البيانات.
- القوائم والقواميس.
- المقارنات والشروط.
- الحلقات.
- الدوال.
- التعامل مع القيم المفقودة.
- قراءة رسائل الأخطاء.
- استيراد المكتبات.
- تقسيم المشكلة إلى خطوات صغيرة.
ولا تحتاج حاليًا إلى التعمق في:
- تصميم واجهات المستخدم.
- تطوير مواقع الويب.
- البرمجة الكائنية المتقدمة.
- الخوارزميات المعقدة.
- بناء مكتبات Python.
- التفاصيل الداخلية لمفسر اللغة.
قد تحتاج هذه الموضوعات لاحقًا، لكنها ليست شرطًا لبدء تحليل البيانات وتعلم الآلة.
لا تحتاج هذه التطبيقات الأولى إلى جهاز مرتفع المواصفات، لكن قبل شراء جهاز للدراسة والمشروعات المتقدمة يمكنك الرجوع إلى دليل اختيار كمبيوتر يدعم الذكاء الاصطناعي لفهم دور المعالج والذاكرة وGPU وNPU.
أول برنامج Python
أبسط أمر يمكن تنفيذه هو:
print(“مرحبًا في مسار الذكاء الاصطناعي”)
الدالة print تعرض قيمة أو نتيجة على الشاشة. وهي ليست مجرد أداة للمبتدئ؛ يستخدمها المحلل أيضًا لفحص القيم ومتابعة ما يحدث أثناء تنفيذ البرنامج.
لكن لا تجعل برنامجك سلسلة طويلة من أوامر print. استخدمها كأداة مؤقتة لفهم البيانات، ثم نظّم الكود في دوال واضحة.
المتغيرات: أسماء تشير إلى قيم
يمكن تخزين القيم في متغيرات:
student_name = “Nawaf”
study_hours = 4.5
exam_score = 82
passed = True
لدينا أربعة أنواع أساسية:
- النص str.
- العدد العشري float.
- العدد الصحيح int.
- القيمة المنطقية bool.
يمكن فحص نوع أي قيمة باستخدام:
print(type(study_hours))
معرفة النوع مهمة؛ لأن بيانات تبدو كأرقام قد تصل إلى البرنامج كنصوص.
مثلًا:
score = “82”
لا يمكن التعامل مع هذه القيمة حسابيًا كما نتعامل مع العدد 82 قبل تحويلها:
score = int(score)
من أكثر أسباب فشل مشروعات البيانات وجود أرقام مخزنة كنصوص، أو أعمدة تحتوي على أكثر من نوع.
لا تفترض أن البيانات صحيحة
عندما تستقبل قيمة، افحص ثلاثة أمور:
- ما نوعها؟
- هل يمكن أن تكون مفقودة؟
- هل تقع ضمن نطاق منطقي؟
إذا كان لدينا عمر طالب:
age = 250
فالقيمة عدد صحيح من ناحية Python، لكنها غير منطقية بالنسبة إلى بيانات طلاب الجامعة.
صحة النوع لا تعني صحة المعنى.
العمليات الحسابية
تدعم Python العمليات الأساسية:
total = 70 + 85 + 90
average = total / 3
print(average)
وتوجد عمليات أخرى مثل:
remainder = 10 % 3
power = 2 ** 3
تُستخدم % للحصول على باقي القسمة، بينما تستخدم ** للأسس.
في مشاريع الذكاء الاصطناعي ستنفذ المكتبات العمليات المعقدة، لكنك ما زلت بحاجة إلى فهم ما تمثله المدخلات والنتائج.
القوائم: تخزين مجموعة من القيم
يمكن تخزين درجات عدة طلاب في قائمة:
scores = [68, 81, 75, 92, 79]
للحصول على أول قيمة:
print(scores[0])
يبدأ ترقيم العناصر من الصفر، لذلك يشير scores[0] إلى أول عنصر.
لمعرفة عدد العناصر:
print(len(scores))
ولحساب المجموع:
print(sum(scores))
ثم يمكن حساب المتوسط:
average = sum(scores) / len(scores)
print(average)
لكن هذا الكود سيفشل إذا كانت القائمة فارغة؛ لأن القسمة على صفر غير ممكنة. لذلك يحتاج الكود الجيد إلى التعامل مع الحالات غير المثالية.
القواميس: تمثيل سجل كامل
القائمة مناسبة لمجموعة قيم متشابهة، أما القاموس فيربط كل قيمة باسم يوضح معناها:
student = {
“name”: “Sara”,
“hours”: 4.0,
“score”: 81,
“attendance”: 90
}
للوصول إلى الدرجة:
print(student[“score”])
القاموس قريب من شكل الصف الواحد داخل جدول بيانات. وكل مفتاح، مثل score، يشبه اسم عمود.
هذه البنية ستظهر كثيرًا عند التعامل مع ملفات JSON وواجهات البرمجة وقواعد البيانات.
قائمة من القواميس
يمكن تمثيل مجموعة طلاب كالتالي:
students = [
{“name”: “Sara”, “hours”: 4.0, “score”: 81},
{“name”: “Omar”, “hours”: 2.5, “score”: 68},
{“name”: “Lama”, “hours”: 5.5, “score”: 92}
]
أصبح لدينا جدول مبسط: كل قاموس يمثل صفًا، وكل مفتاح يمثل عمودًا.
هذه الفكرة أهم لطالب الذكاء الاصطناعي من حفظ عشرات الأوامر؛ لأنها تساعده على فهم كيفية انتقال البيانات من شكلها الخام إلى جدول قابل للتحليل.
الشروط: اتخاذ قرار بناءً على البيانات
يمكن تصنيف النتيجة باستخدام if:
score = 81
if score >= 60:
print(“ناجح”)
else:
print(“يحتاج إلى مراجعة”)
ولإضافة أكثر من احتمال:
if score >= 90:
print(“ممتاز”)
elif score >= 75:
print(“جيد جدًا”)
elif score >= 60:
print(“ناجح”)
else:
print(“يحتاج إلى مراجعة”)
ترتيب الشروط مهم. يبدأ Python من الأعلى ويتوقف عند أول شرط صحيح.
هذه القواعد اليدوية ليست نموذج ذكاء اصطناعي. هي قرارات صممها المبرمج مسبقًا، بينما يحاول نموذج تعلم الآلة اكتشاف أنماط من البيانات. فهم الفرق بينهما يمنع وصف أي برنامج يحتوي على شروط بأنه «ذكاء اصطناعي».
الحلقات: تنفيذ العملية على عدة سجلات
بدل تكرار الأمر لكل طالب:
for student in students:
print(student[“name”], student[“score”])
في كل دورة يشير المتغير student إلى سجل مختلف.
ويمكن دمج الحلقة مع شرط:
for student in students:
if student[“score”] >= 60:
print(student[“name”], “ناجح”)
قبل استخدام الحلقة، اسأل: هل أريد تنفيذ العملية نفسها على كل سجل، أم أحتاج إلى استبعاد بعض السجلات أولًا؟
القيم المفقودة ليست صفرًا
تمثل Python غياب القيمة غالبًا باستخدام:
None
مثال:
student = {
“name”: “Fahad”,
“hours”: None,
“score”: 75
}
القيمة None لا تعني أن الطالب لم يدرس أي ساعة. تعني فقط أن عدد الساعات غير معروف أو لم يُسجل.
هذا الفرق جوهري:
- الصفر قيمة معلومة.
- None قيمة مفقودة.
- النص الفارغ قيمة تحتاج إلى تفسير.
- غياب المفتاح من القاموس حالة أخرى.
استبدال كل قيمة مفقودة بصفر قد يغيّر متوسط البيانات ويؤثر لاحقًا في النموذج.
الوصول الآمن إلى قيم القاموس
إذا حاولت قراءة مفتاح غير موجود:
print(student[“attendance”])
سيظهر خطأ.
يمكن استخدام:
attendance = student.get(“attendance”)
print(attendance)
إذا لم يوجد المفتاح، تعيد get القيمة None بدل إيقاف البرنامج.
ويمكن تحديد قيمة افتراضية:
attendance = student.get(“attendance”, 0)
لكن لا تستخدم الصفر افتراضيًا إلا إذا كان معناه صحيحًا في سياق البيانات.
الدوال: تحويل الخطوات إلى وحدات قابلة للاختبار
الدالة تجمع مهمة محددة تحت اسم واضح:
def calculate_average(values):
if not values:
return None
return sum(values) / len(values)
ثم نستخدمها:
scores = [68, 81, 92]
average = calculate_average(scores)
print(average)
الدالة الجيدة:
- تؤدي مهمة واضحة.
- تستقبل مدخلات معروفة.
- تعيد نتيجة يمكن اختبارها.
- لا تعتمد على متغيرات مخفية قدر الإمكان.
- تتعامل مع الحالات غير المعتادة.
تقسيم المشروع إلى دوال صغيرة يجعل اكتشاف الأخطاء أسهل من كتابة جميع الخطوات في كتلة واحدة طويلة.
الفرق بين print وreturn
تقوم print بعرض القيمة فقط:
def show_score(score):
print(score)
أما return فتعيد القيمة لكي تستخدمها أجزاء أخرى من البرنامج:
def double_score(score):
return score * 2
يمكن حفظ النتيجة:
result = double_score(40)
print(result)
في مشروعات البيانات ستحتاج غالبًا إلى return، لأن مخرجات خطوة تصبح مدخلات للخطوة التالية.
استيراد المكتبات
تحتوي Python على مكتبة قياسية، كما يمكن تثبيت مكتبات خارجية.
مثال من المكتبة القياسية:
import statistics
scores = [68, 81, 75, 92]
print(statistics.mean(scores))
لا تنسخ أمر استيراد مكتبة قبل معرفة سبب استخدامها. وإذا ظهر الخطأ:
ModuleNotFoundError
فهذا يعني عادة أن المكتبة غير مثبتة في بيئة Python الحالية، أو أنك تشغّل الكود من بيئة مختلفة.
سنتعلم في الدرس التالي إنشاء بيئة مستقلة للمشروع وتشغيل Jupyter بصورة منظمة.
كيف تقرأ رسالة الخطأ؟
عندما يظهر Traceback، لا تقرأ الشاشة كاملة بعشوائية.
ابدأ من السطر الأخير؛ فهو يوضح نوع الخطأ والرسالة الأساسية. ثم اصعد إلى السطر الذي يشير إلى ملفك ورقم السطر.
من الأخطاء الشائعة:
- SyntaxError: تركيب الجملة غير صحيح.
- NameError: استخدام اسم متغير غير معروف.
- TypeError: تنفيذ عملية على نوع غير مناسب.
- KeyError: طلب مفتاح غير موجود في القاموس.
- IndexError: طلب عنصر خارج حدود القائمة.
- ValueError: النوع مناسب، لكن القيمة غير قابلة للتحويل أو الاستخدام المطلوب.
- ZeroDivisionError: محاولة القسمة على صفر.
لا تعالج الخطأ بحذف السطر مباشرة. اسأل: ما الافتراض الذي وضعته عن البيانات واتضح أنه غير صحيح؟
أدوات فحص بسيطة قبل طلب المساعدة
استخدم:
print(type(value))
print(repr(value))
print(len(values))
تعرض repr القيمة بصورة تساعد على رؤية المسافات والرموز وبعض الفروق التي قد لا تكون واضحة باستخدام print.
ولتحديد ما إذا كانت القيمة مفقودة:
print(value is None)
استخدم:
value == 10
للمقارنة بين قيمتين، بينما تستخدم:
value = 10
لإسناد قيمة إلى متغير.
لا تثق بترتيب تشغيل Notebook
في Jupyter يمكن تشغيل الخلايا بترتيب مختلف عن ترتيب ظهورها في الصفحة. قد يعمل المشروع على جهازك لأن متغيرًا قديمًا ما زال محفوظًا في الذاكرة، لكنه يفشل عند فتحه من جديد.
قبل تسليم المشروع:
- أعد تشغيل Kernel.
- شغّل جميع الخلايا من البداية بالترتيب.
- تأكد من عدم الاعتماد على متغير لم تُنشئه خلية سابقة.
- احذف النتائج القديمة غير الضرورية.
- اكتب وصفًا مختصرًا لكل مرحلة.
هذه الخطوة البسيطة تكشف مشكلات كثيرة قبل مشاركة المشروع.
قاعدة دليل التقنية: افصل البيانات الخام عن البيانات النظيفة
لا تعدّل البيانات الأصلية بصمت. احتفظ بنسخة خام، ثم أنشئ نسخة نظيفة تُطبق عليها التغييرات.
يجب أن تستطيع الإجابة عن:
- ما السجلات التي استبعدتها؟
- لماذا استبعدتها؟
- ما القيم التي عدّلتها؟
- ما القاعدة المستخدمة في التعديل؟
- هل يمكن إعادة تنفيذ الخطوات نفسها؟
- كيف أثرت التغييرات في النتيجة؟
هذه الأسئلة أهم من الحصول على رقم نهائي سريع؛ لأن النموذج الجيد يبدأ بسجل واضح لما حدث للبيانات.
مشروع عملي: تحليل بيانات طلاب دون مكتبات خارجية
لدينا بيانات صغيرة عن ساعات الدراسة ودرجات الاختبار:
students = [
{“name”: “Sara”, “hours”: 4.0, “score”: 81},
{“name”: “Omar”, “hours”: 2.5, “score”: 68},
{“name”: “Fahad”, “hours”: None, “score”: 75},
{“name”: “Lama”, “hours”: 5.5, “score”: 92},
{“name”: “Noura”, “hours”: 3.0, “score”: None}
]
لاحظ أن بعض السجلات تحتوي على قيم مفقودة.
الخطوة الأولى: فحص السجلات
for student in students:
print(
student[“name”],
student[“hours”],
student[“score”]
)
لا تبدأ بالحساب قبل مشاهدة شكل البيانات.
الخطوة الثانية: تحديد السجلات الصالحة للتحليل
valid_students = []
for student in students:
has_hours = student[“hours”] is not None
has_score = student[“score”] is not None
if has_hours and has_score:
valid_students.append(student)
لم نحذف السجلات الأصلية، بل أنشأنا قائمة جديدة تضم السجلات التي تحتوي على القيم المطلوبة لهذا التحليل.
الخطوة الثالثة: معرفة ما تم استبعاده
excluded_count = len(students) – len(valid_students)
print(“عدد السجلات الأصلية:”, len(students))
print(“عدد السجلات المستخدمة:”, len(valid_students))
print(“عدد السجلات المستبعدة:”, excluded_count)
كتابة عدد السجلات المستبعدة تمنع إخفاء أثر عملية التنظيف.
الخطوة الرابعة: إنشاء دالة للمتوسط
def calculate_average(values):
if not values:
return None
return sum(values) / len(values)
الخطوة الخامسة: استخراج القيم
hours = [student[“hours”] for student in valid_students]
scores = [student[“score”] for student in valid_students]
يسمى هذا الأسلوب List Comprehension، وهو طريقة مختصرة لإنشاء قائمة جديدة من قائمة موجودة.
الخطوة السادسة: حساب المتوسطات
average_hours = calculate_average(hours)
average_score = calculate_average(scores)
print(“متوسط ساعات الدراسة:”, average_hours)
print(“متوسط الدرجات:”, average_score)
ستُحسب النتائج من ثلاثة سجلات مكتملة فقط، وليس من جميع الطلاب الخمسة.
الخطوة السابعة: إضافة تصنيف تفسيري
for student in valid_students:
if student[“score”] >= 85:
level = “أداء مرتفع”
elif student[“score”] >= 70:
level = “أداء متوسط”
else:
level = “يحتاج إلى دعم”
print(student[“name”], level)
هذا تصنيف بقواعد كتبناها نحن، وليس نموذج تعلم آلي.
ماذا تعلمنا من المشروع؟
نفّذ المشروع خطوات تشبه خط أنابيب البيانات:
- استلام البيانات الخام.
- فحص شكلها.
- اكتشاف القيم المفقودة.
- تحديد شروط استخدام السجلات.
- إنشاء نسخة صالحة للتحليل.
- حساب النتائج.
- تفسير المخرجات.
- توثيق ما تم استبعاده.
هذا التفكير سيبقى معك عندما تنتقل إلى Pandas وScikit-learn. ستتغير الأدوات، لكن الأسئلة الأساسية لن تتغير.
لا تستنتج أكثر مما تسمح به البيانات
قد تلاحظ أن الطلاب ذوي ساعات الدراسة الأعلى حصلوا على درجات أعلى في العينة السابقة، لكن لا يمكنك القول إن زيادة ساعات الدراسة هي السبب المؤكد.
لماذا؟
- العينة صغيرة جدًا.
- قد توجد عوامل لم نسجلها.
- الساعات مبنية على بيانات قد تكون غير دقيقة.
- بعض السجلات ناقصة.
- الارتباط لا يثبت السببية.
من مهارات طالب الذكاء الاصطناعي معرفة حدود الاستنتاج، لا مجرد إنتاج أرقام ورسوم جميلة.
كيف تستخدم أدوات الذكاء الاصطناعي في كتابة الكود؟
يمكن للمساعد الذكي أن:
- يشرح رسالة خطأ.
- يقترح طريقة لتقسيم المشكلة.
- يراجع أسماء المتغيرات.
- ينشئ بيانات تجريبية.
- يقترح حالات لاختبار الدالة.
- يشرح سطرًا لا تفهمه.
لكنه قد ينتج كودًا يعمل ظاهريًا ويحتوي على افتراضات خاطئة عن البيانات.
قبل استخدام أي كود مولد، اسأل:
- هل أفهم كل سطر؟
- ما أنواع المدخلات المتوقعة؟
- ماذا يحدث عند وجود قيمة مفقودة؟
- ماذا يحدث إذا كانت القائمة فارغة؟
- هل عدّل الكود البيانات الأصلية؟
- هل النتيجة قابلة لإعادة الإنتاج؟
- هل أرسل الكود أو البيانات معلومات حساسة؟
لا تضع بيانات طلاب أو عملاء أو مرضى أو ملفات سرية داخل أدوات عامة دون تصريح واضح.
ولمعرفة ما يمكن مشاركته وما ينبغي إخفاؤه قبل رفع البيانات أو الأكواد إلى أي خدمة، راجع دليل حماية الخصوصية عند استخدام أدوات الذكاء الاصطناعي .
أخطاء شائعة لدى طالب الذكاء الاصطناعي
القفز مباشرة إلى النماذج
قد يعمل النموذج، لكن الطالب لا يعرف لماذا كانت النتيجة سيئة أو مضللة.
نسخ الكود دون تشغيله خطوة خطوة
شغّل كل مرحلة وافحص مخرجاتها قبل الانتقال إلى التالية.
اعتبار القيمة المفقودة صفرًا
قد يغير ذلك معنى البيانات والنتائج.
تغيير البيانات الخام
احتفظ بالأصل وأنشئ نسخة نظيفة قابلة للمراجعة.
تجاهل أنواع البيانات
الرقم المخزن كنص قد يمنع الحساب أو يعطي نتائج غير متوقعة.
كتابة المشروع في كتلة واحدة
قسّمه إلى دوال ومراحل واضحة.
استخدام أسماء متغيرات غامضة
استخدم student_scores بدلًا من x عندما لا تكون هناك حاجة رياضية إلى الاختصار.
اعتبار كل نتيجة نمطًا مهمًا
تحقق من حجم العينة وجودة البيانات والاحتمالات البديلة.
اختبار ذاتي قبل الانتقال للدرس التالي
يجب أن تكون قادرًا على:
- إنشاء متغير وفحص نوعه.
- استخدام قائمة وقاموس.
- كتابة شرط وحلقة.
- إنشاء دالة تعيد نتيجة.
- اكتشاف قيمة None.
- تفسير رسالة خطأ بسيطة.
- فصل البيانات الخام عن النظيفة.
- توضيح سبب استبعاد أي سجل.
- شرح الفرق بين القواعد اليدوية وتعلم الآلة.
- تنفيذ مشروع التحليل من البداية بعد إعادة تشغيل البيئة.
إذا استطعت ذلك، فأنت جاهز لإعداد بيئة Python وJupyter بصورة منظمة في الدرس التالي.
أسئلة شائعة
هل يجب أن أتقن Python قبل تعلم الذكاء الاصطناعي؟
لا تحتاج إلى إتقان جميع تفاصيل اللغة. تحتاج إلى أساس قوي في التعامل مع البيانات والدوال والأخطاء، ثم تتعلم المهارات الأخرى أثناء بناء المشاريع.
هل أبدأ بـPython أم الرياضيات؟
ابدأ بهما بصورة متوازية. استخدم Python لتطبيق المتوسطات والنسب والرسوم، ثم أضف الجبر الخطي والاحتمالات والإحصاء تدريجيًا.
هل تكفي مشاهدة الدروس؟
لا. اكتب الكود بنفسك، غيّر البيانات، وتوقع النتيجة قبل التشغيل، ثم حاول تفسير الأخطاء.
هل الكود السابق نموذج ذكاء اصطناعي؟
لا. هو برنامج لتحليل البيانات باستخدام قواعد وحسابات حددناها بأنفسنا. سنبني نموذج تعلم آلي بعد تعلم تجهيز البيانات وفهمها.
هل أستخدم Jupyter أم ملف Python عاديًا؟
كلاهما مفيد. Jupyter مناسب للاستكشاف والتوثيق، بينما ملفات Python مناسبة لتنظيم البرامج وإعادة استخدامها. سنتعلم إعداد البيئة في الدرس التالي.
رأي دليل التقنية
أفضل بداية لطالب الذكاء الاصطناعي ليست حفظ أكبر عدد من أوامر Python، بل تعلم كيف يحول سؤالًا غامضًا إلى خطوات قابلة للفحص.
قبل كتابة الكود، اكتب:
- ما السؤال الذي أحاول الإجابة عنه؟
- ما البيانات التي أحتاجها؟
- ما معنى كل قيمة؟
- ما الأخطاء المحتملة؟
- ما النتيجة التي لا يحق لي استنتاجها؟
إذا أصبحت هذه الأسئلة جزءًا من عملك، فستتعلم المكتبات والنماذج بسرعة أكبر، وستنتج مشاريع أكثر صدقًا وقابلية للمراجعة.
الخلاصة
أساسيات Python لطالب الذكاء الاصطناعي ليست موضوعًا منفصلًا عن البيانات. المتغيرات والقوائم والقواميس والشروط والحلقات والدوال هي الأدوات التي تستخدمها لفحص البيانات وتحويلها وتوثيق قراراتك.
ابدأ ببيانات صغيرة، وافحص أنواعها وقيمها المفقودة، وقسّم العمل إلى دوال واضحة، ولا تقدم استنتاجًا أكبر مما تسمح به البيانات.
الخطوة التالية هي إعداد بيئة Python مستقلة وتشغيل Jupyter بطريقة تمنع تعارض المكتبات وتحافظ على قابلية إعادة تنفيذ المشروع.
ولمتابعة أحدث دروس الذكاء الاصطناعي والأمن السيبراني والمشروعات المناسبة للطلاب، انتقل إلى صفحة طالب الحاسب.
الخطوة التالية: انتقل إلى درس قراءة البيانات باستخدام NumPy وPandas لتتعلم فحص الجداول وتنظيفها وتجهيزها قبل البدء في تعلم الآلة.


شاركنا رأيك