H2O 上的混淆矩阵

Posted

技术标签:

【中文标题】H2O 上的混淆矩阵【英文标题】:Confusion Matrix on H2O 【发布时间】:2019-01-12 19:19:51 【问题描述】:

最终编辑:这个问题最终出现了,因为目标数组是应该代表类别的整数,所以它正在执行回归。一旦我使用.asfactor() 将它们转换为因子,那么下面答案中详述的混淆矩阵方法就起作用了


我正在尝试在我的随机森林模型 (my_model) 上运行混淆矩阵,但文档帮助不大。从here 它说命令是h2o.confusionMatrix(my_model) 但在3.0 中没有这样的东西。

以下是拟合模型的步骤:

from h2o.estimators.random_forest import H2ORandomForestEstimator

data_h = h2o.H2OFrame(data)
train, valid = data_h.split_frame(ratios=[.7], seed = 1234)

my_model = H2ORandomForestEstimator(model_id = "rf_h", ntrees = 400, 
max_depth = 30, nfolds = 8, seed = 25)
my_model.train(x = features, y = target, training_frame=train)
pred = rf_h.predict(valid)

我尝试了以下方法:

my_model.confusion_matrix()

AttributeError: type object 'H2ORandomForestEstimator' has no attribute 
'confusion_matrix'

来自this example。

我尝试使用制表符补全来找出它可能是什么并尝试过:

h2o.model.confusion_matrix(my_model)

TypeError: 'module' object is not callable

h2o.model.ConfusionMatrix(my_model)

仅输出所有模型诊断信息,然后输出错误:

H2OTypeError: Argument `cm` should be a list, got H2ORandomForestEstimator 

最后,

h2o.model.ConfusionMatrix(pred)

这给出了与上面相同的错误。

这里不知道怎么办,如何查看模型的混淆矩阵的结果?

编辑:在 Context 问题的开头添加了更多代码

【问题讨论】:

你在做回归或分类问题吗?由于分类问题,我无法重现此问题。 @Lauren 嗨,我在代码块的顶部包含了更多上下文。我意识到我没有对验证集进行任何预测,所以我尝试运行h2o.model.ConfusionMatrix(pred),但没有成功。这是一个分类问题。 【参考方案1】:

请参阅documentation 以获取完整的参数列表。为了您的方便,这里是列表confusion_matrix(metrics=None, thresholds=None, train=False, valid=False, xval=False)

这是一个如何使用该方法的工作示例:

import h2o
from h2o.estimators.random_forest import H2ORandomForestEstimator
h2o.init()


# import the cars dataset:
# this dataset is used to classify whether or not a car is economical based on
# the car's displacement, power, weight, and acceleration, and the year it was made
cars = h2o.import_file("https://s3.amazonaws.com/h2o-public-test-data/smalldata/junit/cars_20mpg.csv")

# convert response column to a factor
cars["economy_20mpg"] = cars["economy_20mpg"].asfactor()

# set the predictor names and the response column name
predictors = ["displacement","power","weight","acceleration","year"]
response = "economy_20mpg"

# split into train and validation sets
train, valid = cars.split_frame(ratios = [.8], seed = 1234)

# try using the binomial_double_trees (boolean parameter):
# Initialize and train a DRF
cars_drf = H2ORandomForestEstimator(binomial_double_trees = False, seed = 1234)
cars_drf.train(x = predictors, y = response, training_frame = train, validation_frame = valid)
cars_drf.confusion_matrix()
# or specify the validation frame
cars_drf.confusion_matrix(valid=True)

【讨论】:

以上是关于H2O 上的混淆矩阵的主要内容,如果未能解决你的问题,请参考以下文章

R语言使用caret包的predict函数对模型在测试集上的表现进行推理和预测计算模型的混淆矩阵设置参数mode计算基于混淆矩阵产生的衍生指标(特异度敏感度F1ppvnpv等)

遥感软件中混淆矩阵是如何产生的

混淆矩阵是什么?Python多分类的混淆矩阵计算及可视化(包含原始混淆矩阵及归一化的混淆矩阵):基于skelarn框架iris数据集

怎么计算混淆矩阵的消费者精度

matlab混淆矩阵怎么变大

使用pytorch计算分类模型的混淆矩阵