# Predicting Soil Health from Infrared Spectroscopy for African Agriculture
## Overview
This project implements multi-target regression models to predict soil properties from mid-infrared (MIR) spectral measurements. The solution addresses the Africa Soil Property Prediction Challenge, predicting five continuous soil properties simultaneously:
- **Ca** (Calcium)
- **P** (Phosphorus)
- **pH** (Soil acidity/alkalinity)
- **SOC** (Soil Organic Carbon)
- **Sand** (Sand content)
## Problem Definition
Given 3,578 mid-infrared spectral absorption measurements per soil sample plus spatial coordinates (latitude, longitude) and depth, the goal is to predict five continuous soil properties simultaneously. This is a classic multi-target regression problem on high-dimensional spectral data—a "wide" dataset with far more features than samples.
## Dataset
The data comes from the Africa Soil Property Prediction Challenge on Kaggle:
- **URL**:
kaggle.com
- **Features**: 3,578 mid-infrared spectral measurements (m0, m1, ..., m3577) per sample
- **Additional features**: Spatial coordinates (Latitude, Longitude) and Depth
- **Targets**: 5 continuous soil properties (Ca, P, pH, SOC, Sand)
## Project Structure
```
.
├── README.md # This file
├── requirements.txt # Python dependencies
├── train.py # Main training script
├── predict.py # Prediction script
├── src/ # Source code
│ ├── __init__.py # Package initialization
│ ├── data_preprocessing.py # Data loading and preprocessing
│ ├── models.py # Multi-target regression models
│ └── feature_engineering.py # Feature engineering utilities
├── data/ # Data directory (not included in repo)
│ ├── train.csv # Training data
│ └── test.csv # Test data
├── models/ # Saved models directory
└── notebooks/ # Jup …