This project was developed in the context of Udacity's Intro to Machine Learning with Pytorch Nanodegree.
The goal of this project is to developed a ML model (using supervised learning techniques) which is capable of predicting whether a person is likely to be a donor or not. This could help charity organizations in optmizing their marketing efforts, targeting only those who are more likely to donate. The target variable of this model is the person's income (<=50K or >50K). The key assumption being that those with a lower income are going to be less prone to donating.
As a first step, an analysis is conducted to determine which factors are the key-indicators of a person being more likely to earn a >50K salary. Then, three different supervised learning algorithms (Random Forest, Support Vector Machines, and Adaboost) are trained and evaluated, so that the best one can be used by the charity organization.
This project requires Python >=2.7 and the following Python libraries installed:
The main code for this project is located in the finding_donors.ipynb
notebook file. Additional supporting code for visualizing the necessary graphs can be found in visuals.py
.
The Report.html
file contains a snapshot of the main code in the jupyter notebook with all code cells executed.
In the terminal, navigate to the top-level project directory finding_donors_for_charity/
and run:
jupyter notebook finding_donors.ipynb
The modified census dataset consists of approximately 32,000 data points, with each datapoint having 13 features. This dataset is a modified version of the dataset published in the paper "Scaling Up the Accuracy of Naive-Bayes Classifiers: a Decision-Tree Hybrid", by Ron Kohavi. You may find this paper online, with the original dataset hosted on UCI.
Features
age
: Ageworkclass
: Working Class (Private, Self-emp-not-inc, Self-emp-inc, Federal-gov, Local-gov, State-gov, Without-pay, Never-worked)education_level
: Level of Education (Bachelors, Some-college, 11th, HS-grad, Prof-school, Assoc-acdm, Assoc-voc, 9th, 7th-8th, 12th, Masters, 1st-4th, 10th, Doctorate, 5th-6th, Preschool)education-num
: Number of educational years completedmarital-status
: Marital status (Married-civ-spouse, Divorced, Never-married, Separated, Widowed, Married-spouse-absent, Married-AF-spouse)occupation
: Work Occupation (Tech-support, Craft-repair, Other-service, Sales, Exec-managerial, Prof-specialty, Handlers-cleaners, Machine-op-inspct, Adm-clerical, Farming-fishing, Transport-moving, Priv-house-serv, Protective-serv, Armed-Forces)relationship
: Relationship Status (Wife, Own-child, Husband, Not-in-family, Other-relative, Unmarried)race
: Race (White, Asian-Pac-Islander, Amer-Indian-Eskimo, Other, Black)sex
: Sex (Female, Male)capital-gain
: Monetary Capital Gainscapital-loss
: Monetary Capital Losseshours-per-week
: Average Hours Per Week Workednative-country
: Native Country (United-States, Cambodia, England, Puerto-Rico, Canada, Germany, Outlying-US(Guam-USVI-etc), India, Japan, Greece, South, China, Cuba, Iran, Honduras, Philippines, Italy, Poland, Jamaica, Vietnam, Mexico, Portugal, Ireland, France, Dominican-Republic, Laos, Ecuador, Taiwan, Haiti, Columbia, Hungary, Guatemala, Nicaragua, Scotland, Thailand, Yugoslavia, El-Salvador, Trinadad&Tobago, Peru, Hong, Holand-Netherlands)
Target Variable
income
: Income Class (<=50K, >50K)