2017-08-02 13 views
2

DNNは、h2o.deeplearning関数を使用して実行されました。h2o.deplexning予測誤差R

最後に、私はh2o.predict関数を使用してテストデータ予測を実行しました。

しかし、実際の値と予測値を視覚的に表示しようとすると、エラーが発生します。ここに私のコードです:

library("h2o") 
h2o.init(nthreads = -1, max_mem_size = "5G") 

credit<-read.csv("http://freakonometrics.free.fr/german_credit.csv", header=TRUE) 
F=c(1,2,4,5,7,8,9,10,11,12,13,15,16,17,18,19,20,21) 
for(i in F) credit[,i]=as.factor(credit[,i]) 
str(credit) 

library(caret) 
set.seed(1000) 
intrain<-createDataPartition(y=credit$Creditability, p=0.7, list=FALSE) 
train<-credit[intrain, ] 
test<-credit[-intrain, ] 


deep_train<-as.h2o(train,destination_frame = "deep_train") 
deep_test<-as.h2o(test,destination_frame = "deep_test") 


h2o.str(deep_train) 
h2o.str(deep_test) 

x<-names(train[,-1]) 
y<-"Creditability" 

deep_model<-h2o.deeplearning(x=x, y=y, 
          training_frame = deep_train, 
          activation = "RectifierWithDropout", 
          hidden=c(30,40,50), 
          epochs = 10, 
          input_dropout_ratio = 0.2, 
          hidden_dropout_ratios = c(0.5,0.5,0.5), 
          l1=1e-5 ,l2= 0, 
          rho = 0.99, epsilon = 1e-08, 
          loss = "CrossEntropy", 
          variable_importances = TRUE) 



pred<-h2o.predict(deep_model, newdata=deep_test) 

confusionMatrix(pred$predict, test$Creditability) 
Error in unique.default(x, nmax = nmax) : 
    invalid type/length (environment/0) in vector allocation 

予測テーブルを視覚化するには?

答えて

1

predオブジェクトはH2OFrameです。

> class(pred) 
[1] "H2OFrame" 
> head(pred) 
    predict  p0  p1 
1  1 0.1776320 0.8223680 
2  1 0.1959193 0.8040807 
3  1 0.2143592 0.7856408 
4  1 0.1561238 0.8438762 
5  1 0.1461881 0.8538119 
6  0 0.2978314 0.7021686 

confusionMatrix()機能はH2OFrameオブジェクトに何をすべきか分かっていないキャレットパッケージからである - これがエラーの原因です。 caret::confusionMatrix()関数は、第1引数がクラス「R」のベクトルであることを期待しています。

caret::ConfusionMatrix()関数を使用する場合は、predオブジェクトを正しい形式(H2OクラスタメモリからRメモリに移動し、それを係数に変換する必要があります)に変換するだけで済みます。

> confusionMatrix(as.factor(as.data.frame(pred$predict)[,1]), test$Creditability) 

Confusion Matrix and Statistics 

      Reference 
Prediction 0 1 
     0 13 10 
     1 77 200 

       Accuracy : 0.71    
       95% CI : (0.6551, 0.7607) 
    No Information Rate : 0.7    
    P-Value [Acc > NIR] : 0.3793   

        Kappa : 0.123   
Mcnemar's Test P-Value : 1.484e-12  

      Sensitivity : 0.14444   
      Specificity : 0.95238   
     Pos Pred Value : 0.56522   
     Neg Pred Value : 0.72202   
      Prevalence : 0.30000   
     Detection Rate : 0.04333   
    Detection Prevalence : 0.07667   
     Balanced Accuracy : 0.54841   

     'Positive' Class : 0    

また、あなたは直接deep_modelオブジェクト上h2o.confusionMatrix()機能を使用することができます。

+0

ありがとうございます。しかし、どのようにh2o.confusionMatrixを使用する?? ? ? –

+1

関数についてのRのドキュメントを参照してください: 'h2o.confusionMatrix(deep_model、newdata = deep_test)' –