# 7th Place — Zindi African Credit Scoring Challenge
This repository contains my **7th-place solution** for Zindi's July Study Jam
Series: African Credit Scoring Challenge. It retrains the complete pipeline
from the four official competition files and reproduces the accepted
submission `candidate85_policy_exact_same_loan_plus_hpoGhanaType2_p075.csv`.
| Result | Value |
|---|---:|
| Final leaderboard position | **7th** |
| Recorded Zindi F1 | **0.826405867** |
| Submission rows | **18,594** |
| Predicted positives | **910** |
| Submission SHA-256 | `7d5daa6d6bd1a79e097ab23a36ac3a6f5f1ca21ebda6326004bc5b511a5f08c9` |
**Quick navigation:** Competition ·
Metric · Run the solution ·
Understand the pipeline ·
Review features and models ·
Inspect reproducibility
## Competition overview
The official Zindi competition
asked participants to help a private African asset manager assess credit risk.
Financial institutions need reliable default predictions to approve suitable
borrowers, price risk, control losses, and expand lending into new markets.
### Problem statement
The task was to build a robust, generalisable binary-classification model that
predicts whether a loan will default from anonymised customer, loan, lender,
repayment, and economic information:
- `target = 1` means that the loan defaults.
- `target = 0` means that the loan does not default.
- Each submitted row must contain the official `ID` and a binary `target`.
Although the business problem is expressed as estimating default likelihood,
the competition submission and F1 evaluation use the final binary decision.
For the top-ranked solutions, the broader goal also included turning model
outputs into understandable risk bands and a scalable credit-scoring function.
### Why the problem is challenging
- **Severe class imbalance:** only 1,258 of 68,654 Train rows are defaults
(1.83%). A model that predicts every loan as non-default would be highly
accurate but operationally useless and would receive …