2011-11-09 6 views
2

R에서 k-means clustering에 관한 질문이 있습니다. 사실이 모든 것을이 article에 따라 수행하고 있습니다. 모든 것은 tm 패키지의 예제를 기반으로하므로 데이터 가져 오기가 필요하지 않습니다. acq에는 50 개의 문서와 20 개의 문서가 있습니다.패키지 tm. kmeans의 문제

library(tm) 
data("acq") 
data("crude") 
ws <- c(acq, crude) 
wsTDM <- Data(TermDocumentMatrix(ws)) #First problem here 
wsKMeans <- kmeans(wsTDM, 2) 
wsReutersCluster <- c(rep("acq", 50), rep("crude", 20)) 
cl_agreement(wsKMeans, as.cl_partition(wsReutersCluster), "diag") 

Error in lapply(X, FUN, ...) : 
(list) object cannot be coerced to type 'integer' 

실제로 교차 합의 매트릭스를 만들고 싶습니다. 그러나이 기사는 2008 년 이후로 많이 바뀌 었습니다. 데이터 함수는 RSurvey 패키지에서만 사용할 수 있습니다. 그러나 나는 똑같은지 의심 스럽습니다. 그리고 나는 주된 문제는 TermDocumentMatrix가 S4 클래스 였고 이제는 S3라고 생각합니다. 나는 텍스트 만 가지고있을 가능성이 있음을 안다. 하지만 TDM에서 더 나은 결과를 얻으려면 불용어, punct 등을 제거 할 수 있기 때문에 이런 식으로하고 싶습니다. 그래서 누군가가 훌륭한 솔루션을 가지고 있다면.

답변

3

TDM은 ?TermDocumentMatrix에 설명 된 것처럼 희소 매트릭스로 저장됩니다. 이것은 또한 str(wsTDM)과 같은 객체를 검사하여 볼 수 있습니다. 그 오래된 Data() 함수는 내용을 정규 행렬로 액세스하는 단지 방법이었습니다. 더 이상 필요하지 않습니다. kmeans(wsTDM, 2)을 실행하면 70 개의 기능 (문서)에서 2775 개의 관측 (용어)으로 클러스터가 식별되어 예상대로 출력됩니다. 행운을 빕니다!

+0

내가 의도 한 것은 내 문서를 클러스터하는 것입니다. 그리고 지금 나는 용어를 모으고 있습니다. 이게 맘에 안들니? 어떻게 용어 대신에 문서를 클러스터링 할 수 있습니까 (계층 적이 아닌 k- 수단으로)? 내가 아는 한, 그것은 그 오래된 기사에서 나중의 저자가 문서의 공동 합의 매트릭스를 사용했기 때문에 이루어졌다. 나는 as.cl_partition (wsReutersCluster) 함수 때문에 이런 식으로 생각한다. 정말 그 cl_agreement를 만들고 싶습니다. – user974514

+1

@ user974514 어쩌면'DocumentTermMatrix()'를 대신할까요? –

+0

고맙습니다. 이제 작동합니다. :) – user974514