๐ฉบ Machine Learning diabetes prediction model using Support Vector Machine (SVM) classifier. Analyzes 8 medical features (glucose, BMI, age, etc.) from Pima Indian dataset to predict diabetes risk with 75-80% accuracy. Built with Python, scikit-learn, pandas. Includes data preprocessing, model training, and prediction system for diabetes..
๐ฉบ SVM Diabetes Prediction
๐ค Machine Learning Model for Diabetes Prediction using Support Vector Machine
Predicting diabetes risk using medical indicators with high accuracy SVM classification
๐ Table of Contents
- ๐ฏ Project Overview
- ๐ฌ Dataset Information
- ๐ Features
- โ๏ธ Installation
- ๐ป Usage
- ๐ง Machine Learning Approach
- ๐ Model Performance
- ๐ Project Structure
- ๐ Technical Implementation
- ๐ Results & Analysis
- ๐ ๏ธ Technologies Used
- ๐ค Contributing
- ๐ License
- ๐จโ๐ป Author
๐ฏ Project Overview
This project implements a Support Vector Machine (SVM) classifier to predict diabetes in patients based on medical diagnostic measurements. The model analyzes various health indicators to determine the likelihood of diabetes, providing a valuable tool for early diagnosis and preventive healthcare.
๐ฏ Objectives
- Build an accurate diabetes prediction model using SVM
- Analyze medical features that contribute to diabetes risk
- Provide a reliable tool for healthcare screening
- Demonstrate machine learning applications in medical diagnosis
๐ฅ Medical Significance
- Early Detection: Helps identify diabetes risk before symptoms appear
- Preventive Care: Enables timely intervention and lifestyle modifications
- Healthcare Efficiency: Assists medical professionals in screening processes
- Data-Driven Decisions: Provides objective risk assessment based on measurable factors
๐ฌ Dataset Information
The project uses the Pima Indian Diabetes Database, a well-known medical dataset for diabetes prediction research.
๐ Dataset Statistics
- Total Samples: 768 patients
- Features: 8 medical predictor variables
- Target Classes: Binary (Diabetic/Non-Diabetic)
- Class Distribution:
๐ฉบ Medical Features
| Feature | Description | Unit | Range | | ---------------------------- | ---------------------------- | ------- | ---------- | | Pregnancies | Number of times pregnant | Count | 0-17 | | Glucose | Plasma glucose concentration | mg/dL | 0-199 | | BloodPressure | Diastolic blood pressure | mmHg | 0-122 | | SkinThickness | Triceps skin fold thickness | mm | 0-99 | | Insulin | 2-Hour serum insulin | mu U/ml | 0-846 | | BMI | Body mass index | kg/mยฒ | 0-67.1 | | DiabetesPedigreeFunction | Diabetes pedigree function | Score | 0.078-2.42 | | Age | Age of patient | Years | 21-81 |
๐ฏ Target Variable
- Outcome:
0 = Non-Diabetic
- 1 = Diabetic
๐ Features
โจ Core Functionality
- ๐ฌ Data Preprocessing: Comprehensive data cleaning and standardization
- ๐ค SVM Classification: Linear kernel SVM implementation
- ๐ Model Evaluation: Accuracy assessment on training and testing sets
- ๐ฎ Prediction System: Real-time diabetes risk prediction
- ๐ Performance Metrics: Detailed model performance analysis
๐ ๏ธ Technical Features
- Data Standardization: StandardScaler for feature normalization
- Train-Test Split: Stratified sampling for balanced evaluation
- Cross-Validation Ready: Extensible for k-fold validation
- Modular Design: Clean, reusable code structure
โ๏ธ Installation
๐ Prerequisites
- Python 3.7 or higher
- pip package manager
- Jupyter Notebook (recommended)
๐ง Setup Instructions
- Clone the Repository
git clone https://github.com/NhanPhamThanh-IT/SVM-Diabetes-Prediction.git
cd SVM-Diabetes-Prediction
- Create Virtual Environment (Recommended)
python -m venv diabetes_env
# Windows diabetes_env\Scripts\activate
# macOS/Linux source diabetes_env/bin/activate
- Install Required Packages
pip install numpy pandas scikit-learn jupyter matplotlib seaborn
Or using requirements.txt:
pip install -r requirements.txt
- Launch Jupyter Notebook
jupyter notebook SVM-Diabetes-Prediction.ipynb
๐ฆ Required Dependencies
numpy>=1.21.0
pandas>=1.3.0
scikit-learn>=1.0.0
jupyter>=1.0.0
matplotlib>=3.4.0 # For visualization (optional)
seaborn>=0.11.0 # For advanced plots (optional)
๐ป Usage
๐ Quick Start
- Open the Jupyter Notebook
jupyter notebook SVM-Diabetes-Prediction.ipynb
- Run All Cells
๐ฎ Making Predictions
The model accepts 8 medical features to predict diabetes risk:
# Example prediction
import numpy as np
Input format: [Pregnancies, Glucose, BloodPressure, SkinThickness,
Insulin, BMI, DiabetesPedigreeFunction, Age]
sample_data = np.array([[5, 166, 72, 19, 175, 25.8, 0.587, 51]])
Standardize and predict
stddata = scaler.transform(sampledata)
prediction = classifier.predict(std_data)
if prediction[0] == 0: print("๐ข The person is not diabetic") else: print("๐ด The person is diabetic")
๐ Model Training Process
- Data Loading: Import diabetes dataset
- Exploratory Analysis: Statistical summary and data distribution
- Data Preprocessing: Feature standardization using StandardScaler
- Data Splitting: 80-20 train-test split with stratification
- Model Training: Linear SVM classifier training
- Evaluation: Accuracy calculation on both training and testing sets
- Prediction: Individual risk assessment system
๐ง Machine Learning Approach
๐ฌ Support Vector Machine (SVM)
Why SVM for Diabetes Prediction?
- Linear Separability: Finds optimal decision boundary between classes
- High Dimensional Data: Effective with multiple medical features
- Robust to Overfitting: Generalizes well on medical datasets
- Margin Maximization: Creates reliable classification boundaries
โ๏ธ Model Configuration
# SVM Classifier Setup
classifier = svm.SVC(kernel='linear')
Key Parameters:
- kernel='linear': Linear decision boundary
- C=1.0 (default): Regularization parameter
- gamma='scale': Kernel coefficient
๐ Data Preprocessing Pipeline
- Feature Extraction: Separate features (X) and target (Y)
- Standardization: StandardScaler normalization
scaler = StandardScaler()
Xscaled = scaler.fittransform(X)
- Train-Test Split: Stratified 80-20 split
Xtrain, Xtest, Ytrain, Ytest = traintestsplit(
X, Y, testsize=0.2, stratify=Y, randomstate=2
)
๐ Model Performance
๐ฏ Accuracy Metrics
The model achieves high accuracy on both training and testing datasets:
- Training Accuracy: ~78-80%
- Testing Accuracy: ~75-77%
- Balanced Performance: Good generalization without overfitting
๐ Performance Analysis
Strengths:
- โ High accuracy on medical diagnostic task
- โ Balanced performance across classes
- โ Fast prediction capability
- โ Interpretable linear decision boundary
- ๐ Dataset size limitations (768 samples)
- ๐ Potential for ensemble improvements
- ๐ Room for hyperparameter optimization
๐ Project Structure
SVM-Diabetes-Prediction/
โ
โโโ ๐ SVM-Diabetes-Prediction.ipynb # Main Jupyter notebook
โโโ ๐ diabetes_data.csv # Dataset file
โโโ ๐ README.md # Project documentation
โโโ ๐ LICENSE # MIT License
โ
โโโ ๐ docs/ # Documentation
โ โโโ ๐ dataset.md # Dataset documentation
โ โโโ ๐ง svm-algorithm.md # SVM algorithm details
โ
โโโ ๐ models/ # Saved models (optional)
โโโ ๐ค svmdiabetesmodel.pkl # Trained model
๐ Technical Implementation
๐งฉ Code Architecture
1. Data Import & Analysis
# Load and explore dataset
diabetesdataset = pd.readcsv('diabetes_data.csv')
diabetes_dataset.describe()
diabetesdataset['Outcome'].valuecounts()
2. Feature Engineering
# Separate features and target
X = diabetes_dataset.drop(columns='Outcome', axis=1)
Y = diabetes_dataset['Outcome']
3. Data Standardization
# Normalize features
scaler = StandardScaler()
Xstandardized = scaler.fittransform(X)
4. Model Training
# Train SVM classifier
classifier = svm.SVC(kernel='linear')
classifier.fit(Xtrain, Ytrain)
5. Model Evaluation
# Calculate accuracy
trainaccuracy = accuracyscore(Ytrain, classifier.predict(Xtrain))
testaccuracy = accuracyscore(Ytest, classifier.predict(Xtest))
๐ง Extensibility
The codebase is designed for easy extension:
- Additional Kernels: RBF, polynomial, sigmoid
- Hyperparameter Tuning: Grid search implementation
- Cross-Validation: K-fold validation
- Feature Selection: Recursive feature elimination
- Ensemble Methods: Voting classifiers
๐ Results & Analysis
๐ Key Findings
- Model Effectiveness: SVM demonstrates strong performance for diabetes prediction
- Feature Importance: Glucose level and BMI are strong predictors
- Generalization: Model maintains consistent accuracy across train/test sets
- Clinical Relevance: Results align with medical knowledge of diabetes risk factors
๐ฏ Medical Insights
- Glucose Levels: Primary indicator of diabetes risk
- BMI Correlation: Strong relationship with diabetes occurrence
- Age Factor: Increasing risk with age
- Family History: Diabetes pedigree function significance
๐ ๏ธ Technologies Used
๐ Core Technologies
- Python: Primary programming language
- Jupyter Notebook: Interactive development environment
- NumPy: Numerical computations and array operations
- Pandas: Data manipulation and analysis
- Scikit-learn: Machine learning algorithms and tools
๐ Libraries & Frameworks
import numpy as np # Numerical operations
import pandas as pd # Data manipulation
from sklearn.preprocessing import StandardScaler # Feature scaling
from sklearn.modelselection import traintest_split # Data splitting
from sklearn import svm # Support Vector Machine
from sklearn.metrics import accuracy_score # Model evaluation
๐ง Development Tools
- Git: Version control
- Markdown: Documentation
- CSV: Data storage format
๐ค Contributing
We welcome contributions to improve the diabetes prediction model! Here's how you can contribute:
๐ Ways to Contribute
- ๐ Bug Reports: Report issues or bugs
- ๐ก Feature Requests: Suggest new features or improvements
- ๐ Documentation: Improve project documentation
- ๐ฌ Model Enhancement: Optimize algorithms or add new models
- ๐ Data Analysis: Enhance data preprocessing or visualization
๐ Contribution Guidelines
- Fork the Repository
- Create Feature Branch
git checkout -b feature/your-feature-name
- Make Changes
- Add Tests (if applicable)
- Commit Changes
git commit -m "Add: Your descriptive commit message"
- Push to Branch
git push origin feature/your-feature-name
- Create Pull Request
๐ฏ Areas for Improvement
- Model Optimization: Hyperparameter tuning, cross-validation
- Additional Algorithms: Random Forest, Gradient Boosting, Neural Networks
- Data Visualization: Enhanced plots and statistical analysis
- Web Interface: Flask/Django web application
- Mobile App: Mobile diabetes risk calculator
- API Development: REST API for model predictions
๐ License
This project is licensed under the MIT License - see the LICENSE file for details.
MIT License
Copyright (c) 2025 NhanPhamThanh-IT
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
๐จโ๐ป Author
NhanPhamThanh-IT
- ๐ GitHub: @NhanPhamThanh-IT
- ๐ง Email: ptnhanit230104@gmail.com
๐ Acknowledgments
- Dataset Source: Pima Indian Diabetes Database
- Inspiration: Medical machine learning applications
- Community: Open source contributors and researchers
- Libraries: Scikit-learn, Pandas, NumPy development teams
โญ If you found this project helpful, please give it a star! โญ
๐ฉบ Advancing healthcare through machine learning ๐ค