在r中使用分类数据作为特征向量运行和绘制随机森林

时间:2019-01-13 07:41:22

标签: r plot random-forest

我有如下数据。它具有三列。第一个是分类数据,第二列是数字,最后一个是我的班级标签。我想在我的数据上运行一个随机森林并绘制树以及变量的重要性。我的目标是找到最重要的mapValues(),然后是最重要的东西,然后查看树。

使用此代码有错误

subject_result

类似地使用rpart和ctree返回错误。

library(randomForest)  
randomForest(ENSC_Disc~.,data = df)

Error in randomForest.default(m, y, ...) : 
  NA/NaN/Inf in foreign function call (arg 1)

1 个答案:

答案 0 :(得分:1)

这是尝试使用cellForItemAt

caret.

第一个变量重要性:

library(tidyverse)
library(caret)
df<-data.frame(stringsAsFactors=FALSE,
           subject_result = c("ENSCPassed", "CHEMPassed", "ENSCPassed", "OTHERPassed",
                              "ENSCPassed", "MATHPassed", "ENSCPassed", "OTHERPassed",
                              "OTHERPassed", "OTHERPassed", "PHYSPassed", "CHEMPassed",
                              "MATHPassed", "ENSCPassed", "CMPTPassed", "OTHERPassed",
                              "CMPTPassed"),
           semester_num = c(9L, 4L, 16L, 7L, 7L, 2L, 8L, 11L, 4L, 12L, 1L, 4L, 3L,
                            11L, 8L, 11L, 12L),
           ENSC_Disc = c(1, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)
)
set.seed(233)
str(df)
df$ENSC_Disc<-as.factor(df$ENSC_Disc)
fit.rf<-train(ENSC_Disc~.,data=df,metric="Accuracy",method="rf",
              trControl=trainControl(method="cv",number=5))

enter image description here

实际的树:这不符合我的预期。更好的方法是使用plot(varImp(fit.rf)) ,但这仅适用于“ rpart”而不适用于“ rf”,但可以使用:

library(rattle)

enter image description here