كيفية إنشاء ميزات جديدة لمجموعة التدريب
أحيانا قد نصادف أن الميزات (Features) التي تحصلنا عليها غير كافية لتميز مختلف عناصر الداتا التي معنا و أن العناصر متداخلة فيما بينها. مثلا لدينا ميزتان (x, y) لفئتين (C1, C2) لما نظهرهما على المستوى نجد تداخل فيما بينهما. نظريا في مجال تعلم الألة يمكن دمج الميزات لإنشاء ميزات أخرى إضافية مساعدة على التميز بين مختلف الفئات. مثلا في هذا المثال نعتبر (x+y) ميزة ثالثة و نتحول من المستوى إلى 3D و هذا يمنحنا زاوية أخرى لرؤية الداتا.
في مكتبة (Scikit-Learn ) توفر لنا إمكانية إنشاء ميزات جديدة بواسطة الكلاس (PolynomialFeatures) حيث نحدد نحن درجة كثير الحدود و هو يقوم بدمج الميزات بالشكل التالي مثلا من أجل ميزتين و الدرجة 2 :
(x, y) = 1 + x + y + pow(x, 2) + xy + pow(y, 2)
في الصورة مثال عن ذلك. حيث في السطر 5 شكلنا داتا عشوائية من 4 مجموعة من أجل (clustering) ب 50000 مثال و 3 ميزات بواسطة الكلاس (make_blobs). ثم نظهرها بواسطة (mirapy) ب 3D في السطر 9، حيث نشاهد التداخل واضح على الصورة.
في السطر 11 نستدعي الكلاس (PolynomialFeatures) و نحدد الدرجة التي نريد و كانت في هذا المثال 3. بعد التنفيذ و إظهار النتيجة نشاهد أن عدد الميزات (Features ) صار (new features = 8) .
الكاتب : هشام فلواط - hichem felouat
تابعوا مقالاتي على الهاشتاج : #هشام_فلواط
رابط الكود هنا
Comments
Post a Comment