https://medium.com/@monocosmo77/working-with-nonlinear-dimensionality-reduction-part1-machine-learning-89259d5083e6