**الهدف**
توقّع عمر السلطعون (بالأشهر) باستخدام السمات الجسدية. هذه مهمة انحدار، حيث المتغير المستهدف هو `العمر`.
? **الدافع**
توقّع عمر السلطعون بدقة يساعد في:
* تحسين توقيت الحصاد
* تقليل التكاليف التشغيلية
* تعظيم الأرباح في صناعة تربية السلطعون
**شرح ميزات البيانات**
تتضمن البيانات قياسات جسدية مختلفة للسلطعون، بهدف توقّع عمره:
| الميزة | الوصف |
| ----------- | ------------------------------------------------ |
| الجنس | فئوية: 'M' ذكر، 'F' أنثى، 'I' غير محدد |
| الطول | أطول طول للصدفة (بالقدم) |
| القطر | عمودي على الطول (بالقدم) |
| الارتفاع | ارتفاع السلطعون بالكامل (بالقدم) |
| الوزن | الوزن الكلي للسلطعون (بالأونصة) |
| وزن اللحم | وزن اللحم فقط (بالأونصة) |
| وزن الأحشاء | وزن الجهاز الهضمي (بالأونصة) |
| وزن الصدفة | وزن الصدفة بعد التجفيف (بالأونصة) |
| العمر | المتغير الهدف، يُقدّر بعدد حلقات النمو (بالأشهر) |
? **خطوات المعالجة المسبقة**
تهدف إلى تجهيز البيانات للنمذجة:
1. **التعامل مع القيم الفارغة**
* تم التحقق باستخدام `df.isnull().sum()`
* في حال وجودها، يتم حذفها أو تعويضها.
2. **تصحيح نوع البيانات**
* تحويل الأعمدة الرقمية إلى نوع `float` لضمان العمليات الحسابية الدقيقة.
3. **إزالة القيم الشاذة**
* باستخدام الرسوم الصندوقية والمعايير الإحصائية.
* القيم خارج 1.5 × IQR من الربع الأول أو الثالث تم اعتبارها شاذة.
* تمت إزالة القيم الشاذة لتجنّب انحراف النموذج.
4. **ترميز السمة الفئوية**
* تم تحويل الجنس باستخدام One-Hot Encoding إلى 3 أعمدة: `Sex_F`، `Sex_I`، `Sex_M`.
5. **تقييس الميزات**
* تم استخدام MinMaxScaler لتطبيع القيم في النطاق \[0, 1].
* هذا يساعد في تسريع وفعالية تعلم النماذج مثل KNN وSVM.
**هندسة الميزات**
لتحسين الأداء، تم إنشاء ميزات جديدة من الحالية:
* `sqrt(abs(weight))`: لتقليل انحراف وزن السلطعون
* `height²`: لتمثيل العلاقة غير الخطية
* `crab_area = 4π × diameter²`: لتقدير مساحة السطح
* `cylinder_size = area × height`: لتقدير الحجم
* `sphere_size = (4/3)π × diameter³`: تقدير آخر للحجم
**تحليل ارتباط الميزات**
لفهم علاقة الميزات بالعمر المستهدف، تم استخدام خريطة حرارية للارتباط.
النقاط المهمة:
* **أقوى الارتباطات:** الطول، القطر، الارتفاع، والوزن يرتبطون إيجابياً بالعمر
* **ضعيفة أو سلبية:** وزن الصدفة، وزن الأحشاء، والجنس (F/I) تأثيرهم محدود
* ساعد التحليل في اختيار الميزات وتعديلها
**تقسيم البيانات**
تم تقسيم البيانات إلى:
* مجموعة تدريب (70%)
* مجموعة اختبار (30%)
لضمان تدريب النموذج على بيانات، واختباره على بيانات جديدة لقياس الأداء الفعلي.
? **تدريب وتقييم النماذج**
**مقاييس التقييم** لكل نموذج:
* MSE (متوسط مربع الخطأ): الأقل أفضل
* MAE (متوسط الخطأ المطلق): الأقل أفضل
* R²: كلما اقترب من 1 كان النموذج أفضل
**أفضل النماذج**
| النموذج | البيانات | MSE | MAE | R² |
| ---------------------------- | -------- | ---- | ---- | ----- |
| SVR (بـ kernel متعدد الحدود) | تدريب | 4.29 | 1.43 | 0.564 |
| SVR (بـ kernel متعدد الحدود) | اختبار | 5.34 | 1.55 | 0.539 |
| الانحدار الخطي | تدريب | 4.31 | 1.50 | 0.562 |
| الانحدار الخطي | اختبار | 5.09 | 1.58 | 0.561 |
| شجرة قرار (عمق = 7) | تدريب | 3.36 | 1.30 | 0.659 |
| شجرة قرار (عمق = 7) | اختبار | 6.65 | 1.75 | 0.426 |
| KNN (k=3) | تدريب | 2.75 | 1.17 | 0.721 |
| KNN (k=3) | اختبار | 6.33 | 1.75 | 0.454 |
*والعديد من التقييمات الإضافية تظهر في الصور.*
**النماذج ضعيفة الأداء**
| النموذج | R² على بيانات الاختبار |
| ------------------------- | ---------------------- |
| Gradient Boosting (عدد=2) | 0.136 |
| AdaBoost (عدد=7) | 0.376 |
| Lasso (alpha=0.1) | 0.393 |
**أبرز النتائج**
* نموذج KNN (k=3) قدّم أفضل أداء على التدريب، لكنه يُحتمل أن يكون مفرط التعلّم.
* الانحدار الخطي كان متوازن الأداء في التعميم.
* شجرة القرار تعمل بشكل أفضل عند تعميقها، لكنها قد تتجاوز التعلم.
* النماذج التجميعية (مثل AdaBoost و GB) لم تحقق أداء جيد، وقد تحتاج لضبط معلمات.
**عرض تجريبي**
[رابط المشروع](https://crabageprediction...)
**الخلاصة**
هذا المشروع استعرض نماذج انحدار متعددة لتوقّع عمر السلطعون من خصائصه الجسدية.
أفضل النماذج:
* KNN (k=3): أقل خطأ في التدريب
* الانحدار الخطي: أداء متوازن وتعميم جيد
* SVR (بـ kernel متعدد الحدود): دقة متوازنة بين التدريب والاختبار