2017-12-23 33 views
0

지금까지 RandomForest와 함께 CARET 패키지를 사용했습니다."RSNNS"패키지로 CARET의 기차 기능을 사용할 수 없습니다.

크로스 유효성 검사 기능이있는 CARET의 train 기능을 사용하며 모두 잘 작동합니다.

신경망을 사용해보고 RSNNS 패키지를 업로드 할 때까지입니다. 이제 기차를 사용할 때마다 다음과 같은 오류가 발생합니다.

Error in UseMethod("train") : no applicable method for 'train' applied to an object of class "c('tbl_df', 'tbl', 'data.frame')"

버그가 있습니까? RSNNS가 왜 그런 이유입니까?

답변

3

캐럿 이후에 RSNNS 버전이로드되었으므로 RSNNS::train()caret::train()을 마스킹하는 것이 문제입니다. packageName::function() 구문을 사용하여 caret::train()을 호출하여 문제를 해결하십시오.

library(caret) 
library(RSNNS) 

library(mlbench) 
data(Sonar) 

inTraining <- createDataPartition(Sonar$Class, p = .75, list=FALSE) 
training <- Sonar[inTraining,] 
testing <- Sonar[-inTraining,] 
fitControl <- trainControl(method = "cv", 
          number = 3) 
# error because RSNNS::train does not work like caret::train() 
system.time(fit <- train(Class ~ ., method="rf",data=Sonar,trControl = fitControl)) 
# correct by calling caret::train() 
system.time(fit <- caret::train(Class ~ ., method="rf",data=Sonar,trControl = fitControl)) 
fit 

... 그리고 출력 : 마법처럼

> system.time(fit <- train(Cx=Sonar[,-61],y=Sonar[,61], method="rf",data=Sonar,trControl = fitControl)) 
Error in UseMethod("train") : 
    no applicable method for 'train' applied to an object of class "data.frame" 
Timing stopped at: 0.033 0 0.034 
> # correct by calling caret::train() 
> system.time(fit <- caret::train(x=Sonar[,-61],y=Sonar[,61], method="rf",data=Sonar,trControl = fitControl)) 
    user system elapsed 
    3.888 0.069 3.981 
> fit 
Random Forest 

208 samples 
60 predictor 
    2 classes: 'M', 'R' 

No pre-processing 
Resampling: Cross-Validated (3 fold) 
Summary of sample sizes: 139, 138, 139 
Resampling results across tuning parameters: 

    mtry Accuracy Kappa  
    2 0.8175983 0.6292393 
    31 0.7645963 0.5249374 
    60 0.7694272 0.5336925 

Accuracy was used to select the optimal model using the largest value. 
The final value used for the model was mtry = 2. 
> 
+0

을 일했다! 감사! 나는 그것이 왜 문서화되지 않는지 궁금하다. – Mark2Bra

+1

@ Mark2Bra - 이것은 2002 년 r help mailing list (https://stat.ethz.ch/pipermail/r-help/2002-April/020891.html)를 기반으로 한 적어도 15 년 된 문제입니다. . 'packageName :: function()'구문을 사용하는 해결책은 [UCLA 디지털 연구 및 교육 연구소] (https://stats.idre.ucla.edu/r)의이 게시물과 같이 여러 곳에 문서화되어 있습니다./faq/how-does-r-handle-overlapping-object-names /) 웹 사이트를 방문하십시오. –