@gung tiene toda la razón al sugerirle el escalado multidimensional (MDS) como un herramienta preliminar para crear points X dimensions
datos de la matriz de distancias. Voy a añadir sólo unas pinceladas. Agrupación K-means implica distancias euclidianas . El MDS le proporcionará coordenadas de puntos en dimensiones, garantizándole así distancias euclidianas. Debe utilizar el MDS métrico y solicitar un número de dimensiones lo más grande posible, ya que su objetivo es minimizar el error de reconstracción de los datos, no mapearlos en 2D o 3D.
¿Y si no tiene a mano el software MDS pero dispone de algunas funciones matriciales como la descomposición de valores propios o la descomposición de valores singulares? Entonces podría haga usted mismo un simple MDS métrico - MDS de Torgerson, también conocido como análisis de coordenadas principales (PCoA). Se trata de un análisis de componentes principales un poco "retorcido". No voy a describirlo aquí, aunque es bastante sencillo. Puede leer sobre él en muchos sitios, por ejemplo aquí .
Por último, es posible programa "K-means para entrada de matriz de distancia" directamente - sin llamar o escribir funciones que hagan PCoA u otra métrica MDS. Sabemos que (a) la suma de las desviaciones al cuadrado del centroide es igual al suma de las distancias euclidianas al cuadrado por pares dividida por el número de puntos; y (b) saber calcular las distancias entre los centroides de los clusters de la matriz de distancias (c) y además sabemos cómo Sumas de cuadrados están interrelacionados en K-means. Todo ello junto hace que la escritura del algoritmo deseado sea una tarea sencilla y no compleja. Uno debe recordar, sin embargo, que K-means es sólo para distancias euclidianas / espacio euclidiano. Utilice K-medoids u otros métodos para distancias no euclidianas.
Una pregunta similar .