البيانات: الخصائص والهدف والتقسيم
كل نموذج يبدأ بجدول. كل صف مثال (عميل، فاتورة، شهر)، والأعمدة نوعين: الخصائص (Features) هي المعلومات اللي نعرفها، والهدف (Target أو Label) هو اللي نبي نتوقعه.
| المتجر | طلبات بالشهر | أسابيع من آخر طلب | المنطقة | وقف التعامل؟ (الهدف) |
|---|---|---|---|---|
| متجر الواحة | 8 | 1 | الرياض | لا |
| بقالة السلام | 2 | 7 | جدة | نعم |
| تموينات النور | 5 | 4 | الدمام | لا |
ليش نقسم البيانات؟ لو اختبرت النموذج على نفس الأمثلة اللي تعلّم منها، مثل طالب حفظ أسئلة الاختبار بإجاباتها: يجيب الدرجة كاملة لكنه ما فهم. عشان كذا نخبي جزء من البيانات (عادة 20%) اسمه بيانات الاختبار، ونتعلّم من الباقي (بيانات التدريب)، وبعدين نشوف أداء النموذج على أمثلة ما شافها.
months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct"] cartons = [410, 395, 430, 450, 470, 520, 610, 590, 480, 505] cut = int(len(cartons) * 0.8) # 80% for training train = cartons[:cut] test = cartons[cut:] print("Train:", len(train), "months") print("Test: ", len(test), "months", test)
البيانات أهم من الخوارزمية. النموذج يتعلّم من اللي تعطيه: لو بيانات المبيعات فيها مكررات، أو أسعار مدخلة غلط، أو شهور ناقصة، بيتعلّم الغلط. القاعدة المشهورة: Garbage in, garbage out. وعشان كذا أغلب وقت مشاريع تعلّم الآلة يروح في تجهيز البيانات وتنظيفها، وهنا تبان مهارتك في SQL.