A comprehensive machine learning pipeline for predicting sales using AdventureWorks data, featuring both Linear Regression and Artificial Neural Network models.
- MySQL Database: Ensure MySQL server is running and create a database named
dev_db - Python Environment: Python 3.8+ with required packages
- Data Files: AdventureWorks CSV files in the
Class 1 - Data Files and Code File/directory
-
Install Python packages:
pip install -r requirements.txt
-
Set up MySQL database:
CREATE DATABASE dev_db;
-
Update database credentials in the configuration sections of the Python scripts if needed.
Option 1: Automated Pipeline (Recommended)
cd "Class 2 - Code Files"
python run_complete_pipeline.pyOption 2: Manual Step-by-Step
# 1. Load data into MySQL
cd "Class 1 - Data Files and Code File"
python run_all_etl.py
# 2. Clean and transform data (run in MySQL)
mysql -u root -p dev_db < "Class 2 - Code Files/data_cleaning_procedures.sql"
# Then in MySQL: CALL sp_run_all_cleaning();
# 3. Feature engineering
cd "Class 2 - Code Files"
python feature_engineering.py
# 4. Train Linear Regression model
python linear_regression_model.py
# 5. Train ANN model
python ann_model.py
# 6. Evaluate and compare models
python model_evaluation.pyPhase 3 - GoML Training/
βββ Class 1 - Data Files and Code File/
β βββ AdventureWorks_Customers.csv
β βββ AdventureWorks_Products.csv
β βββ AdventureWorks_Sales_2015.csv
β βββ AdventureWorks_Sales_2016.csv
β βββ AdventureWorks_Sales_2017.csv
β βββ AdventureWorks_Territories.csv
β βββ AdventureWorks_Product_Categories.csv
β βββ AdventureWorks_Product_Subcategories.csv
β βββ tbl_stg_customers.py
β βββ etl_*.py (ETL scripts for each data source)
β βββ run_all_etl.py
βββ Class 2 - Code Files/
β βββ sp_customer_loadtrans1.sql
β βββ data_cleaning_procedures.sql
β βββ feature_engineering.py
β βββ linear_regression_model.py
β βββ ann_model.py
β βββ model_evaluation.py
β βββ run_complete_pipeline.py
βββ requirements.txt
βββ README.md
- Purpose: Load CSV data into MySQL database
- Scripts:
etl_*.pyfiles for each data source - Output: Raw data tables in
dev_db
- Purpose: Clean and transform raw data
- Script:
data_cleaning_procedures.sql - Output: Clean tables (
customers_clean,products_clean,sales_clean)
- Purpose: Create ML-ready features
- Script:
feature_engineering.py - Output:
ml_featurestable with engineered features
- Purpose: Train linear regression models
- Script:
linear_regression_model.py - Output: Trained models and performance metrics
- Purpose: Train artificial neural network models
- Script:
ann_model.py - Output: Trained ANN models and performance metrics
- Purpose: Compare and evaluate all models
- Script:
model_evaluation.py - Output: Comprehensive comparison reports and visualizations
- Date components (year, month, quarter, day)
- Seasonality indicators
- Holiday proximity
- Weekend indicators
- Demographics (age, income, education)
- Purchase history metrics
- Customer segmentation
- Lifetime value indicators
- Product characteristics
- Price categories
- Profit margins
- Popularity scores
- Geographic performance
- Market activity scores
- Regional characteristics
- Historical sales patterns
- Rolling averages
- Trend indicators
- Customer-product affinity
- Price sensitivity
- Demographic interactions
- Basic Linear Regression
- Ridge Regression (L2 regularization)
- Lasso Regression (L1 regularization)
- Elastic Net (L1 + L2 regularization)
- Polynomial Regression
- Basic ANN (3 hidden layers)
- Deep ANN (5 hidden layers with batch normalization)
- Wide & Deep ANN (parallel architecture)
- Regularized ANN (with dropout and regularization)
The pipeline evaluates models using multiple metrics:
- RΒ² Score: Coefficient of determination
- RMSE: Root Mean Square Error
- MAE: Mean Absolute Error
- MAPE: Mean Absolute Percentage Error
- Actual vs Predicted scatter plots
- Residual analysis plots
- Model comparison charts
- Feature importance plots
- Training history plots (for ANN)
best_linear_model_*.joblib: Best linear regression modelbest_ann_model_*.h5: Best ANN modelselected_features.joblib: Selected features for linear regressionann_scaler.joblib: Scaler for ANN model
linear_regression_report.txt: Linear regression analysisann_model_report.txt: ANN model analysismodel_evaluation_report.txt: Comprehensive comparison
linear_regression_comparison.png: Linear model comparisonann_training_history.png: ANN training progressann_model_comparison.png: ANN model comparisonmodel_comparison_plots.png: Overall model comparisonmetrics_comparison.png: Metrics comparisonfeature_importance.png: Feature importance plot
customers: Customer dataproducts: Product informationsales_2015,sales_2016,sales_2017: Sales transactionsterritories: Territory informationproduct_categories: Product categoriesproduct_subcategories: Product subcategories
customers_clean: Cleaned customer dataproducts_clean: Cleaned product datasales_clean: Unified sales data
ml_features: Engineered features for MLv_sales_master: Master view combining all data
Update these variables in the Python scripts:
HOST = "localhost"
PORT = 3306
USER = "root"
PASSWORD = "Atharv2210$" # Update with your password
DATABASE = "dev_db"- Feature Selection: Adjust
kparameter in feature selection - Train/Test Split: Modify
test_sizeparameter - ANN Architecture: Customize layer sizes and activation functions
- Hyperparameters: Adjust learning rates, regularization, etc.
-
Database Connection Failed
- Ensure MySQL server is running
- Verify database credentials
- Check if
dev_dbdatabase exists
-
Missing Packages
- Run
pip install -r requirements.txt - For TensorFlow issues, check Python version compatibility
- Run
-
Memory Issues
- Reduce batch size in ANN training
- Use feature selection to reduce dimensionality
- Process data in chunks
-
ETL Failures
- Check CSV file paths
- Verify file encoding (latin-1)
- Ensure sufficient disk space
-
For Large Datasets
- Use data sampling for initial experiments
- Implement incremental learning
- Consider distributed computing
-
For Faster Training
- Use GPU acceleration for ANN
- Optimize hyperparameters
- Use early stopping
-
Model Deployment
- Create API endpoints
- Set up model serving infrastructure
- Implement monitoring
-
Advanced Techniques
- Ensemble methods
- Time series forecasting
- Deep learning architectures
-
Business Integration
- A/B testing framework
- Real-time predictions
- Business metrics tracking