193 votes

Est-il possible de spécifier votre propre fonction de distance en utilisant la classification K-Means de Scikit-learn ?

Est-il possible de spécifier votre propre fonction de distance en utilisant la classification K-Means de Scikit-learn ?

44 votes

Notez que k-means est conçu pour la distance euclidienne. . Elle peut cesser de converger avec d'autres distances, lorsque le moyenne n'est plus la meilleure estimation du "centre" de la grappe.

2 votes

Pourquoi k-means ne fonctionne que pour la distance euclidienne ?

9 votes

@Anony-Mousse Il est incorrect de dire que k-means est uniquement conçu pour la distance euclidienne. Il peut être modifié pour fonctionner avec toute métrique de distance valide définie sur l'espace d'observation. Par exemple, regardez l'article sur k-medoids .

5voto

Igor Fobia Points 68

k-means de Python spectral permet l'utilisation de la distance L1 (Manhattan).

4voto

Sklearn Kmeans utilise le distance euclidienne . Il n'a pas de paramètre métrique. Ceci dit, si vous faites du clustering séries chronologiques vous pouvez utiliser l'option tslearn du paquet python, alors que vous pouvez spécifier une métrique ( dtw , softdtw , euclidean ).

-2voto

Rahul Nanda Points 1
def distance_metrics(dist_metrics):
    kmeans_instance = kmeans(trs_data, initial_centers, metric=dist_metrics)

    label = np.zeros(210, dtype=int)
    for i in range(0, len(clusters)):
        for index, j in enumerate(clusters[i]):
            label[j] = i

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X