尝试使用R中的概率和随机forrest进行预测时出现接收错误

时间:2019-04-18 22:51:23

标签: r probability random-forest prediction roc

我正在尝试创建由十个不同模型组成的堆叠模型,以共同预测变量(isDuplicate)。经过一些工作,我现在有了一个包含所有十个概率的数据框以及变量isDuplicate。

尝试我的代码时收到以下错误,但是我不确定这是指什么或如何解决它。

数据:(请注意,这里的数据是前10个值,但我的val_all行= 12443和test_all行= 3160。

test_all <- structure(list(id = 1:10, prob.x = c(0.28596679330115, 0.279735053361815, 
0.338603819307375, 0.194599435054571, 0.476363759900297, 0.275238339603548, 
0.176972255733405, 0.252946580364815, 2.22044604925031e-16, 0.104812153176591
), prob.posterior.0.x = c(0.738863411672926, 0.699156184679517, 
0.694836518606672, 0.82201990638751, 0.512084825115603, 0.752512686129015, 
0.833756055709206, 0.77889031399789, 0.85923342860232, 0.897162910496329
), prob.posterior.0.y = c(0.816868907027163, 0.88314882358293, 
0.876000590100842, 0.000346099954676674, 0.281801842618581, 0.90774486158684, 
0.953466905345594, 0.972941904925762, 1, 0.989038854731561), 
    prob.y = c(0.102, 0.054, 0.094, 0.046, 0.418, 0.034, 0.004, 
    0.064, 0.024, 0.002), prob.x.x = c(0.371666666666667, 0.181666666666667, 
    0.365, 0.115, 0.603333333333333, 0.145, 0.108333333333333, 
    0.255, 0.065, 0.0283333333333333), prob.y.y = c(0.468571428571429, 
    0.304285714285714, 0.531428571428571, 0.2, 0.535714285714286, 
    0.182857142857143, 0.218571428571429, 0.37, 0.0671428571428571, 
    0.0542857142857143), prob.x.x.x = c(0.4675, 0.30375, 0.505, 
    0.2575, 0.51625, 0.17375, 0.205, 0.37375, 0.0675, 0.0575), 
    prob.y.y.y = c(0.483333333333333, 0.33, 0.497777777777778, 
    0.252222222222222, 0.522222222222222, 0.161111111111111, 
    0.202222222222222, 0.384444444444444, 0.0666666666666667, 
    0.0688888888888889), prob.x.x.x.x = c(0.466, 0.339, 0.482, 
    0.287, 0.483, 0.171, 0.204, 0.377, 0.067, 0.057), prob.y.y.y.y = c(0.488666666666667, 
    0.353333333333333, 0.456666666666667, 0.227333333333333, 
    0.496666666666667, 0.151333333333333, 0.226666666666667, 
    0.384666666666667, 0.082, 0.044), isDuplicate = structure(c(1L, 
    1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 2L), .Label = c("0", "1"), class = "factor")), row.names = c(NA, 
10L), class = "data.frame")



val_all <- structure(list(id = 1:10, prob.x = c(0.208369633122333, 0.114718412814818, 
0.181164427637408, 0.130043351783162, 0.17371403517561, 0.123186777419808, 
0.423583436974847, 0.28277997411165, 0.438471447058347, 0.217345076415978
), prob.posterior.0.x = c(0.808452472441717, 0.890783910030093, 
0.833505931776292, 0.879454469034375, 0.840119123146987, 0.883055989550092, 
0.573369154998673, 0.745128816335, 0.555665197512509, 0.806449578390117
), prob.posterior.0.y = c(0.933817823925418, 0.981258530888843, 
0.951414489947445, 0.983922593291254, 0.953332378642043, 0.983279034686162, 
0.856370204189886, 0.843315249141696, 0.839892269098147, 0.962523398598772
), prob.y = c(0.066, 0.004, 0.006, 0.006, 0.008, 0.062, 0.066, 
0.206, 0.018, 0.054), prob.x.x = c(0.261666666666667, 0.04, 0.0783333333333333, 
0.035, 0.0616666666666667, 0.158333333333333, 0.186666666666667, 
0.578333333333333, 0.0433333333333333, 0.246666666666667), prob.y.y = c(0.41, 
0.108571428571429, 0.19, 0.102857142857143, 0.128571428571429, 
0.184285714285714, 0.331428571428571, 0.704285714285714, 0.0742857142857143, 
0.435714285714286), prob.x.x.x = c(0.44, 0.1125, 0.14125, 0.10375, 
0.13375, 0.19875, 0.33125, 0.74, 0.06375, 0.4025), prob.y.y.y = c(0.447777777777778, 
0.106666666666667, 0.208888888888889, 0.108888888888889, 0.118888888888889, 
0.188888888888889, 0.372222222222222, 0.751111111111111, 0.0611111111111111, 
0.446666666666667), prob.x.x.x.x = c(0.433, 0.118, 0.205, 0.119, 
0.129, 0.178, 0.382, 0.728, 0.048, 0.428), prob.y.y.y.y = c(0.436, 
0.112666666666667, 0.218666666666667, 0.111333333333333, 0.142, 
0.173333333333333, 0.343333333333333, 0.740666666666667, 0.0573333333333333, 
0.447333333333333), isDuplicate = structure(c(1L, 1L, 2L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L), .Label = c("0", "1"), class = "factor")), row.names = c(NA, 
10L), class = "data.frame")


使用val_all数据集,我想训练我的randomForest。

final_trainer <- randomForest(isDuplicate~.,data =val_all,mtry =1,ntree=600)
final_trainer_pred <- predict(final_trainer,newData=val_all,type = 'prob')[,2] %>% 
  prediction(labels=val_all$isDuplicate)

performance(final_trainer_pred, "auc")@y.values[[1]]

这一切都可以...但是当我在test_all数据集上运行它时遇到错误时。

final_test <- predict(final_trainer,newData = test_all,type ="prob")[,2] %>% prediction(labels =test_all$isDuplicate)


performance(final_test,"auc")@y.values[[1]]

理想情况下,我希望获得test_all df的AUC的值。另外,鉴于我提供的数据框非常小,希望这不会引起问题。

0 个答案:

没有答案