Dissertation presented as the partial requirement for obtaining a Master's degree in Data Science and Advanced AnalyticsLearning from class-imbalanced data continues to be a common and challenging problem in
supervised learning as standard classification algorithms are designed to handle balanced class
distributions. While different strategies exist to tackle this problem, methods which generate
artificial data to achieve a balanced class distribution are more versatile than modifications to the
classification algorithm. Such techniques, called oversamplers, modify the training data, allowing any
classifier to be used with class-imbalanced datasets. Many algorithms have been proposed for this
task, but most are complex and tend to generate unnecessary noise. This work presents a simple and
effective oversampling method based on k-means clustering and SMOTE oversampling, which avoids
the generation of noise and effectively overcomes imbalances between and within classes. Empirical
results of extensive experiments with 71 datasets show that training data oversampled with the
proposed method improves classification results. Moreover, k-means SMOTE consistently
outperforms other popular oversampling methods. An implementation is made available in the
python programming language