【问题标题】:h2o.deeplearning predict error in Rh2o.deeplearning 预测 R 中的错​​误
【发布时间】:2018-01-09 01:20:56
【问题描述】:

DNN 是使用 h2o.deeplearning 函数执行的。

最后,我使用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

如何可视化预测表??

【问题讨论】:

    标签: r neural-network deep-learning h2o


    【解决方案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()函数来自 caret 包,不知道如何处理h2oframe对象 - 这是错误的原因。 caret::confusionMatrix()函数期望第一个参数在课程中为矢量,“因子”。

    如果您想使用caret::ConfusionMatrix() 函数,那么您只需将pred 对象转换为正确的格式(这需要将其从H2O Cluster 内存中带到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 object上使用h2o.confusionMatrix()函数。

    【讨论】:

    • 谢谢。但如何使用h2o.confusionmatrix ?? ? ?
    • 请参阅函数的R文档:h2o.confusionMatrix(deep_model, newdata = deep_test) span>
    猜你喜欢
    • 1970-01-01
    • 2018-01-07
    • 2017-12-10
    • 2019-08-08
    • 1970-01-01
    • 1970-01-01
    • 2015-08-16
    • 2018-03-04
    • 1970-01-01
    相关资源
    最近更新 更多