2023 · Academic project — data processing, modeling, evaluation
Satellite Land Classification
A big-data pipeline that processes multi-source satellite imagery with PySpark and runs supervised models for multi-class land classification, reaching 73.2% accuracy.
- Status
- Archived
- Stack
- Python · PySpark · scikit-learn · XGBoost · Matplotlib
- Areas
- Computer Vision · Data Engineering
- 73.2%Multi-class accuracy
- 3 sourcesLandsat 8, Sentinel-1 & -2
- PySparkDistributed processing
Context
Land-cover classification from satellite imagery is a real workload: the raw data is large, multi-band, and comes from sensors with different resolutions and revisit times. It is a good place to practice distributed data handling rather than toy in-memory ML.
Problem
Combine imagery from three satellite sources into one labeled dataset and train models that assign each parcel to a land-cover class.
Approach
- Data. Pulled imagery from Radiant MLHub — Landsat 8, Sentinel-1, and Sentinel-2 — covering optical and radar bands.
- Processing. Used PySpark to align, resample, and stack bands into feature vectors per location, and to join imagery with ground-truth labels at scale.
- Modeling. Trained and compared several supervised classifiers (scikit-learn and XGBoost), tuning on a held-out split.
- Evaluation. Reported multi-class accuracy and per-class confusion to see which land types the sensors could and couldn’t separate.
Results
The best model reached 73.2% multi-class accuracy. The instructive part was the error structure: classes with distinct radar or spectral signatures separated cleanly, while visually similar vegetation classes drove most of the confusion — a limitation of the input bands, not the classifier.