행과 열에 모두 클러스터링해야 하는 경우가 많다. 마케팅 연구에서, 사람들이 인구 통계와 상품을 찾거나, 혹은 아마도 함께 흔히 구매되는 품목의 선반 위치를 결정하는 것은 흥미로울 수 있다. 블로그 데이터 세트에서 이 열은 단어를 나타내며, 어떤 단어가 일반적으로 함께 사용되는지 보는 것은 잠재적으로 흥미롭다.


지금까지 작성한 기능을 사용하여 이 작업을 수행하는 가장 쉬운 방법은 전체 데이터셋을 회전시켜 열(단어)이 행이 되도록 하는 것이다. 각 열은 각 블로그에 해당 단어가 얼마나 많이 표시되는지 나타내는 숫자 목록을 가지고 있다. 


def rotatematrix(data):

 newdata=[]

 for i in range(len(data[0])):

 newrow=[data[j][i] for j in range(len(data))]

 newdata.append(newrow)

 return newdata


이제 매트릭스를 회전하고 클러스터링 및 덴드로그램 그리기에 대해 동일한 작업을 실행할 수 있다. 블로그보다 더 많은 단어가 있기 때문에, 이것은 블로그 클러스터링을 실행하는 것보다 더 오래 걸릴 것이다. 매트릭스가 회전했기 때문에, 블로그보다는 단어들이 이제 라벨이 되었다는 것을 기억하라.


>> reload(clusters)

>> rdata=clusters.rotatematrix(data)

>> wordclust=clusters.hcluster(rdata)

>> clusters.drawdendrogram(wordclust,labels=words,jpeg='wordclust.jpg')



클러스터링에 대해 깨달아야 할 한 가지 중요한 것은 변수보다 더 많은 항목을 가지고 있다면 비감각적인 클러스터가 발생할 가능성이 높아진다는 것이다. 블로그보다 더 많은 단어가 있으므로 블로그 클러스터링에서 단어 클러스터링보다 더 합리적인 패턴을 발견할 수 있을 것이다. 그러나 그림 3-4와 같이 일부 흥미로운 클러스터가 분명히 나타난다.


이 클러스터는 온라인 서비스나 인터넷 관련 주제를 논의하기 위해 블로그에서 일련의 단어들이 종종 함께 사용된다는 것을 분명히 보여준다. 블로그가 의견 있는 스타일로 글을 쓴다는 것을 나타내는 "사실", "us", "say," "매우", "생각"과 같은 사용 패턴을 반영하는 클러스터를 다른 곳에서 찾을 수 있다.

  • 네이버 블로그 공유하기
  • 네이버 밴드에 공유하기
  • 트위터 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기