문제

내가 찾는 방법으로 수행하는 클러스터링에 별도로 행렬과 행보에 대한 열의 순서,데이터에서는 매트릭스 반영하는 클러스터링 및니다.클러스터링 문제를 쉽게 해결할 수 있도록은 덴드로그램 작성(예를 들어에 이 블로그"프로그래밍 collective intelligence").그러나,어떻게 데이터를 다시 정렬 불분명하게 남아 있습니다.

결국,내가 찾는 사람의 방법을 만드는 그래프는 유사한 중 하나를 사용하여 아래 순진 Python(으로 어떤"표준"라이브러리 등과 같은 numpy,matplotlib 등,그러나 없이 를 사용하여 R 또는 다른 외부 도구).

dendogram
(출처: warwick.ac.영국)

설명

었습니다 내가 무엇을 의미하는 순서 변경.면 클러스터 데이터 매트릭스에서 첫 번째에 의해 행렬,그 다음으로 열을,각 매트릭스 휴여 식별할 수 있습니다 위치에서 두 덴드로그램.당신의 순서를 변경의 행과 열의 원래 행렬한 요소를 가까이 각각에서 다른 덴드로그램 가까이 될 각각 다른 매트릭스에서,그리고 다음 히트 맵을 생성하면,클러스터링의 데이터 될 수 있습니다 분명한 시청자(위의 그림에서와 같이)

도움이 되었습니까?

해결책

최근 응답, 복사에서 아래 부분을 이와 관련된 질문.

import scipy
import pylab
import scipy.cluster.hierarchy as sch

# Generate features and distance matrix.
x = scipy.rand(40)
D = scipy.zeros([40,40])
for i in range(40):
    for j in range(40):
        D[i,j] = abs(x[i] - x[j])

# Compute and plot dendrogram.
fig = pylab.figure()
axdendro = fig.add_axes([0.09,0.1,0.2,0.8])
Y = sch.linkage(D, method='centroid')
Z = sch.dendrogram(Y, orientation='right')
axdendro.set_xticks([])
axdendro.set_yticks([])

# Plot distance matrix.
axmatrix = fig.add_axes([0.3,0.1,0.6,0.8])
index = Z['leaves']
D = D[index,:]
D = D[:,index]
im = axmatrix.matshow(D, aspect='auto', origin='lower')
axmatrix.set_xticks([])
axmatrix.set_yticks([])

# Plot colorbar.
axcolor = fig.add_axes([0.91,0.1,0.02,0.8])
pylab.colorbar(im, cax=axcolor)

# Display and save figure.
fig.show()
fig.savefig('dendrogram.png')

Dendrogram and distance matrix
(출처: stevetjoa.com)

다른 팁

나는 확실하지 않을 완전히 이해하고 있지만,당신은 노력하고 다시 인덱스의 각 축 배열에 기반한 종류의 덴드로그램 indicies.나는 가정이 비교 논리는 각 지점에서 묘사.이 경우 다음이 작업(?):

>>> x_idxs = [(0,1,0,0),(0,1,1,1),(0,1,1),(0,0,1),(1,1,1,1),(0,0,0,0)]
>>> y_idxs = [(1,1),(0,1),(1,0),(0,0)]
>>> a = np.random.random((len(x_idxs),len(y_idxs)))
>>> x_idxs2, xi = zip(*sorted(zip(x_idxs,range(len(x_idxs)))))
>>> y_idxs2, yi = zip(*sorted(zip(y_idxs,range(len(y_idxs)))))
>>> a2 = a[xi,:][:,yi]

x_idxsy_idxs 은 덴드로그램 indicies. a 이 정렬되지 않은 행렬입니다. xiyi 는 새로운 행/열을 배열 indicies. a2 은 정 매트릭스는 동안 x_idxs2y_idxs2 는 새로운로 분류 덴드로그램 indicies.이는 때 덴드로그램을 만들었는 0 지 컬럼/행 항상 비교적 큰/작은 보 1 니다.

하는 경우 y_idxs 및 x_idxs 하지 않은 목록이지만 numpy 배열할 수 있는 다음 사용 np.argsort 비슷한 방식으로.

내가 이것을 알고 있는 것은 매우 늦었지만,나는 음모를 꾸미를 기반으로 개체 코드에서비스를 이용 페이지입니다.그것은에 등록된 pip,그렇게 설치하는 당신은 콜

pip install pydendroheatmap

인 프로젝트의 의견을 여기: https://github.com/themantalope/pydendroheatmap

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top