2011-11-09 52 views
2

我有一個關於在K中k-均值聚類的問題。實際上,我正在根據這個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中可以刪除停用詞,打點等以獲得更好的結果。所以如果有人有任何可怕的解決方案。

回答

3

TDM作爲稀疏矩陣存儲,如?TermDocumentMatrix中所述。這也可以從檢查像str(wsTDM)這樣的對象中看出。那個舊的Data()函數只是一種以常規矩陣的形式訪問內容的方法。它不再需要了。您只需執行kmeans(wsTDM, 2),您會看到輸出結果與預期的一樣,對70個特徵(文檔)中的2775個觀察值(術語)確定了集羣。祝你好運!

+0

我打算做的是集中我的文檔。現在我是聚類術語。不是這樣嗎?我怎樣才能將文檔聚集而不是術語(使用k-means,而不是分層次)?據我所知,它是在那篇舊文章中完成的,因爲後來的作者將共同協議文件矩陣,而不是條款。我認爲這是因爲'as.cl_partition(wsReutersCluster)'功能。我真的想創建'cl_agreement'。 – user974514

+1

@ user974514也許你想'DocumentTermMatrix()'而不是? –

+0

非常感謝。它現在有效。 :) – user974514