Recent years have seen a drastic increase in the varieties and intricacies of network systems which are made up by rapid improvements that follow mobile connections as well as the internet. These systems are becoming increasingly complicated and more sophisticated solutions must be developed to ensure close cooperation, control, activation, and optimization of network structures. But conventional networks, due to their programmatically distributed functionality are a challenge when incorporating machine learning methods for network management. With the emergence of Software Defined Network (SDN), there is a new dimension for introducing intelligence in networks. Particularly, three core characteristics of SDN – unity management, global network visibility, and dynamic rule update - support seamless integration of machine learning technologies. This review provides a comprehensive overview of the literature on machine learning algorithms in SDN frameworks, presenting an extensive survey of this area. The paper systematically describes different machine learning algorithms that have been employed in SDN domains, thereby revealing their implementation opportunities as well as advantages and peculiarities. Furthermore, the review provides an overview of related works and background on SDN-based machine learning approaches for readers to gain a broad understanding of ongoing research in this field. While the topics covered extend beyond algorithmic research, it also challenges integration issues of machine learning into SDN and provides a wider scope. This review aims to be a reliable source of information for researchers, practitioners, and industry experts interested in Software Defined Networks and machine learning applications on network optimization and management.