Reactive And Proactive Fault-Tolerant Network-On-Chip Architectures Using Machine Learning