مشروع Machine Learning متكامل من الألف للياء، بيصنّف الأجرام الفلكية إلى 3 فئات: Star و Galaxy و Quasar (QSO)، بالاعتماد على بيانات Sloan Digital Sky Survey (SDSS17) اللي فيها 100,000 مشاهدة.
اللي اتعمل في المشروع:
- تنظيف البيانات وعمل Exploratory Data Analysis (EDA) كامل: توزيع الـ classes، الـ correlations، الـ outliers، والـ visualizations التفاعلية بـ Plotly.
- Feature Engineering مبني على معلومات فلكية: Color Indices (الفروق بين الـ filters)، ملخصات السطوع، وخصائص مشتقة من الـ redshift.
- Pipeline بـ scikit-learn مبني بدون Data Leakage: الـ split قبل أي fit، والـ preprocessing بيتعمله fit على الـ training set بس.
- مقارنة 12 موديل: Logistic Regression و Decision Tree و Random Forest و Gradient Boosting و AdaBoost و KNN و SVM و XGBoost و LightGBM، بالإضافة لـ 3 Ensembles.
- تتبع التجارب بـ MLflow (parameters و metrics لكل موديل).
- Hyperparameter Tuning بـ Halving Random Search مع Early Stopping لـ XGBoost و LightGBM.
- تقييم المشروع بـ metrics مناسبة للـ imbalanced data: Macro F1 و Confusion Matrix و ROC-AUC (One-vs-Rest).
- النشر (Deployment): REST API بـ FastAPI مع Docker، وتطبيق ويب تفاعلي بـ Streamlit بيستقبل قياسات الجرم ويرجّع التصنيف مع نسب الاحتمالات.
النتائج: دقة (Accuracy) حوالي 97-98% و Macro F1 حوالي 0.97 على الـ validation set في أقوى الموديلات.
ملحوظة: الموديل بيعتمد على قيمة الـ redshift (قياس spectroscopic)، فمش مناسب للأجرام اللي عندها photometry بس.