【发布时间】:2018-05-06 02:32:22
【问题描述】:
我一直在尝试为不同的值运行 randomForest 模型。我习惯于在 STATA 中使用“foreach”命令 - 但 R 的工作方式似乎有所不同。
我已经搜索了很长一段时间都没有成功,寻找一些非常简单的东西(我认为)。这是我正在尝试做的事情:
我正在运行以下 randomForest 模型:
modelRandom = randomForest(y~a+b+c+d+e, data=dataframe, mtry=4, ntree=30)
现在 - 在此之后我想预测每个观察的概率,如下所示:
Prob<-predict(modelRandom, dataframe, type = 'prob')
现在问题来了:我想遍历 randomForest 模型中的一个变量 (b) 的值,并预测每个值的概率。
这个 (b) 变量包含十二个不同的值 (1:12)。我希望 R 将每个观察值的 b 变量更改为 1 并预测概率,然后再次更改 2 预测概率中所有观察值的 b 变量。然后到 3、4、5 等等。
然后应该将所有这些概率放入一张表中,并在其旁边放上相应的变量 c,如下所示:
C prob1 prob2 prob3 prob4 prob5 prob6 prob7 prob8 prob9 prob10 prob11 prob12
我想要 C 在那里,否则我无法判断概率属于哪个观察。
我想出了这个,但我认为我离我想要的还很远:
for(b in dataframe){
prob[b]<-predict(modelRandom, dataframe, type = 'prob')
}
这里有一些关于数据集的更多信息。我掩盖了其中的一些,因为它包含我显然无法分享的客户信息。
structure(list(X = c("NVT", "NVT", "NVT", "NVT", "NVT",
"NVT"), a = structure(c(1L, 2L, 1L, 1L, 2L, 2L), .Label = c("0",
"1"), class = "factor"), d= structure(c(2L, 2L, 1L, 1L, 1L, 2L), .Label = c("Dhr.",
"Mevr."), class = "factor"), c = c("3331GE", "2285EH",
"9401GE", "5591DZ", "2611CE", "1359KB"), b = structure(c(12L,
12L, 12L, 12L, 12L, 12L), .Label = c("1", "2", "3", "4", "5",
"6", "7", "8", "9", "10", "11", "12"), class = "factor"), e = structure(c(5L,
6L, 5L, 5L, 5L, 5L), .Label = c("1", "2", "3", "4", "5", "6",
"7", "8"), class = "factor"), .Names = c("X", "a", "d", "c", "b", "e"), row.names = c(NA,
6L), class = "data.frame")
谢谢!
【问题讨论】:
-
请提供示例数据。使用
dput(head(dataframe))并将控制台的输出复制到您的问题中。 -
已为您添加。
-
我假设您希望
X在您的表中取值"1"的概率? -
如果我们指的是包含“NVT”的X,那么没有。 X 不应该在表中。最终表格应包含每个观察的 (12) 个概率。