Primary competition visual

Google Johannesburg Data Challenge: Service Delivery Hotspots

R50 000 ZAR
Completed (12 days ago)
Data Analysis
Feature Engineering
Multi-label Classification
Machine Learning
115 joined
100 active
Starti
Jun 29, 26
Closei
Jun 29, 26
Reveali
Jun 29, 26
About

The dataset will be released at the start of the hackathon.

Participants are welcome to use a Google Colab Notebook for model development. Those finishing in the top 10 will be required to submit a well-written, fully documented Colab Notebook of their solution for code review.

Your task is to predict five binary labels - one for each of the following services: water, sanitation, refuse collection, energy, and education. Each label indicates whether a household faces a service delivery gap. This is a multi-label classification challenge given that these gaps tend to occur together. The best solutions should look beyond each label in isolation and capture the broader patterns of service needs.

The dataset is derived from the GCRO (Gauteng City-Region Observatory) Quality of Life Survey, conducted across all five district municipalities of Gauteng province. The full survey covered 13,817 adult respondents; this challenge uses a processed subset of 13,493 records split across train, validation, and test sets.

27 features are provided, drawn from the following themes:

  • Housing
  • Geography
  • Demographics
  • Income
  • Social Support
  • Household composition
  • Migration
  • Employment
  • Amenity access
  • Dwelling
  • Assets
  • Service continuity
  • Governance perceptions

Each label takes the value 1 (service gap) or 0 (has access). A single respondent can face multiple service gaps at the same time - predicting all five labels simultaneously is the core challenge. The labels are:

  • no_water_access: No piped water on-site, or piped water but supply disrupted most days
  • no_sanitation_access: No flush or chemical toilet
  • no_refuse_access: No formal weekly refuse removal
  • no_energy_access: No access to any form of electricity
  • no_education_access: Household has school-age children and no school is reachable on foot (proximity is the respondent’s self-reported perception, not a measured geographic distance)

Note:

val.csv is provided with labels so you can evaluate your model locally and tune your decision thresholds - not as extra training data.

The intended split is:

  • train.csv - fit your model here
  • val.csv - evaluate and tune thresholds here (do not train on this)
  • test.csv - generate your submission here

The starter notebook shows the correct pattern: train on train.csv, call predict_proba on val.csv, and use the val labels only to find the probability threshold per label that maximises F1. Apply those thresholds to your test.csv predictions before submitting.

You may use only the datasets provided.

Files
Description
Files
A starter notebook to help you load the data, understand the structure, and generate your first submission.
Sample submission file from starter notebook.
Survey features and five service-gap target labels for model training.
A full description of every feature column in the dataset, including definitions, data types, and value ranges where applicable.
A labeled holdout set with the same structure as Train.csv, not used for leaderboard scoring. Use it to tune your classification thresholds per target before submitting — this matters significantly given the class imbalance across the five labels.
Survey features only, without target labels; your model must generate predictions for these rows.