【问题标题】:How to get H2o deeplearning Multinomial Model accuracy?如何获得 H2o 深度学习多项式模型的准确性?
【发布时间】:2019-05-14 17:19:57
【问题描述】:

当我使用 dl_model.show() 时,它会显示所有信息,但不会显示模型的准确性,以及验证数据的性能,它也不会显示 AUC。当我运行这个命令时,我得到了这个错误

print('AUC', dl_model.auc(valid = False))


   KeyError                    Traceback (most recent call last)

<ipython-input-655-a4a2f0946c88> in <module>()
----> 1 print('AUC', dl_model.auc())

~\Anaconda3\lib\site-packages\h2o\model\model_base.py in auc(self, train, valid, xval)
    682         tm = ModelBase._get_metrics(self, train, valid, xval)
    683         m = {}
--> 684         for k, v in viewitems(tm): m[k] = None if v is None else v.auc()
    685         return list(m.values())[0] if len(m) == 1 else m
    686 

~\Anaconda3\lib\site-packages\h2o\model\metrics_base.py in auc(self)
    165     def auc(self):
    166         """The AUC for this set of metrics."""
--> 167         return self._metric_json['AUC']
    168 
    169     def pr_auc(self):

KeyError: 'auc'

谢谢

【问题讨论】:

    标签: python-3.x deep-learning h2o auc


    【解决方案1】:

    通常,如果您没有看到 AUC 指标,那是因为 H2O-Algo 没有解决二元分类问题。

    如果您想获得多项式问题的准确性,请使用 [max_hit_ratio_k][1] 并查看 k=1

    如果您想查看一般的多项式指标,请查看documentation 中提供的内容,例如混淆矩阵和mean_per_class_error 都可用。

    请在下面找到一个示例:目标是让 hit_ratio k = 1(见最后几行)

    import h2o
    from h2o.estimators.glm import H2OGeneralizedLinearEstimator
    h2o.init()
    
    # import the iris dataset:
    # this dataset is used to classify the type of iris plant
    # the original dataset can be found at https://archive.ics.uci.edu/ml/datasets/Iris
    iris = h2o.import_file("http://h2o-public-test-data.s3.amazonaws.com/smalldata/iris/iris_wheader.csv")
    
    # convert response column to a factor
    iris['class'] = iris['class'].asfactor()
    
    # set the predictor names and the response column name
    predictors = iris.columns[:-1]
    response = 'class'
    
    # split into train and validation sets
    train, valid = iris.split_frame(ratios = [.8])
    
    # try using the `link` parameter:
    # Initialize and train a GLM
    iris_glm = H2OGeneralizedLinearEstimator(family = 'multinomial', link = 'family_default')
    iris_glm.train(x = predictors, y = response, training_frame = train, validation_frame = valid)
    
    pd = iris_glm.hit_ratio_table().as_data_frame()
    pd.loc[(0,'hit_ratio')] 
    

    【讨论】:

    • dl_model.max_hit_ratio_k[1] 我试过这种方式,但它显示此错误 TypeError: 'NoneType' object is not subscriptable
    • 嗨@SanjayKumar,我为您添加了一个明确的示例 - 如果您可以将回复标记为已接受,那就太好了 - 目前 h2o-3 返回一个 twodimtable(特定于 H2O)并需要特定的切片如果您对此不满意,可以将其转换为 pandas 数据帧(我展示过)并以这种方式获得命中率。
    • 嗨@Lauren,谢谢你的例子。我得到了命中率表,但没有得到 max_hit_ratio_k 命令的回复。而且,在火车数据上 k=1,我得到这个值 0.5385539,在测试数据上得到这个 0.1001860。是好是坏?
    • 不幸的是,max_hit_ratio_k 参数有一个错误...目前它没有做任何事情,对此感到抱歉 (0xdata.atlassian.net/browse/PUBDEV-5935)。
    猜你喜欢
    • 2017-01-02
    • 2015-12-31
    • 2016-12-07
    • 2019-07-09
    • 2018-06-29
    • 2020-05-27
    • 1970-01-01
    • 1970-01-01
    • 2021-12-30
    相关资源
    最近更新 更多