This project builds a machine learning model to predict whether a student is likely to drop out. Early identification of at-risk students helps institutions take preventive actions and improve retention.
Student-Dropout-ml-project
├── data/
├── images/
│ ├── confusion_matrix.png
│ ├── roc_curve.png
│ ├── precision_recall_curve.png
├── src/
│ └── student_dropout.py
├── notebook/
│ └── student_dropout.ipynb
├── models/
├── README.md
- Python
- NumPy
- Pandas
- Matplotlib
- Seaborn
- Scikit-learn
- Dropped irrelevant column:
Student_ID - Removed missing values using
dropna() - Split dataset into train/test (80/20)
- Categorical Features → OneHotEncoder
- Numerical Features → StandardScaler
- Skewed Features → PowerTransformer (Yeo-Johnson)
Used ColumnTransformer + Pipeline to ensure consistent preprocessing and modeling.
-
Logistic Regression
-
Parameters:
solver = "lbfgs"max_iter = 1000class_weight = "balanced"random_state = 42
Accuracy: 0.75
Class 0 (Non-Dropout):
Precision: 0.90
Recall: 0.75
F1-score: 0.82
Class 1 (Dropout):
Precision: 0.48
Recall: 0.74
F1-score: 0.58
---
- Model achieves 75% accuracy
- Strong recall (0.74) for dropout class → good at identifying at-risk students
- Lower precision (0.48) → more false positives
-
Improve precision using:
- Advanced models (Random Forest, XGBoost)
- Hyperparameter tuning
- Better feature engineering
-
Handle class imbalance with SMOTE / SMOTENC
-
Deploy model using Streamlit or Flask
git clone https://github.com/<your-username>/Student-Dropout-ml-project.git
cd Student-Dropout-ml-project
pip install -r requirements.txt
python src/student_dropout.py
- Dataset is not included (add your own CSV file)
- Ensure file name:
student_dropout_dataset_v3.csv
Durgesh Swarnakar
.png)

