This question already has an answer here:
I am currently solving a problem where I have to use Cosine distance as the similarity measure for Kmeans clustering. However, the standard Kmeans clustering package (from Sklearn package) uses Euclidean distance as standard, and does not allow you to change this.
Therefor it is my understanding that by normalising my original dataset through the the code below. I can then run kmeans package (using Euclidean distance) and it will be the same as if I had changed the distance metric to Cosine Distance?
from sklearn import preprocessing # to normalise existing X X_Norm = preprocessing.normalize(X) km2 = cluster.KMeans(n_clusters=5,init='random').fit(X_Norm)
Please let me know if my mathematical understanding of this is incorrect?