2014-11-26 1 views
0

Я нашел хороший учебник по самоорганизации кластеризации карт в R, в котором объясняется, как отображать ваши входные данные в пространстве единицы (см. Ниже). Чтобы установить некоторые правила для маркировки, я хотел бы вычислить вероятность каждого класса в каждом нейроне и построить его. Вычисление вероятности довольно просто: возьмите для каждой единицы число наблюдений класса i и разделите ее на общее число наблюдений в этом блоке. Я в конечном итоге с data.frame pc. Теперь я изо всех сил пытаюсь сопоставить этот результат, любую подсказку о том, как это сделать?Вероятность вероятности расслоения по нейрону в самоорганизующихся картах

library(kohonen) 
data(yeast) 
set.seed(7) 
yeast.supersom <- supersom(yeast, somgrid(8, 8, "hexagonal"),whatmap = 3:6) 

classes <- levels(yeast$class) 
colors <- c("yellow", "green", "blue", "red", "orange") 
par(mfrow = c(3, 2)) 
plot(yeast.supersom, type = "mapping",pch = 1, main = "All", keepMargins = TRUE,bgcol = gray(0.85)) 

library(plyr) 
pc <- data.frame(Var1=c(1:64)) 

for (i in seq(along = classes)) { 
    X.class <- lapply(yeast, function(x) subset(x, yeast$class == classes[i])) 
    X.map <- map(yeast.supersom, X.class) 
    plot(yeast.supersom, type = "mapping", classif = X.map, 
    col = colors[i], pch = 1, main = classes[i], add=TRUE) 

    # compute percentage per unit 
    v1F <- levels(as.factor(X.map$unit.classif)) 
    v2F <- levels(as.factor(yeast.supersom$unit.classif)) 
    fList<- base::union(v2F,v1F) 
    pc <- join(pc,as.data.frame(table(factor(X.map$unit.classif,levels=fList))/table(factor(yeast.supersom$unit.classif,levels=fList))*100),by = 'Var1') 
    colnames(pc)[NCOL(pc)]<-classes[i] 
} 

ответ

0

Окей, ребята, здесь есть решение: После того, как я вычислил вероятность, что происходит цветовой код из определенного градиента (rbPal). Градиент определяется верхней и нижней границей, а оттенок цветов пропорционален их интервалу. Это делается с помощью функции findInterval.

# compute percentage per unit 
    v1F <- levels(as.factor(X.map$unit.classif)) 
    v2F <- levels(as.factor(yeast.supersom$unit.classif)) 
    fList<- base::union(v2F,v1F) 
    pc <- join(pc,as.data.frame(table(factor(X.map$unit.classif,levels=fList))/table(factor(yeast.supersom$unit.classif,levels=fList))*100),by = 'Var1') 
    colnames(pc)[NCOL(pc)]<-classes[i] 
    rbPal <- colorRampPalette(c('blue','yellow','red')) 
    plot(yeast.supersom, type="mapping", bgcol = rbPal((100))[(findInterval(pc[,which(colnames(pc)==as.character(classes[i]))], seq(0:100))+1)], main = paste("Probabily Clusters:", classes[i])) 
Смежные вопросы