2017-05-14 36 views
1

我儘量按照這個tutorial更精確地驗證碼:羣集原型無法強制鍵入「雙重」

groups = 3 
iris.hc = cutree(hclust(dist(iris.som$codes)), groups) 

# plot 
plot(iris.som, type="codes", bgcol=rainbow(groups)[iris.hc]) 

#cluster boundaries 
add.cluster.boundaries(iris.som, iris.hc) 

然而,位:

dist(iris.som$codes) 

給我:

(list) object cannot be coerced to type 'double' 

任何想法?

回答

1

dist需要一個數字矩陣作爲輸入,但對象iris.som$codes是列表不是一個矩陣的命令:

str(iris.som$codes) 

List of 1 
$ : num [1:25, 1:4] -1.353 -0.933 -0.523 0.321 0.569 ... 
    ..- attr(*, "dimnames")=List of 2 
    .. ..$ : chr [1:25] "V1" "V2" "V3" "V4" ... 
    .. ..$ : chr [1:4] "Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width" 

因此,你必須使用你的代碼dist(iris.som$codes[[1]])

library("kohonen") 
iris.sc = scale(iris[, 1:4]) 
iris.grid = somgrid(xdim = 5, ydim=5, topo="hexagonal") 
iris.som = som(iris.sc, grid=iris.grid, rlen=100, alpha=c(0.05,0.01)) 

iris.hc = cutree(hclust(dist(iris.som$codes[[1]])), groups) 

plot(iris.som, type="codes", bgcol=rainbow(groups)[iris.hc]) 
add.cluster.boundaries(iris.som, iris.hc) 

enter image description here

相關問題