Unsupervised Way to Choose K in K-Means Algorithm
The idea underlying the k-means algorithm is to find clusters that minimize the intra-cluster variance and maximize the inter-cluster sum-of-square. Note that the total variance is fixed so minimization of intra-cluster variance is equivalent to maximization of inter-cluster sum of square. Basically various methods aim to achieve such minimization.

However, there is no "correct" K number or "best" method in k means. One clustering may be better than another by one metric, but worse by another metric. And depending on your own project, sometimes one clustering works but sometimes it does not.

You had better try those method to see whether they are suit in your case. If your data is not high-dimensional, you can just try kernel density estimation to observe the number of peaks. Otherwise, the easiest and heuristic one is rule of thumbs, then I would suggest Elbow method (cease increasing the number of clusters when the new generated cluster is closed to some of the existing). 

There are many discussions on stackoverflow and cross validation on this topic that you may be interested in as well.