جمع البيانات في TensorFlow.js
قبل بناء أي نموذج في TensorFlow.js، يجب أولًا تجهيز
البيانات التي سيتعلم منها النموذج. وتوضح هذه الصفحة أن مرحلة
جمع البيانات وتنظيفها ليست خطوة ثانوية، بل هي الأساس
الذي سيُبنى عليه كل ما يأتي بعد ذلك.
في هذا المثال، البيانات المستخدمة هي قائمة من كائنات السيارات،
وكل كائن يحتوي على خصائص متعددة مثل:
الاسم، ومعدل استهلاك الوقود، وعدد الأسطوانات، والإزاحة،
والقدرة الحصانية، والوزن، والتسارع، والسنة، والمنشأ.
شكل البيانات الأصلية
توضح الصفحة أن كل عنصر في مجموعة البيانات عبارة عن كائن
يمثل سيارة واحدة، ويحتوي على خصائص عديدة. من الأمثلة الظاهرة
في الصفحة:
كما تعرض الصفحة مثالًا آخر لسيارة مختلفة بالقيم نفسها تقريبًا
لكن مع اختلافات في الخصائص، لتوضيح أن البيانات الأصلية
أكبر من مجرد متغيرين أو ثلاثة. وهذا مهم لأننا لا نستخدم
كل الخصائص دائمًا داخل النموذج، بل نختار فقط ما نحتاجه.
مصدر البيانات
تذكر الصفحة أن مجموعة البيانات الأصلية محفوظة بصيغة
JSON، وأنها مخزنة في ملف خارجي.
وهذا يوضح أن مشاريع تعلم الآلة داخل JavaScript
لا تعتمد بالضرورة على بيانات مكتوبة يدويًا،
بل يمكنها تحميل بيانات من ملفات أو مصادر خارجية.
تنظيف البيانات
بعد عرض البيانات الخام، تنتقل الصفحة مباشرة إلى خطوة
Cleaning Data، وتوضح أن التحضير لتعلم الآلة
يتطلب دائمًا أمرين أساسيين:
- إزالة البيانات التي لا نحتاجها
- تنظيف البيانات من الأخطاء
وهذا يعني أن البيانات الأصلية غالبًا لا تكون جاهزة مباشرة للنموذج،
بل تحتاج إلى تصفية واختيار وتنظيم قبل استخدامها فعليًا.
إزالة البيانات غير الضرورية
توضح الصفحة أن الطريقة الذكية للتخلص من البيانات غير الضرورية
هي استخراج فقط القيم التي نريد استخدامها.
وفي هذا المثال، لا يتم الاحتفاظ بجميع خصائص السيارة،
بل يتم أخذ خاصيتين فقط:
- Horsepower وتوضع في x
- Miles_per_Gallon وتوضع في y
ولهذا تعرض الصفحة الدالة التالية:
الفكرة هنا أن النموذج أو الرسم لا يحتاجان إلى الاسم أو الوزن
أو عدد الأسطوانات في هذه المرحلة، بل يحتاجان فقط إلى العلاقة
بين القدرة الحصانية ومعدل استهلاك الوقود.
إزالة الأخطاء من البيانات
بعد استخراج الخصائص المطلوبة، تشرح الصفحة أن معظم مجموعات البيانات
تحتوي على نوع من الأخطاء، ولهذا من الأفضل استخدام
filter function لإزالة السجلات غير الصالحة.
وفي هذا المثال، تعتبر الصفحة أن وجود قيمة
null في x أو y
يعني أن السجل غير صالح ويجب تجاهله.
هذا الشرط البسيط يضمن أن كل عنصر يمر إلى المرحلة التالية
يحتوي على قيمتين صالحـتين فعلًا، وهو أمر مهم جدًا حتى لا تتعطل
عمليات الرسم أو التدريب لاحقًا.
جلب البيانات
بعد تجهيز دالتي الاستخراج والتنظيف، تعرض الصفحة دالة كاملة
لتحميل البيانات من ملف JSON، ثم تحويلها إلى الشكل المناسب
وتصفيتها من الأخطاء.
هذا المثال يوضح تسلسلًا عمليًا واضحًا:
- تحميل الملف باستخدام fetch()
- تحويله إلى JSON
- استخراج القيم المطلوبة فقط باستخدام map()
- إزالة السجلات الخاطئة باستخدام filter()
وبعد هذه الخطوة تصبح البيانات جاهزة إما للرسم أو للتمرير
إلى مراحل لاحقة في المشروع.
رسم البيانات
في الجزء الأخير من الصفحة، تعرض W3Schools دالة يمكن استخدامها
لرسم البيانات الناتجة في شكل Scatter Plot
باستخدام tfjs-vis.
هذا الرسم مفيد جدًا لأنه يسمح برؤية العلاقة بين
Horsepower وMPG بصورة بصرية،
كما يوضح أن الصفحة تجهز من البداية لإمكانية مقارنة
البيانات الأصلية بنتائج متوقعة لاحقًا عبر سلسلتين:
Original وPredicted.
ما الذي نتعلمه من هذه الصفحة؟
أهمية هذه الصفحة لا تأتي من كونها تحتوي على خوارزمية تدريب،
بل من كونها توضح خطوة حاسمة جدًا يستهين بها كثير من المبتدئين:
البيانات لا تدخل النموذج كما هي.
بل يجب أولًا:
- اختيار الخصائص المناسبة
- إزالة الخصائص غير المفيدة
- تصفية السجلات التالفة أو الناقصة
- تحويل البيانات إلى شكل بسيط وواضح
- عرضها بصريًا للتأكد من معناها قبل التدريب
وهذا يجعل مرحلة جمع البيانات وتنظيفها جزءًا أساسيًا
من أي مشروع تعلم آلة، وليس مجرد خطوة تحضيرية بسيطة.
الخلاصة
يوضح هذا الدرس أن مرحلة جمع البيانات في TensorFlow.js
تبدأ من بيانات خام تحتوي على خصائص كثيرة، ثم تمر عبر 3 خطوات أساسية:
استخراج الأعمدة المهمة فقط، إزالة السجلات ذات القيم الفارغة،
ثم جلب البيانات وعرضها في Scatter Plot. وفي هذا المثال
يتم التركيز على العلاقة بين Horsepower
وMiles_per_Gallon، مما يهيئ البيانات
لاستخدامها لاحقًا في بناء نموذج يتعلم من هذه العلاقة.
