R 在这种情况下,如何制作混淆矩阵? 库(h2o) h2o.init(n读数=-1) 测试

R 在这种情况下,如何制作混淆矩阵? 库(h2o) h2o.init(n读数=-1) 测试,r,machine-learning,deep-learning,h2o,R,Machine Learning,Deep Learning,H2o,使用函数h2o.confusionMatrix()获取混淆矩阵。简单的方法是为其提供模型,以及您想要分析的数据: library(h2o) h2o.init(nthreads=-1) test <- h2o.importFile(path = "C:/Users/AkshayJ/Documents/newapril/data/testdata.csv") train <- h2o.importFile(path = "C:/Users/AkshayJ/Documents/newapr

使用函数
h2o.confusionMatrix()
获取混淆矩阵。简单的方法是为其提供模型,以及您想要分析的数据:

library(h2o)
h2o.init(nthreads=-1)
test <- h2o.importFile(path = "C:/Users/AkshayJ/Documents/newapril/data/testdata.csv")
train <- h2o.importFile(path = "C:/Users/AkshayJ/Documents/newapril/data/traindata.csv")
y <- "Label"
train[,y] <- as.factor(train[,y])
test[,y] <- as.factor(test[,y])
train[,"Allele1Top"] <- as.factor(train[,"Allele1Top"])
test[,"Allele1Top"] <- as.factor(test[,"Allele1Top"])
train[,"Allele2Top"] <- as.factor(train[,"Allele2Top"])
test[,"Allele2Top"] <- as.factor(test[,"Allele2Top"])
train[,"Allele1Forward"] <- as.factor(train[,"Allele1Forward"])
test[,"Allele1Forward"] <- as.factor(test[,"Allele1Forward"])
train[,"Allele2Forward"] <- as.factor(train[,"Allele2Forward"])
test[,"Allele2Forward"] <- as.factor(test[,"Allele2Forward"])
train[,"Allele1AB"] <- as.factor(train[,"Allele1AB"])
test[,"Allele1AB"] <- as.factor(test[,"Allele1AB"])
train[,"Allele2AB"] <- as.factor(train[,"Allele2AB"])
test[,"Allele2AB"] <- as.factor(test[,"Allele2AB"])
train[,"Chr"] <- as.factor(train[,"Chr"])
test[,"Chr"] <- as.factor(test[,"Chr"])
train[,"SNP"] <- as.factor(train[,"SNP"])
test[,"SNP"] <- as.factor(test[,"SNP"])
x <- setdiff(names(train),y)
model <- h2o.deeplearning(
x = x,
y = y,
training_frame = train,
validation_frame = test,
distribution = "multinomial",
activation = "RectifierWithDropout",
hidden = c(32,32,32),
input_dropout_ratio = 0.2,
sparse = TRUE,
l1 = 1e-5,
epochs = 10)
predic <- h2o.predict(model, newdata = test)
table(pred=predic, true = test[,21])
如果查看
?h2o.confusionMatrix
,您会发现它还可以接受
H2OModelMetrics
对象。您可以通过调用
h2o.performance()
获得其中一个:

我推荐第二种方法,因为
p
对象包含关于您的模型有多好的其他有用信息

注意:无论哪种方式,您都没有使用您的预测。基本上:

  • h2o.性能
    如果要分析模型的质量
  • h2o.predict
    如果你想得到实际的预测

重新打开原因:虽然代码示例不是最小的(也不是可复制的,因为数据不包括在内),但足以理解问题并能够回答问题。Akshay,对于分类问题(像这样),使用iris数据集通常是好的(h2o在检测iris数据中的列类型方面也没有问题,因此不需要用
as.factor()
行将最小代码弄乱)。好的……记住这一点。我尝试了两种方法,但得到了相同的输出:混淆矩阵,具有相同的值、错误和阈值。为什么您更喜欢第二种方法(
h2o.confusionMatrix(p)
)@因为如果我打印
p
,它不仅告诉我混淆矩阵,还告诉我MSE、RMSE、Logloss、命中率等。它也是您为单个函数提供的参数,例如
h2o.MSE(p)
h2o.confusionMatrix(model, test)
p = h2o.performance(model, test)
h2o.confusionMatrix(p)