2017-01-19 42 views
-2

我試圖應用助推模式,但我一直收到此錯誤。任何幫助都將不勝感激。這是一個來自kaggle,UCI信用卡數據的數據集,如果你想知道的話。eval(expr,envir,enclos)中的錯誤:object'PAY_0.1'not found(Boosting)

DataSplit<-createDataPartition(UCIdata$default.payment.next.month,p=.8,list=FALSE) 
boosttrain<-UCIdata[DataSplit,] 
boosttest<-UCIdata[-DataSplit,] 
gmbGrid2<-expand.grid(maxdepth=seq(1,10,1),iter=50,nu=seq(0.1,1,0.1)) 
boostingcontrol2<-trainControl(method="repeatedcv",classProbs = TRUE,summaryFunction = twoClassSummary) 
gmbFit2<-train(default.payment.next.month~.,data=boosttrain[,2:25],method="ada",trControl=boostingcontrol2,verbose=FALSE,tuneGrid=gmbGrid2) 

然後我得到了這一點。

警告消息: 1:在train.default(X,Y,重量= W,...): 度量 「準確度」 是不是在結果集。 ROC將被用來代替。 2:在eval(expr,envir,enclos)中: Fold01.Rep1的預測失敗:nu = 0.1,maxdepth = 1,iter = 50 eval(expr,envir,enclos)中的錯誤:object'PAY_0.1'not找到

在數據集中沒有PAY_0.1,只有PAY_0,PAY_2,PAY_3,...,PAY_6。 PAY_0.1從哪裏來?

+0

啊這裏有什麼投票下來?我對R很新,給我一個休息oiiiii oi – anoanoanoano

回答

1

我猜PAY_0是數據集中的二進制/因子變量。 PAY_0.1是從該變量PAY_0.0和PAY_0.1的擴展中創建的虛擬變量。很可能PAY_0只有很少的1,所以PAY_0.1將會有很少的1。當與CV一起訓練時(重複CV),可能有一次摺疊可能沒有得到任何1,因此這個錯誤。或者當您構建深度爲1的樹時,基於PAY_0.1變量的樹不會有破損。

要糾正此問題,請做到:

  1. 啓動深度範圍有點高。因此,如果您使用maxdepth=seq(4,10,1)而不是maxdepth=seq(1,10,1),則可能不會出現此問題。深度1樹太淺。
  2. 檢查PAY_0的分配。如果1的數量太少,則可以對1進行上採樣或對0進行下采樣。
相關問題