This project applies unsupervised machine learning to the UCI Census Income dataset, using clustering techniques to segment the US population into meaningful demographic groups. These insights can inform targeted marketing strategies and socio-economic policy decisions.
- Data Integration: Combines and preprocesses Census Income train & test datasets
- Exploratory Data Analysis: Identifies data quality issues, outliers, and feature distributions
- Feature Engineering: Encodes categorical variables and normalizes numerical features for clustering
- Clustering Implementation: Uses KMeans clustering with optimal cluster determination via silhouette score
- Visualization: Employs Principal Component Analysis (PCA) for cluster visualization
- Insight Generation: Analyzes cluster composition to extract actionable demographic patterns
- Source: UCI Machine Learning Repository – Census Income
- Files:
adult.dataandadult.test - Size: ~48,000 records with 15 features
- Features: Demographic and economic attributes including:
- Age, workclass, education, marital status
- Occupation, race, sex, hours-per-week
- Capital gain/loss, native country
- Income (excluded from clustering analysis)
- Python 3.x
- Core Libraries:
pandas,numpy- Data processing and manipulationscikit-learn- Preprocessing, KMeans, PCA, evaluation metricsmatplotlib,seaborn- Data visualization and plotting
- Combine training and test datasets
- Handle missing values and inconsistent categories
- Encode categorical features using appropriate techniques
- Scale numerical features for clustering optimization
- Remove duplicates and handle outliers
- Analyze feature distributions and correlations
- Identify demographic trends and patterns
- Visualize data quality and completeness
- Implement KMeans clustering algorithm
- Optimize cluster count using silhouette score analysis
- Generate 2D cluster visualizations using PCA
- Validate clustering results
- Summarize key statistics for each cluster
- Analyze demographic characteristics (age, gender, marital status)
- Examine economic patterns (working hours, occupation types)
- Extract actionable insights for segmentation strategies
- Optimal Clusters: 3 clusters identified through silhouette analysis
- Distinct Segments: Each cluster shows unique demographic and economic characteristics
- Actionable Insights: Clear differences in age groups, working patterns, and socio-economic status
- Business Value: Enables targeted marketing and policy development for specific population segments
Census_Clustering/
├── census-income-clustering.ipynb # Main analysis notebook
├── Analysis_report.pdf # Detailed project report
├── README.md # Project documentation
pip install pandas numpy scikit-learn matplotlib seaborn jupyter-
Clone the repository:
git clone https://github.com/your-username/census-income-clustering.git cd census-income-clustering -
Install dependencies:
pip install -r requirements.txt
-
Launch Jupyter notebook:
jupyter notebook census-income-clustering.ipynb
-
Download dataset (if not included):
- Visit the UCI ML Repository
- Download
adult.dataandadult.testfiles - Place them in the
data/directory
- Dua, D. and Graff, C. (2019). UCI Machine Learning Repository. Irvine, CA: University of California, School of Information and Computer Science.
- Census Income Dataset: https://archive.ics.uci.edu/ml/datasets/Census+Income
Harmanan Kohli
Data Scientist & Machine Learning Enthusiast
Description: Customer Segmentation using Census Income Data: Unsupervised clustering with KMeans and PCA to reveal demographic patterns for targeted marketing and policy insights.
Topics: machine-learning clustering customer-segmentation kmeans unsupervised-learning pca data-analysis census-data python scikit-learn demographics population-analysis