2013-09-02 18 views
11

Herhangi bir şekilde bir rf modelinin değişken önemini elde etmeye çalışıyorum. Şimdiye kadar denediğim yaklaşım budur, ancak alternatif öneriler çok açıktır. Ben R modeli eğitim verdiKaret paketini kullanarak değişken önem (hata); RandomForest algoritması

:

require(caret) 
require(randomForest) 
myControl = trainControl(method='cv',number=5,repeats=2,returnResamp='none') 
model2 = train(increaseInAssessedLevel~., data=trainData, method = 'rf', trControl=myControl) 

veri kümesi oldukça büyük olmakla birlikte, modelin iyi çalışır. Ben onun kısımlarına erişmek ve bu şekilde komutları çalıştırabilirsiniz:

> model2[3] 
$results 
    mtry  RMSE Rsquared  RMSESD RsquaredSD 
1 2 0.1901304 0.3342449 0.004586902 0.05089500 
2 61 0.1080164 0.6984240 0.006195397 0.04428158 
3 120 0.1084201 0.6954841 0.007119253 0.04362755 

Ama aşağıdaki hatayı alıyorum: Anlaşılan bir sarıcı olacaksa gerekiyordu

> varImp(model2) 
Error in varImp[, "%IncMSE"] : subscript out of bounds 

, ama bu durum görünmüyor : (bakınız: http://www.inside-r.org/packages/cran/caret/docs/varImp)

varImp.randomForest(model2) 
Error: could not find function "varImp.randomForest" 

Ancak bu, özellikle tek bir:

> traceback() 
No traceback available 

> sessionInfo() 
R version 3.0.1 (2013-05-16) 
Platform: x86_64-redhat-linux-gnu (64-bit) 

locale: 
[1] LC_CTYPE=en_GB.UTF-8  LC_NUMERIC=C    
[3] LC_TIME=en_GB.UTF-8  LC_COLLATE=en_GB.UTF-8  
[5] LC_MONETARY=en_GB.UTF-8 LC_MESSAGES=en_GB.UTF-8 
[7] LC_PAPER=C     LC_NAME=C     
[9] LC_ADDRESS=C    LC_TELEPHONE=C    
[11] LC_MEASUREMENT=en_GB.UTF-8 LC_IDENTIFICATION=C  

attached base packages: 
[1] parallel stats  graphics grDevices utils  datasets methods 
[8] base  

other attached packages: 
[1] elasticnet_1.1  lars_1.2   klaR_0.6-9   MASS_7.3-26  
[5] kernlab_0.9-18  nnet_7.3-6   randomForest_4.6-7 doMC_1.3.0   
[9] iterators_1.0.6 caret_5.17-7  reshape2_1.2.2  plyr_1.8   
[13] lattice_0.20-15 foreach_1.4.1  cluster_1.14.4  

loaded via a namespace (and not attached): 
[1] codetools_0.2-8 compiler_3.0.1 grid_3.0.1  stringr_0.6.2 
[5] tools_3.0.1 

cevap

25

Önem derecesi puanlarının hesaplanması biraz zaman alabilir ve train otomatik olarak oluşturulmayacaktır randomForest. importance = TRUE numaralı telefonu arayın ve train numaralı telefonu arayın.

Max

3

Bu, train() nesnesinden elde edilen saf bir Rasgele Orman modeli değil, farklı nesnelerin (son modelin kendisini ve çapraz doğrulama sonuçlarını içeren) bir listesi değildir. Bunları ls(model2) ile görebilirsiniz. Son modeli kullanmak için varImp(model2$finalModel) numaralı telefonu arayın.

+0

Bu benim için çalışmıyor, ben = DOĞRU önem ekleyerek çalışma yaptı. –