This project explores how different data preprocessing techniques affect the performance of neural networks in both classification and regression tasks. The study compares various preprocessing scenarios (e.g., imputation, outlier removal, normalization, and transformation) and evaluates their impact on model accuracy, robustness, and convergence.
-
Automated Neural Networks
- Dynamic architecture determination
- Configurable hidden layers and units
- Batch normalization and dropout for regularization
- Support for both classification and regression tasks
-
Robust Data Preprocessing
- Missing value imputation (mean, median, mode)
- Outlier detection and removal
- Feature scaling and normalization
- Categorical variable encoding
- Input validation and error checking
-
Create a Conda Environment
conda create --name neural-network-performance-by-data-quality python=3.11 && \ conda activate neural-network-performance-by-data-quality -
Install Dependencies
make setup
-
Run Tests
make test -
Run Experiments
make run-classify # to run classification experiments make run-regress # to run regression experiments
-
[Optional] Run single experiment
python src/main.py --task-type classification --dataset census_income --target salary python src/main.py --task-type regression --dataset house_price --target price
Available options:
--task-type:classificationorregression--dataset: Name of dataset folder underdatasets/{task-type}/--target: Name of target column--epochs: Number of training epochs (default: 100)--batch-size: Training batch size (default: 32)
- The project uses scikit-learn for preprocessing utilities.
- The project uses PyCaret for some preprocessing and model comparison tasks.