如何在python中将h2o模型性能指标转换为json

时间:2017-06-19 10:55:52

标签: h2o

例如我有这个代码:

import h2o
h2o.init()
from h2o.estimators.naive_bayes import H2ONaiveBayesEstimator
data = h2o.import_file("myfile.csv")
train,valid = data.split_frame([0.8])
predictors = ['col1','col2','col3','col4']
result = 'col_result'
model = H2ONaiveBayesEstimator()
model.train(predictors,result,training_frame=train,validation_frame=valid)
model.model_performance()

model.model_performance()之后,我将能够看到我们的模型性能,但现在我想通过API作为JSON数据发送,有什么方法可以轻松地进行转换办法?谢谢。

2 个答案:

答案 0 :(得分:2)

好的,经过一些研究并尝试和错误,我试着看看结果中包含的数据是什么。由此:

model.model_performance()

它只会在控制台中显示模型性能,但如果您尝试将其作为

运行
type(model.model_performance())

您将获得返回的对象类型:

<class 'h2o.model.metrics_base.H2OMultinomialModelMetrics'>

这意味着对象本身是一个metcis类,根据http://docs.h2o.ai/h2o/latest-stable/h2o-py/docs/metrics.html,H2OMultinomialModelMetrics是MetricBase的一个实例,如果我们在http://docs.h2o.ai/h2o/latest-stable/h2o-py/docs/metrics.html#h2o.model.metrics_base.MetricsBase中看到,我们发现了一些常见的度量标准可用。

进一步说,如果我们尝试使用

dir(model.model_performance())

我们将按预期获得一系列属性,包括 auc aic rmse ,等等。

如果我们试着打电话:

model.model_performance().rmse()

在我的情况下,我得到0.4824827476199047。

我得到的最有趣的发现是当我尝试执行 auc 方法时

model.model_performance().auc()

我收到错误,说词典中不存在“AUC”

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "D:\Development\python\lib\site-packages\h2o\model\model_base.py", line 634, in auc
    for k, v in viewitems(tm): m[k] = None if v is None else v.auc()
  File "D:\Development\python\lib\site-packages\h2o\model\metrics_base.py", line 156, in auc
    return self._metric_json['AUC']
KeyError: 'AUC'

正如我们所看到的,它有 _metric_json 字典。我尝试打印 model.model_performance()._ metric_json 字典,并获得列出所有指标的字典,您可以尝试使用 _metric_json.keys()来获取所有的密钥,并自己解析为JSON。

修改1

即使为了让生活更轻松,这段代码也展示了如何轻松地将类转换为json字符串:

json_string = str(model.model_performance()._get_metrics)

编辑2

编辑1中的字符串不是json格式,更好的方法是在条带化时转换为json和字典:

import json

json_string = json.dumps(str(model.model_performance()._get_metrics),ensure_ascii=False)
python_dictionary = json.loads(json_string)

答案 1 :(得分:0)

H2O python包实际上使用带有JSON的REST API与H2O后端进行通信。了解其外观的最佳方法是打开日志记录并观察Python客户端前端与H2O Java后端之间的“对话”。

使用此方法调用打开日志记录:

h2o.start_logging()

并查看输出。

这是一个指向REST API参考的指针: