我有如下数据。它具有三列。第一个是分类数据,第二列是数字,最后一个是我的班级标签。我想在我的数据上运行一个随机森林并绘制树以及变量的重要性。我的目标是找到最重要的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)
答案 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))
实际的树:这不符合我的预期。更好的方法是使用plot(varImp(fit.rf))
,但这仅适用于“ rpart”而不适用于“ rf”,但可以使用:
library(rattle)