10

相関距離メトリック(つまり、1 - ピアソン相関)による2次元マトリックスの階層的クラスタリングを行っています。私のコードは次のとおりです(データは「データ」という変数にあります):

from hcluster import *

Y = pdist(data, 'correlation')
cluster_type = 'average'
Z = linkage(Y, cluster_type)
dendrogram(Z)

私が得るエラーは次のとおりです。

ValueError: Linkage 'Z' contains negative distances. 

このエラーの原因は何ですか? 私が使用するマトリックス「データ」は単純です:

[[  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  ]]

1 - ピアソン相関を取るときに pdist が負の数を生成する方法がわかりません。これに関するアイデアはありますか?

ありがとうございました。

4

2 に答える 2

5

いくつかの素敵な浮動小数点の問題が起こっています。pdistの結果を見ると、非常に小さな負の数(-2.22044605e-16)が含まれていることがわかります。基本的に、それらはゼロでなければなりません。必要に応じて、numpyのクリップ機能を使用して処理できます。

于 2010-05-31T00:10:16.657 に答える