Traditional networks were initially designed to scale fast, but in turn are harder to monitor and manage. The rise in the Internet of Things (IoT) has caused an increase in the number of mobile nodes and thus the topology changes constantly. This compels researchers to explore more efficient methods to monitor and manage the network. Software Defined Networking (SDN) have become the primary focus of the research community due to the flexibility it enables by the separation of the data and the control plane. However, the centralized nature of SDN causes a scalability and a single point of failure problems. To combat this problem, we propose an adaptable and robust network management approach using machine learning while considering the control plane architecture for software-defined networks. Our system aims to enhance the network resource utilization and increase the SDN's scalability by using multiple controllers and assigning the switches among them autonomously, based on network traffic patterns.