2014-12-21 2 views
0

나는 kmeans를 일부 데이터로 클러스터링하는 것으로되어있다. http://glowingpython.blogspot.com/2012/04/k-means-clustering-with-scipy.html에서 본 예제는 테스트 데이터를 2 개 열로 표시하지만 필자가 제공 한 데이터는 78 개 피처 (68x78 매트릭스)를 가진 68 개의 피사체입니다. 어떻게해야 적절한 입력을 만들 수 있습니까?Scikit-learn kmeans clustering

기본적으로 매트릭스 입력을 시도했지만 원하는대로 처리하지 못하는 것 같습니다. 이유는 모르겠습니다. 나는 무엇을 해야할지에 대해 꽤 혼란 스럽다.

 data = np.rot90(data) 
     centroids,_ = kmeans(data,2) 
     # assign each sample to a cluster 
     idx,_ = vq(data,centroids) 

     # some plotting using numpy's logical indexing 
     plot(data[idx==0,0],data[idx==0,1],'ob', 
      data[idx==1,0],data[idx==1,1],'or') 
     plot(centroids[:,0],centroids[:,1],'sg',markersize=8) 
     show() 

나는 당신에게 보여줄 코드의 종류를 솔직하게 모릅니다. 이미 말했던 데이터 형식입니다. 그렇지 않으면 링크 된 자습서와 동일합니다.

+0

실제로 시도한 코드를 표시하십시오. "내가 원하는 것을하지 않는 것"이외의 특정 오류 메시지 또는 예기치 않은 동작이 보입니까? –

+0

http://i.imgur.com/ILmPQS3.png 한 클러스터에 더 가까운 클러스터가 다른 클러스터로 분류되는 이유를 이해하지 못합니다. 솔직히 말해서 클러스터가 더 분리되기를 바랬습니다 (하지만 가능하지 않을 수도 있습니다). – Programmermatt

+0

scikit-learn이 아닌 scipy를 사용하고있는 것처럼 보입니다. 태그를 변경해야합니다. 나는 kmeans 자신에게 상당히 새로운 것이다. 78 개의 기능이 많은 것 같습니다. 모두 78 개의 숫자가 아닌 범주 형 변수입니까? –

답변

0

시각화는의 첫 번째 두 번째 치수 만 사용합니다.

이러한 점들이 "잘못된"것으로 보이는 이유입니다. 서로 다른 차원에서 더 가깝습니다.

다음 두 가지 차원에서 살펴 유무 :

plot(data[idx==0,2],data[idx==0,3],'ob', 
     data[idx==1,2],data[idx==1,3],'or') 
    plot(centroids[:,2],centroids[:,3],'sg',markersize=8) 
    show() 

...이 많은 기능에서 ... 모든 oyur 78 차원의 나머지에 대한

반복을, 유클리드 거리가 의미가 도착 (제곱) , k- 평균 결과는 임의의 볼록 파티션만큼 좋은 경향이있다.

대표적인보기를 얻으려면 MDS을 사용하여 시각화를 위해 데이터를 2 차원으로 투영하는 것이 좋습니다. 그것은 단지 68 명의 피험자들과 합리적으로 빠르게 작동해야합니다.

질문에 시각화를 포함하십시오. 귀하의 데이터가 없습니다.