如何在随机森林算法中使用groupby和model来获得数据中单个个人id的单个预测?
下面给出的是伪数据-训练数据 我正在为R中的二进制分类实现一个随机森林算法如何在随机森林算法中使用groupby和model来获得数据中单个个人id的单个预测?,r,machine-learning,random-forest,data-science,R,Machine Learning,Random Forest,Data Science,下面给出的是伪数据-训练数据 我正在为R中的二进制分类实现一个随机森林算法 rf=randomForest(Default~.,data=traindata,ntree=300,mtry=18,importance=TRUE) 我想在个人身份证上匹配该型号 如personid 112预测1或0 现在,我的模型接受了全部数据,并对每个月给出了不同的预测。 我想得到基于personid的预测 单个id的单个预测不适用于不同的月份 我的人名总数是265 使用dplyr软件包中的groupby()对
rf=randomForest(Default~.,data=traindata,ntree=300,mtry=18,importance=TRUE)
我想在个人身份证上匹配该型号
如personid 112预测1或0
现在,我的模型接受了全部数据,并对每个月给出了不同的预测。
我想得到基于personid的预测
单个id的单个预测不适用于不同的月份
我的人名总数是265
使用dplyr软件包中的groupby()
对我有帮助吗
由于personid的数量很大,我将如何根据新数据进行预测
*由于这是一个财务数据,条件I无法对数据进行平均以使其平坦化。您可以使用
dplyr
和tidyr
获取每个personID上一行的所有数据。请参见下面的示例。你会得到很多额外的变量用于rf模型,这可能是你所需要的
library(dplyr)
library(tidyr)
spread_data <- df %>%
gather(Balances, value, starts_with("Balance")) %>%
unite(Bal_month, Balances, Month) %>%
spread(Bal_month, value)
personid Default Balance1_Month1 Balance1_Month2 Balance1_Month3 Balance1_Month4 Balance2_Month1 Balance2_Month2 Balance2_Month3
1 112 1 123465 45343456 NA NA 234567 5498731 NA
2 113 0 534564 9616613 6164 NA 64613 3496 3189479
3 114 1 621 1615494 32165 NA 3168 97 165197
4 115 0 123164964 97946 21679 791639 47643 1679 179
Balance2_Month4
1 NA
2 NA
3 NA
4 167976
库(dplyr)
图书馆(tidyr)
分布数据%
聚集(余额,值,以(“余额”)开头)%>%
单位(余额月、余额月)%>%
价差(余额月、价值)
personid默认余额1个月1个月2个月2个月3个月1个月4个月2个月2个月2个月2个月3
111211234645343456 NA 2345675498731 NA
21130 534564 9616613 6164 NA 64613 3496 3189479
31141621161549432165NA31689716519797
4 115 0 123164964 97946 21679 791639 47643 1679 179
余额2_月4
1 NA
2 NA
3 NA
4 167976
更多关于铸造的阅读:
或
使用的示例数据:
df <-
structure(
list(
personid = c(
112L,
112L,
113L,
113L,
113L,
114L,
114L,
114L,
115L,
115L,
115L,
115L
),
Month = c(
"Month1",
"Month2",
"Month1",
"Month2",
"Month3",
"Month1",
"Month2",
"Month3",
"Month1",
"Month2",
"Month3",
"Month4"
),
Balance1 = c(
123465,
45343456,
534564,
9616613,
6164,
621,
1615494,
32165,
123164964,
97946,
21679,
791639
),
Balance2 = c(
234567,
5498731,
64613,
3496,
3189479,
3168,
97,
165197,
47643,
1679,
179,
167976
),
Default = c(1L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 0L)
),
.Names = c("personid", "Month", "Balance1", "Balance2", "Default"),
class = "data.frame",
row.names = c(NA,-12L)
)
df