Fast K-Means Clustering Via K-D Trees, Sampling, and Parallelism