mirror of
https://github.com/andwati/student-retention.git
synced 2026-10-18 08:52:53 +00:00
63 lines
2.9 KiB
Python
63 lines
2.9 KiB
Python
"""
|
|
Machine Learning Pipeline Architecture
|
|
Shows the complete ML workflow from preprocessing to model deployment
|
|
"""
|
|
|
|
from diagrams import Diagram, Cluster, Edge
|
|
from diagrams.generic.storage import Storage
|
|
from diagrams.generic.compute import Rack
|
|
from diagrams.programming.language import Python
|
|
from diagrams.aws.ml import SagemakerModel
|
|
from diagrams.onprem.monitoring import Grafana
|
|
from diagrams.generic.database import SQL
|
|
|
|
with Diagram("Machine Learning Pipeline Architecture",
|
|
filename="diagrams/03_ml_pipeline_architecture",
|
|
show=False,
|
|
direction="TB"):
|
|
|
|
# Input Data
|
|
clean_data = Storage("Cleaned Dataset\n• 4,424 samples\n• 36 features\n• 3 target classes")
|
|
|
|
# Preprocessing Pipeline
|
|
with Cluster("Data Preprocessing"):
|
|
feature_encoding = Rack("Feature Encoding\n• Label encoding (target)\n• One-hot encoding (categorical)")
|
|
data_splitting = Rack("Data Splitting\n• Train: 75%\n• Test: 25%\n• Stratified split")
|
|
feature_alignment = Rack("Feature Alignment\n• Consistent column order\n• Missing feature handling")
|
|
|
|
# Model Training
|
|
with Cluster("Model Training & Validation"):
|
|
model_training = Python("Random Forest Training\n• n_estimators=100\n• random_state=42")
|
|
cross_validation = Grafana("Cross Validation\n• 5-fold CV\n• Performance metrics")
|
|
hyperparameter_tuning = Grafana("Hyperparameter Tuning\n• Grid search\n• Best parameters")
|
|
|
|
# Model Evaluation
|
|
with Cluster("Model Evaluation"):
|
|
performance_metrics = Grafana("Performance Metrics\n• Accuracy: 93.84%\n• Precision/Recall\n• F1-Score")
|
|
confusion_matrix = Grafana("Confusion Matrix\n• Class-wise performance\n• Error analysis")
|
|
feature_importance = Grafana("Feature Importance\n• Top predictors\n• Impact analysis")
|
|
|
|
# Model Persistence
|
|
with Cluster("Model Artifacts"):
|
|
model_pickle = Storage("Model Pickle\nrandom_forest_model.pkl")
|
|
preprocessing_info = SQL("Preprocessing Info\npreprocessing_info.json\n• Feature names\n• Encodings\n• Mappings")
|
|
|
|
# Model Validation Results
|
|
with Cluster("Validation Results"):
|
|
accuracy_report = Rack("Accuracy Report\n• Training: 100%\n• Testing: 93.84%\n• Generalization: Good")
|
|
class_performance = Rack("Class Performance\n• Graduate: 95% F1\n• Dropout: 92% F1\n• Enrolled: 88% F1")
|
|
|
|
# Data Flow
|
|
clean_data >> feature_encoding >> data_splitting
|
|
data_splitting >> model_training >> cross_validation
|
|
cross_validation >> hyperparameter_tuning >> performance_metrics
|
|
|
|
performance_metrics >> confusion_matrix
|
|
performance_metrics >> feature_importance
|
|
|
|
model_training >> model_pickle
|
|
feature_encoding >> preprocessing_info
|
|
feature_alignment >> preprocessing_info
|
|
|
|
performance_metrics >> accuracy_report
|
|
confusion_matrix >> class_performance |