2017-06-01 127 views
1

我使用的是h2o 3.10.4.8版本。如何解释H2O的混淆矩阵?

library(magrittr) 
library(h2o) 

h2o.init(nthreads = -1, max_mem_size = "6g") 

data.url <- "https://raw.githubusercontent.com/DarrenCook/h2o/bk/datasets/" 

iris.hex <- paste0(data.url, "iris_wheader.csv") %>% 
    h2o.importFile(destination_frame = "iris.hex") 

y <- "class" 
x <- setdiff(names(iris.hex), y) 


model.glm <- h2o.glm(x, y, iris.hex, family = "multinomial") 

preds <- h2o.predict(model.glm, iris.hex) 

h2o.confusionMatrix(model.glm) 
h2o.table(preds["predict"]) 

这是h2o.confusionMatrix(model.glm)输出:

Confusion Matrix: vertical: actual; across: predicted 
       Iris-setosa Iris-versicolor Iris-virginica Error  Rate 
Iris-setosa    50    0    0 0.0000 = 0/50 
Iris-versicolor   0    48    2 0.0400 = 2/50 
Iris-virginica   0    1    49 0.0200 = 1/50 
Totals     50    49    51 0.0200 = 3/150 

由于它说跨:预测,我解释这意味着,该模型由50(0 + 48 + 2)的预测是IRIS-云芝。

这是h2o.table(preds["predict"])输出:

  predict Count 
1  Iris-setosa 50 
2 Iris-versicolor 49 
3 Iris-virginica 51 

这告诉我,对模型所做的预测,49是虹膜云芝。

混淆矩阵是否错误标记或我在解释结果时犯了错误?

+0

这是另一种方式:实际标签是垂直的(行名称),预测的标签是横跨的(列名称)。这有点令人困惑,但是看错误率,反过来也没有意义 – HubertL

回答

0

你没有犯错;标签混乱(并且导致人们认为行和列被切换)。这是fixed recently,并将包含在下一版本的H2O中。

2

行名(垂直)是实际的标签。

列名(跨)是预测的标签。