如何在随机森林算法中使用groupby和model来获得数据中单个个人id的单个预测?

如何在随机森林算法中使用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()对

下面给出的是伪数据-训练数据

我正在为R中的二进制分类实现一个随机森林算法

rf=randomForest(Default~.,data=traindata,ntree=300,mtry=18,importance=TRUE)
我想在个人身份证上匹配该型号

personid 112预测10

现在,我的模型接受了全部数据,并对每个月给出了不同的预测。 我想得到基于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