Как получить точность полиномиальной модели глубокого обучения H2o?

Когда я выбираю 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'

Спасибо


person Sanjay Kumar    schedule 13.12.2018    source источник


Ответы (1)


Как правило, если вы не видите метрику AUC, это связано с тем, что H2O-Algo не решил проблему бинарной классификации.

Если вам нужна точность для полиномиальной задачи, используйте [max_hit_ratio_k][1] и посмотрите на k=1.

Если вы хотите увидеть метрики для многочлена в целом, ознакомьтесь с тем, что доступно в документация, например матрица путаницы и 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')] 
person Lauren    schedule 13.12.2018
comment
dl_model.max_hit_ratio_k[1] Я пробовал этот способ, но он показывает эту ошибку TypeError: объект «NoneType» не подлежит подписке - person Sanjay Kumar; 13.12.2018
comment
привет @SanjayKumar, я добавил для вас явный пример - было бы здорово, если бы вы могли пометить ответ как принятый - в настоящее время h2o-3 возвращает twodimtable (конкретно для H2O) и требует определенных методов нарезки, если вас это не устраивает вы можете просто преобразовать его в кадр данных pandas (который я показал) и таким образом получить коэффициент попадания. - person Lauren; 13.12.2018
comment
Привет @Lauren, спасибо за пример. Я получаю таблицу соотношения попаданий, но не получаю ответ команды max_hit_ratio_k. И, k = 1 на данных поезда, я получаю это значение 0,5385539 и на тестовых данных это 0,1001860. Это хорошо или плохо? - person Sanjay Kumar; 13.12.2018
comment
к сожалению, есть ошибка для параметра max_hit_ratio_k... в данный момент он ничего не делает, извините за это (0xdata.atlassian.net/browse/PUBDEV-5935). - person Lauren; 13.12.2018