如何将 h2o 模型性能指标转换为 json in python
How to convert h2o model performance metrics to json in python
例如我有这个代码:
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 数据,有什么方法可以简单地进行转换吗?谢谢。
H2O python 包实际上使用 REST API 和 JSON 与 H2O 后端对话。了解它是什么样子的最好方法是打开日志记录并观察 Python 客户端前端和 H2O Java 后端之间的 "conversation"。
使用此方法调用打开日志记录:
h2o.start_logging()
并查看输出。
这是指向 REST API 参考的指针:
好的,经过一些研究和试错,我试着看看结果中包含的数据是什么。来自:
model.model_performance()
它会立即在控制台中向您显示模型性能,但如果您尝试 运行 它是
type(model.model_performance())
您将获得返回的对象类型:
<class 'h2o.model.metrics_base.H2OMultinomialModelMetrics'>
这意味着对象本身是一个class metcis 并且根据http://docs.h2o.ai/h2o/latest-stable/h2o-py/docs/metrics.html, H2OMultinomialModelMetrics is an instance of MetricBase and if we see in 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
为了让生活更轻松,这段代码展示了如何轻松地将 class 转换为 json 字符串:
json_string = str(model.model_performance()._get_metrics)
编辑 2
编辑 1 中的字符串不是 json 格式,最好这样做以在剥离 classes 时转换为 json 和字典:
import json
json_string = json.dumps(str(model.model_performance()._get_metrics),ensure_ascii=False)
python_dictionary = json.loads(json_string)
例如我有这个代码:
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 数据,有什么方法可以简单地进行转换吗?谢谢。
H2O python 包实际上使用 REST API 和 JSON 与 H2O 后端对话。了解它是什么样子的最好方法是打开日志记录并观察 Python 客户端前端和 H2O Java 后端之间的 "conversation"。
使用此方法调用打开日志记录:
h2o.start_logging()
并查看输出。
这是指向 REST API 参考的指针:
好的,经过一些研究和试错,我试着看看结果中包含的数据是什么。来自:
model.model_performance()
它会立即在控制台中向您显示模型性能,但如果您尝试 运行 它是
type(model.model_performance())
您将获得返回的对象类型:
<class 'h2o.model.metrics_base.H2OMultinomialModelMetrics'>
这意味着对象本身是一个class metcis 并且根据http://docs.h2o.ai/h2o/latest-stable/h2o-py/docs/metrics.html, H2OMultinomialModelMetrics is an instance of MetricBase and if we see in 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
为了让生活更轻松,这段代码展示了如何轻松地将 class 转换为 json 字符串:
json_string = str(model.model_performance()._get_metrics)
编辑 2
编辑 1 中的字符串不是 json 格式,最好这样做以在剥离 classes 时转换为 json 和字典:
import json
json_string = json.dumps(str(model.model_performance()._get_metrics),ensure_ascii=False)
python_dictionary = json.loads(json_string)