https://magcourse.site/clustering-unsupervised-learning-in-python-2/