The aim of this project was to build a multi-output regression pipeline to predict the coordinates (x, y) indicating where a particle of interest passed, based on data collected from signals in an RSD sensor (Resistive Silicon Detector).
A variety of preprocessing techniques, dimensionality reduction methods, and ML models were tested. A Random Forest Regressor achieved the best score, outperforming the competition baseline.
Best result: Euclidean Distance = 5.417 (baseline: 6.629)
Particles_RSD_Sensors_RegressionTask/
├── data/
│ ├── raw/ ← development.csv, evaluation.csv (not included)
|
├── models/ ← saved trained model (.pkl, generated on run)
├── notebooks/ ← EDA, experiments, model comparison
├── outputs/ ← predictions CSV and hexbin plot (generated on run)
├── reports/ ← full project report (PDF)
├── src/
│ ├── __init__.py
│ ├── data_loader.py ← loading and cleaning
│ ├── preprocessor.py ← feature selection and scaling
│ ├── trainer.py ← model training and evaluation
│ └── predictor.py ← inference and output generation
├── main.py ← full pipeline entry point
└── requirements.txt
Note:
data/raw/,models/, andoutputs/are not included in the repository due to file size from the actual training. Add your owndevelopment.csvandevaluation.csvtodata/raw/before running (find here: https://drive.google.com/drive/folders/1O8rqMLWaUhkS8Cn6uicfMAGA1DME1JPH?usp=sharing). Models and outputs are populated automatically bymain.py.
Base experiments, EDA, and model comparisons are documented in
notebooks/Report_ParticlesinRSDSensors.ipynb. This includes all
tested configurations: linear models (Linear Regression, Lasso, Ridge),
PCA experiments, Decision Tree, and Random Forest variants.
The final best model pipeline is implemented as a clean, reproducible
Python package in src/ and runs end-to-end via main.py.
# 1. Clone the repo
git clone https://github.com/siinvictus/RegressionTask_ParticlesinRSDSensors.git
cd Particles_RSD_Sensors_RegressionTask
# 2. Add your data
# Place development.csv and evaluation.csv in data/raw/
# 3. Create and activate virtual environment
python3 -m venv venv
source venv/bin/activate
# 4. Install dependencies
pip install -r requirements.txt
# 5. Run the pipeline
python main.pyOutput files will be saved to outputs/. Trained model will be saved to models/.
| Model | Features | Euclidean Distance |
|---|---|---|
| Linear Regression | 90 | 17.352 |
| Linear Regression | 60 | 18.157 |
| Linear + PCA (30 components) | 30 | 176.953 |
| Decision Tree | 90 | 8.370 |
| Random Forest | 90 | 5.585 |
| Random Forest (top 38 features, 150 estimators) | 38 | 5.417 |
Python, Pandas, NumPy, Scikit-learn, Matplotlib, Seaborn
Silva Bashllari & Baharak Qaderi — Politecnico di Torino
Creative Commons Attribution-NonCommercial 4.0 International (CC BY-NC 4.0)