2017-11-15 2 views
1

시계열을 클러스터하려고합니다. 클러스터 내 요소는 모양은 같지만 규모가 다릅니다. 따라서 클러스터링에 메트릭으로 상관 계수를 사용하고 싶습니다. 나는 상관 관계 또는 피어슨 계수 거리 (어떤 제안이나 대안도 환영합니다)를 시도하고 있습니다. 그러나 dist에 NaN 값이 있기 때문에 Z = linkage (dist)를 실행하면 다음 코드가 오류를 반환합니다. 이 NaN이는 time_series에서, 이것은scipy.pdist()는 NaN 값을 반환합니다.

from scipy.spatial.distance import pdist 
from scipy.cluster.hierarchy import dendrogram, linkage 

dist = pdist(time_series, metric='correlation') 
Z = linkage(dist) 
fig = plt.figure() 
dn = dendrogram(Z) 
plt.show() 

는 다른 방법으로, 나는 피어슨 거리

from scipy.stats import pearsonr 

def pearson_distance(a,b): 
    return 1 - pearsonr(a,b)[0] 

dist = pdist(time_series, pearson_distance)` 

를 사용 False를 반환

np.any(isnan(time_series)) 

에 의해 확인 된 값들 그러나 이것은 런타임에 경고를 생성하지 않습니다 많은 시간이 걸립니다. 당신이 manual을 살펴 경우

답변

0
scipy.pdist(time_series, metric='correlation') 

correlation 옵션 차이로 나눕니다. 따라서 동일한 타임 스탬프가 두 개 있고, zerozero으로 나누면 NaN이됩니다.

+0

좋아, 나는 두 시퀀스 중 하나가 모든 타임 스텝에 대해 동일한 값을 가질 때 계수가 나노라는 것을 확인했다. 이 사건을 어떻게 처리해야합니까? – user2614596

+0

이것은 실제로 귀하의 사건에 따라 다릅니다. 이 항목을 무시하고 삭제할 수 있습니다. 물리적/모든 의미가없는 경우에 해당됩니다. 또는 이들을 0으로 설정할 수도 있지만 상관 해석에 대한 영향에 대해서는 확신 할 수 없습니다. 너의 선택의 종류. – Dorian

+0

이 시리즈를 클러스터링해야하므로 두 시리즈 a 및 b가 (규모에 관계없이) 모양이 비슷한지 여부를 나타내는 메트릭이 필요합니다. – user2614596

관련 문제