2013-12-02 2 views
3

Я создал модель случайного леса предсказания в R с использованием RandomForest функции:Легенда для Random Forest земли в R

model = randomForest(classification ~., data=train, ntree=100, proximity=T) 

Далее я построена модель для того, чтобы увидеть общую погрешность модели:

plot(model, log="y") 

Это дает мне следующий сюжет: enter image description here

Мой вопрос, как я могу поставить легенду об этом, чтобы я мог увидеть, с olor соответствует каждому значению в коэффициенте, используемом для классификации? Коэффициентная переменная равна data$classification. Я не могу понять вызов legend(), чтобы сделать это.

ответ

7

Сюжет участка участка S3 использует matplot для построения случайной модели леса. Вы должны добавить легенду вручную. Это должно быть хорошим началом:

library(randomForest) 
model = randomForest(Species ~., data=iris, ntree=100, proximity=T) 
layout(matrix(c(1,2),nrow=1), 
     width=c(4,1)) 
par(mar=c(5,4,4,0)) #No margin on the right side 
plot(model, log="y") 
par(mar=c(5,0,4,2)) #No margin on the left side 
plot(c(0,1),type="n", axes=F, xlab="", ylab="") 
legend("top", colnames(model$err.rate),col=1:4,cex=0.8,fill=1:4) 

enter image description here

+1

Я понимаю, что это было легче, чем я ожидал. Я все еще привык к заговору в R. Я думаю, что это также работает правильно: «легенда (« topright », legend = unique (классификация поезда $), col = unique (as.numeric (классификация поезда $)), pch = 19) ' – seawolf

+0

Как сбросить параметр« mar »до его правильного значения? – EngrStudent

+1

@EngrStudent 'par (mar = c (1,1))' – agstudy

0

вы можете использовать это,

model$finalModel.legend <- if (is.null(model$finalModel$test$err.rate)) {colnames(model$finalModel$err.rate)} else {colnames(model$finalModel$test$err.rate)} 
legend("top", cex =0.7, legend=model$finalModel.legend, lty=c(1,2,3), col=c(1,2,3), horiz=T)