2017-04-22 46 views
1

我目前正试图建立一个多类预测模型来预测26个英文字母中的字母。目前我使用ANN,SVM,Ensemble和nB构建了一些模型。但我坚持评估这些模型的准确性。尽管混淆矩阵显示了按字母顺序的正确和错误预测,但我只能得到每个模型的总体准确性。有没有一种方法可以评估模型的准确性,类似于二项分类的ROC和AUC值。 注意:我目前使用H2o软件包运行模型,因为它为我节省了更多时间。如何评估R中的多项分类模型?

回答

2

一旦您在H2O中训练模型,如果您只需:print(fit)它会向您显示该模型类型的所有可用指标。对于多类,我建议h2o.mean_per_class_error()。虹膜数据集

R代码里面例如:

library(h2o) 
h2o.init(nthreads = -1) 

data(iris) 
fit <- h2o.naiveBayes(x = 1:4, 
         y = 5, 
         training_frame = as.h2o(iris), 
         nfolds = 5) 

一旦你的模型,我们可以使用h2o.performance()功能查看所有的指标来评估模型的性能:

> h2o.performance(fit, xval = TRUE) 
H2OMultinomialMetrics: naivebayes 
** Reported on cross-validation data. ** 
** 5-fold cross-validation on training data (Metrics computed for combined holdout predictions) ** 

Cross-Validation Set Metrics: 
===================== 

Extract cross-validation frame with `h2o.getFrame("iris")` 
MSE: (Extract with `h2o.mse`) 0.03582724 
RMSE: (Extract with `h2o.rmse`) 0.1892808 
Logloss: (Extract with `h2o.logloss`) 0.1321609 
Mean Per-Class Error: 0.04666667 
Hit Ratio Table: Extract with `h2o.hit_ratio_table(<model>,xval = TRUE)` 
======================================================================= 
Top-3 Hit Ratios: 
    k hit_ratio 
1 1 0.953333 
2 2 1.000000 
3 3 1.000000 

或者你可以看看特定的公制,如mean_per_class_error

> h2o.mean_per_class_error(fit, xval = TRUE) 
[1] 0.04666667 

如果要查看测试装置的性能,请执行以下操作:

perf <- h2o.performance(fit, test) 
h2o.mean_per_class_error(perf) 
+0

谢谢Erin的快速评论。我是否也可以知道,如果我可以纯粹走过mean_per_class_error,或者我还应该留意AIC,让单个模型选择最佳模型。 – adimessi30

+0

我建议使用'mean_per_class_error'来选择最佳模型。 –

+0

再次感谢Erin,让我完成模型和他们的比较,并在这里发表您的评论:) – adimessi30