{
  "fetched_at": "2026-10-19T21:37:01Z",
  "source_url": "https://www.kaggle.com/competitions/ds3-predictive-modeling-challenge/data",
  "pages": [
    {
      "name": "rules",
      "content": "# First, work individually\n\nLike a Sprint Challenge, work individually — until you make a submission that scores at least 60% accuracy on the public leaderboard.\n\nAlso, for this first submission, do _not_ use online resources about the water pumps challenge, such as:\n\n- [DrivenData discussion forum](https://community.drivendata.org/c/pump-it-up-data-mining-the-water-table)\n- [DataCamp course](https://www.datacamp.com/community/open-courses/drivendata-water-pumps-challenge)\n\n# Then, work collaboratively\n\nAfter you make a submission that scores at least 60% accuracy on the public leaderboard, you are encouraged to collaborate with your cohort and use any online resources!\n\nYou'll still submit your predictions individually. Also, you cannot use external data beyond what's provided here. But, you are free to discuss feature engineering ideas and modeling techniques.\n\n# Deliverables\n\n_The project has three parts. For each part, we've listed what's required to pass the Sprint Challenge, and what's recommended but not required._\n\n### Predictions\n\nDue Thursday at 4:15pm Pacific.\n\nRequired: 60% accuracy on public leaderboard. Beat the majority class baseline. Work individually on this submission.\n\nRecommended: 80% accuracy on private leaderboard. Collaborate as a cohort for improved scores.\n\n### Code\n\nRequired: Write Python code to train your model and make predictions. Push your code to GitHub.\n\nRecommended: Format your notebook(s) with Markdown, comments, and visualizations.  You could use this [style guide](https://www.dataquest.io/blog/data-science-project-style-guide/).\n\n### Communication\n\nRequired: Publish a blog post. Include 2+ visualizations. \n\nRecommended: Present to your cohort, up to 2 minutes. \n\nIn your blog post, include 3+ visualizations, all with titles. Include at least one of these visualization types:\n\n- Partial dependence plot\n- Shapley values plot\n- Plot with explanatory title (full sentence communicating an insight you want your audience to know) plus additional text (subtitle and/or annotation)\n- Animation",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "data-description",
      "content": "# File descriptions\n - `train_features.csv` : the training set features\n - `train_labels.csv` : the training set labels\n - `test_features.csv` : the test set features\n - `sample_submission.csv` :  a sample submission file in the correct format\n\n# Features\n\nYour goal is to predict the operating condition of a waterpoint for each record in the dataset. You are provided the following set of information about the waterpoints:\n\n- `amount_tsh` : Total static head (amount water available to waterpoint)\n- `date_recorded` : The date the row was entered\n- `funder` : Who funded the well\n- `gps_height` : Altitude of the well\n- `installer` : Organization that installed the well\n- `longitude` : GPS coordinate\n- `latitude` : GPS coordinate\n- `wpt_name` : Name of the waterpoint if there is one\n- `num_private` :  \n- `basin` : Geographic water basin\n- `subvillage` : Geographic location\n- `region` : Geographic location\n- `region_code` : Geographic location (coded)\n- `district_code` : Geographic location (coded)\n- `lga` : Geographic location\n- `ward` : Geographic location\n- `population` : Population around the well\n- `public_meeting` : True/False\n- `recorded_by` : Group entering this row of data\n- `scheme_management` : Who operates the waterpoint\n- `scheme_name` : Who operates the waterpoint\n- `permit` : If the waterpoint is permitted\n- `construction_year` : Year the waterpoint was constructed\n- `extraction_type` : The kind of extraction the waterpoint uses\n- `extraction_type_group` : The kind of extraction the waterpoint uses\n- `extraction_type_class` : The kind of extraction the waterpoint uses\n- `management` : How the waterpoint is managed\n- `management_group` : How the waterpoint is managed\n- `payment` : What the water costs\n- `payment_type` : What the water costs\n- `water_quality` : The quality of the water\n- `quality_group` : The quality of the water\n- `quantity` : The quantity of water\n- `quantity_group` : The quantity of water\n- `source` : The source of the water\n- `source_type` : The source of the water\n- `source_class` : The source of the water\n- `waterpoint_type` : The kind of waterpoint\n- `waterpoint_type_group` : The kind of waterpoint\n\n# Labels\n\nThere are three possible values:\n\n- `functional` : the waterpoint is operational and there are no repairs needed\n- `functional needs repair` : the waterpoint is operational, but needs repairs\n- `non functional` : the waterpoint is not operational",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "Description",
      "content": "![](http://drivendata.materials.s3.amazonaws.com/pumps/pumping.jpg)\n\n# Can you predict which water pumps are faulty?\n\nUsing data from Taarifa and the Tanzanian Ministry of Water, can you predict which pumps are functional, which need some repairs, and which don't work at all? Predict one of these three classes based on a number of variables about what kind of pump is operating, when it was installed, and how it is managed. A smart understanding of which waterpoints will fail can improve maintenance operations and ensure that clean, potable water is available to communities across Tanzania.\n\nThis predictive modeling challenge comes from [DrivenData](https://www.drivendata.org/competitions/7/pump-it-up-data-mining-the-water-table/), an organization who helps non-profits by hosting data science competitions for social impact. The competition has open licensing: \"The data is available for use outside of DrivenData.\" We are reusing the data on Kaggle's InClass platform so we can run a weeklong challenge just for your Lambda School Data Science cohort.  \n\nThe data comes from the Taarifa waterpoints dashboard, which aggregates data from the Tanzania Ministry of Water. In their own words:\n\n<blockquote>Taarifa is an open source platform for the crowd sourced reporting and triaging of infrastructure related issues. Think of it as a bug tracker for the real world which helps to engage citizens with their local government. We are currently working on an Innovation Project in Tanzania, with various partners.</blockquote>\n\n![](http://drivendata.materials.s3.amazonaws.com/pumps/taarifadashboard.png)",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "Evaluation",
      "content": "# Evaluation Metric\n\nThe metric used for this competition is classification accuracy, which calculates the percentage of rows where the predicted class ŷ  in the submission matches the actual class, y in the test set. The maximum is 1 and the minimum is 0. The goal is to maximize the classification accuracy.\n\n\n# Submission Format\n\nThe format for the submission file is simply the row id and the predicted label (for an example, see `sample_submission.csv` on the data download page.\n\nFor example, if you just predicted that all the waterpoints were functional you would have the following predictions:\n\n<pre>id,status_group\n50785,functional\n51630,functional\n17168,functional\n45559,functional\n49871,functional\n</pre>\n\nYour code to generate a submission file may look like this: \n<pre># estimator is your model or pipeline, which you've fit on X_train\n\n# X_test is your pandas dataframe or numpy array, \n# with the same number of rows, in the same order, as test_features.csv, \n# and the same number of columns, in the same order, as X_train\n\ny_pred = estimator.predict(X_test)\n\n\n# Makes a dataframe with two columns, id and status_group, \n# and writes to a csv file, without the index\n\nsample_submission = pd.read_csv('sample_submission.csv')\nsubmission = sample_submission.copy()\nsubmission['status_group'] = y_pred\nsubmission.to_csv('your-submission-filename.csv', index=False)\n</pre>",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    }
  ]
}