train the model: python train.py data.csv --model-type mlp --generate-labels --label-method kmeans --n-buckets 50 --hidden-dims 512,256 --epochs 8 --batch-size 256 --feature-engineer --weight-decay 1e-5 --seed 42 python train.py data.csv --model-type mlp --generate-labels --label-method kmeans --n-buckets 50 --hidden-dims 1024,512 --epochs 12 --batch-size 256 --lr 1e-3 --lr-step-size 4 --lr-gamma 0.5 --feature-engineer --weight-decay 1e-5 --seed 42 # train with outputs saved to output/ python train.py data.csv --model-type mlp --generate-labels --label-method kmeans --n-buckets 50 --hidden-dims 512,256 --epochs 8 --batch-size 256 --feature-engineer --weight-decay 1e-5 --seed 42 --output-dir output/ # evaluate and visualize: python evaluate_and_visualize.py \ --checkpoint path/to/checkpoint.pt \ --data data.csv \ --label-col original_label_column_name \ --batch-size 256 \ --sample-index 5 \ --plot # evaluate python evaluate_and_visualize.py --checkpoint output/model.pth --data data.csv --label-col label --plot --sample-index 5 # If you used generated labels during training and train.py saved metadata, # the evaluator will prefer generated labels saved in label_info.json inside the checkpoint dir. # fetch weather (placeholder) # from openweather_client import fetch_road_risk # print(fetch_road_risk(37.7749, -122.4194))