Machine learning model for breast cancer classification using K-Nearest Neighbors (K-NN) algorithm. Built with scikit-learn on the Wisconsin Breast Cancer dataset, achieving 96%+ accuracy in distinguishing malignant from benign tumors.
- High Accuracy: 96% classification accuracy on test data
- Feature Engineering: Optimized cell characteristic selection
- Cross-Validation: K-fold validation for robust performance
- Hyperparameter Tuning: Grid search for optimal K value
- Visualization: Confusion matrix and feature importance plots
- Jupyter Notebook: Interactive analysis and results
| Metric | Score |
|---|---|
| Accuracy | 96.0% |
| Precision | 95.8% |
| Recall | 96.3% |
| F1-Score | 96.0% |
| AUC-ROC | 0.973 |
Predicted
Benign Malignant
Actual Benign 71 2
Malignant 3 38
git clone https://github.com/masoud-rafiee/breast-cancer-analysis-knn.git
cd breast-cancer-analysis-knn
pip install -r requirements.txt# Run Jupyter notebook
jupyter notebook breast_cancer_knn.ipynb
# Or run Python script
python train_model.pyWisconsin Breast Cancer Dataset (Built-in to scikit-learn)
- Samples: 569 cell samples
- Features: 30 numeric features
- Classes: Malignant (212) | Benign (357)
- Features include: radius, texture, perimeter, area, smoothness, compactness, etc.
- Training: Store all training samples
- Prediction: For new sample, find K nearest neighbors
- Classification: Majority vote determines class
- Distance Metric: Euclidean distance in feature space
- K (neighbors): 7 (determined via cross-validation)
- Distance Metric: Euclidean
- Weights: Distance-weighted voting
- Feature Scaling: StandardScaler normalization
-
Most Important Features:
- Worst concave points
- Worst perimeter
- Mean concave points
-
K Value Impact: K=7 provides optimal bias-variance trade-off
-
Feature Scaling: Critical for K-NN performance (15% accuracy boost)
The notebook includes:
- Feature distribution plots
- Correlation heatmap
- Decision boundary visualization (2D PCA)
- K value vs accuracy curve
- Confusion matrix
- ROC curve
- Python 3.8+: Core language
- scikit-learn: Machine learning framework
- pandas: Data manipulation
- NumPy: Numerical computing
- Matplotlib/Seaborn: Visualization
- Jupyter: Interactive analysis
breast-cancer-analysis-knn/
├── breast_cancer_knn.ipynb # Main analysis notebook
├── train_model.py # Training script
├── requirements.txt
├── models/
│ └── knn_model.pkl # Trained model
├── plots/ # Generated visualizations
└── README.md
This is an educational project. NOT for clinical diagnosis. Always consult medical professionals for health decisions.
MIT License
Masoud Rafiee
- GitHub: @masoud-rafiee
- LinkedIn: masoud-rafiee
- CS331 - Machine Learning
- Bishop's University
- UCI Machine Learning Repository
Machine learning for healthcare 🦠🔬