في هذا المقال سنتعرف على WEKA  وكيفية بناء ملف بصيغة .arff من خلالها.


ماهي ويكا (WEKA)؟

عبارة عن حزمة برمجية مفتوحة المصدر تحتوي على مجموعة من الخوارزميات التي تساعد على تحليل واستخراج البيانات (Data mining). هذه الخوارزميات يمكن تطبيقها بسهولة على مجموعة من البيانات إما بشكل مباشر من خلال واجهة برنامج WEKA. أو من خلال استدعاؤها عن طريق (Java code) باستخدام classes الخاصة بها، وذلك من خلال تحميل المكتبة الخاصة .WEKA وأولى خطوات التحليل باستخدامWEKA  هي استخدام بيانات ذات صيغة قابلة للفهم من قبل WEKA. أحد هذه الصيغ هي صيغة. arff

ما هي صيغة (arff.)؟

كلمة arff هي اختصار (Attribute-Relation File Format) . وهو عبارة عن أحد صيغ الملفات التي يتعامل بها WEKA لتحليل البيانات. يمكن أن نقول بأن ملف (arff.) شبيه بجدول يحوي مجموعة من البيانات. ممثلة بعدد من الأعمدة والصفوف. حيث أن الأعمدة تمثل Attributes أو الصفات بينما الصفوف تمثل Instances أو نماذج. فالنموذج الواحد يتكون من عدة صفات. مثلا لو كنا ندرس حالة الطقس وإمكانية إقلاع الطائرة فإذا كانت صفات الطقس أنه حار والرطوبة  طبيعية و بدون رياح فالطائرة يمكن أن تقلع. بينما لو كان الطقس بارد والرطوبة مرتفعة والرياح سريعة فالطائرة لا يمكن أن تقلع. كما هو مبين في الجدول​.


Take off

Windy

Humidity

Temperature

Yes

False

Normal

​Hot

No

True

High

Cold

 

Attributesهي كل من {Temperature, Humidity, Windy, Take off}.

Instanceكل صف في الجدول يحتوي على قيم لجميع Attributes الموجودة يمثل نموذج أو Instance.

مكونات ملف(arff.)​:

يتكون ملف (arff.) من جزئين رئيسيين.

1. Header: يتكون أيضا من جزئين رئيسيين:

   1. Relation Name: يقصد بها اسم العلاقة والذي يمكن أن يكون أي اسم من اختيارك.

   2. Attributes: يمكن أن تكون أحد الأشكال التالية:

    • Numeric (رقمي): تأخذ البيانات قيم لأعداد صحيحه وغير صحيحة. 

    • Nominal (أسماء): تأخذ البيانات قيم معينة ومحددة مثل أن نقول أن الأكل إما أن يكون صحي أو غير صحي. إذا فالأكل إما أن يأخذ قيمة صحي أو قيمة غير صحي.

    • String (نص): تأخذ البيانات قيمة نصية ذات حجم غير محدد

    • Date (تاريخ): تأخذ التواريخ كقيم لها.

    • Relational (علاقات).

2. Data:

يحوي هذا الجزء على النماذج. ويكون كل نموذج عبارة عن مجموعة من Attributes التي تمثل Instance ويكون ترتيب هذه Attributes بنفس ترتيبها في جزء Header. الصورة التالية تمثل ​تركيب ملف (arff.).



ولكتابة ملف (arff.) بشكل يدوي يجب اتباع القاعدة التالية:



الصورة التالية هي مثال لملف (arff.) يحوي بيانات للتنبؤ برأي المغردين بجهاز آيفون.



نلاحظ أن البيانات بعد كلمة @DATA تكون مكتوبة على هيئة  ((Comma-Separated Values(CSV)

خطوات بناء ملف (arff.) باستخدام: WEKA Package:

حفاظًا على الوقت والجهد فمن الأفضل كتابة كود برمجي يقوم بتعبئة و بناء ملف .arff بشكل تلقائي. توفر WEKA مكتبة جاهزة فيها الكثير من classes التي تسهل عملية بناء ملف  .arff والتصنيف وهي:​​

  • Attribute: يستخدم لبناء الصفات.
  • FastVector: يستخدم لإنشاء فيكتور فارغ بقيمة أولية تساوي صفر.
  • Instance:  يستخدم لبناءinstance .
  • Instances: يستخدم لجمع مجموعة من نوعinstance.
  • بناءًعلى classes المتوفرة في مكتبة WEKA سنتبع الخطوات التالية لبناء ملف arff:
  • 1. إنشاء (Attributes) مع تحديد نوع كل صفة وفي حال كانت من نوع Nominal فيجب تحديد القيم. في هذه الخطوة سنستخدم كل من      كلاس Attribute وFastVector.
  • 2. بناء Relation وإدخال البيانات داخلها بالترتيب المناسب. في هذه الخطوة سنستخدم كلاس Instances ويتم تحديد class index من خلال استدعاء setClassIndex() وإعطائها مكان class Attribute وهو Attribute يتم تصنيف البيانات على أساسه. ودائمًا يكون آخر Attribut
  • 3. تعبئة قسم Data في ملف( arff.) في هذه الخطوة سنستخدم كلاس Instance.

  • ملاحظة:
  •   - تعتبر كل من Relation, @Attribute, @Data كلمات ثابتة.
  •   - عندما يتم إنشاء صفة (Attribute) فلا يمكن تعديلها.
  •   - يجب أن تضع class index للبيانات المراد تحليلها قبل أن يتم إرسالها إلى المصنف Class index هو مكان Attribute الذي ستصنف البيانات على أساسه.