2017-11-06 8 views
1

저는 팬더를 처음 사용하고 scipy 클러스터링을 처음 사용했습니다.CSV에서 얻은 클러스터 매트릭스 Pandas DF Scipy

dog cat squ mea che 
dog 0 .6 .5 .3 .2 
cat 1 0 .3 .7 .9 
squ .6 .3 0 .3 .8  
mea .1 .1 .3 0 .9 
che .4 .3 .4 .7  0 

내가 궁극적으로 dendrogram은을 만들 scipy를 사용하여 내 매트릭스를 클러스터하려는 : 내가 (값이 서로의 거리를 나타냅니다 다음과 같습니다 행렬입니다 pd.read_csv을 사용하여 읽기 팬더 dataframe이 및 계층/응집성 클러스터링 나는

from scipy.cluster.hierarchy import dendrogram, linkage 
from matplotlib import pyplot as plt 
Z = linkage(df) 

을 시도하지만 바로이 값 오류로 치고

ValueError: could not convert string to float: "'dog'" 

내가 알것 진행하는 방법을 잘 모르겠습니다 얻을 w이 행렬을 올바르게 클러스터링하지는 않지만 진행 방법을 잘 모릅니다.

답변

0

첫 번째 열이 색인 인 경우 코드가 멋지게 작동합니다. 당신의 dataframe를로드 할 때, 인덱스로 첫 번째 열을 지정 index_col=[0]를 지정하여 다음과 같이로드 :

df = pd.read_csv(..., index_col=[0]) 

df 

    dog cat squ mea che 
dog 0.0 0.6 0.5 0.3 0.2 
cat 1.0 0.0 0.3 0.7 0.9 
squ 0.6 0.3 0.0 0.3 0.8 
mea 0.1 0.1 0.3 0.0 0.9 
che 0.4 0.3 0.4 0.7 0.0 

Z = linkage(df) 
Z 

array([[ 0.  , 4.  , 0.678233 , 2.  ], 
     [ 2.  , 3.  , 0.69282032, 2.  ], 
     [ 1.  , 6.  , 0.71414284, 3.  ], 
     [ 5.  , 7.  , 0.93808315, 5.  ]]) 

dendrogram(Z) 

plt.show() 

enter image description here

+0

세상에을! 첫 번째 열을 색인으로 지정하는 것을 간과했습니다. 정말 고마워, 마침내 내 데이터가 시각화 된 것을 보게되어 정말 기쁩니다. 앞으로 매트릭스에서 읽는 동안 인덱스를 지정하는 중요성에 더욱 부합 할 것입니다. – tesh