Files
predictive_analysis/diagrams/03_ml_pipeline_architecture.py
T
2025-09-28 02:16:44 +03:00

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