Bug classification in software is an important area in software engineering, which involves identification and categorization of defects to make the process of debugging easier and improve software quality. During the past five years, there has been a significant development in the use of machine learning techniques for bug classification automation due to the availability of open-source repositories and bug tracking systems that provide large datasets. For severity, type, or source classification of bugs, the various machine learning models used are mainly deep learning and natural language processing. The common behind these methods involves natural textual information, source code analysis, and history data. The common techniques involved include support vector machines, decision trees, and neural networks, among others, and their combinations to obtain an ensemble performance. Several recent works have emphasized transfer learning and the usage of pre-trained language models, such as ML and DL, to bring out semantic insights from bug reports. The incorporation of domain knowledge through feature engineering also helps in enhancing the performance of such models. Another common hybrid approach is to combine supervised learning methods with unsupervised learning to overcome issues of imbalanced datasets and label scarcity. While these sound great, complications persist concerning data quality issues, the difficulty of generalizing models across a variety of projects, and the cost of training complex models computationally. In the light of solving these issues, efforts are invested in research for solutions such as generating synthetic data and optimizing models. This review emphasizes that, although ML-driven bug classification is a very promising approach, further research is still needed to prepare these techniques for a wide range of situations so that they can also perform reliably in production software development.