https://mixrolikus.cc/video/6UF5Ysk_2gk/how-to-implement-k-means-from-scratch-with-python