Je fais une classification hiérarchique d'une matrice bidimensionnelle par mesure de distance de corrélation (c'est-à-dire 1 - corrélation de Pearson). Mon code est le suivant (les données sont dans une variable appelée "données"):problème avec la classification hiérarchique en Python
from hcluster import *
Y = pdist(data, 'correlation')
cluster_type = 'average'
Z = linkage(Y, cluster_type)
dendrogram(Z)
L'erreur que je reçois est:
ValueError: Linkage 'Z' contains negative distances.
Quelles sont les causes de cette erreur? La matrice « données » que j'utilise est tout simplement:
[[ 156.651968 2345.168618]
[ 158.089968 2032.840106]
[ 207.996413 2786.779081]
[ 151.885804 2286.70533 ]
[ 154.33665 1967.74431 ]
[ 150.060182 1931.991169]
[ 133.800787 1978.539644]
[ 112.743217 1478.903191]
[ 125.388905 1422.3247 ]]
Je ne vois pas comment pdist pourrait jamais produire des nombres négatifs lors de la prise 1 - corrélation pearson. Des idées à ce sujet?
merci.
J'ai essayé les suivants, mais il ne fonctionne pas: # calculer Y de pdist en utilisant « corrélation » Y = clip (Y, 0, 1) et les clusterings que je reçois pour la matrice, j'ai montré ci-dessus sont très bizarre. Une idée de ce qui pourrait arriver? Cela se produit uniquement avec la 'corrélation' comme argument de pdist. – user248237dfsf
Vous pourriez essayer d'utiliser quelque chose comme 'Y [abs (Y) <3e-16] = 0.0 'parce que vous avez aussi de très petites distances positives. Parfois, des chiffres comme ceux-là peuvent vraiment jeter des choses. Je n'ai pas beaucoup d'expérience en utilisant le module de clustering très franchement. Il pourrait avoir à faire avec l'utilisation de «moyenne» pour le type de cluster peut-être? –