Java.lang.AssertionError при попытке обучить определенные наборы данных с помощью h2o

Я получаю сообщение об ошибке для нужного набора данных при попытке использовать метод изолирующего леса для обнаружения аномалий. Однако у меня есть совершенно другой набор данных, с которым он работает нормально. Что может вызвать эту проблему?

isolationforest Model Build progress: | (failed) | 0% Traceback (most recent call last): File 
"h2o_test.py", line 149, in <module> isoforest.train(x=iso_forest.col_names[0:65], 
training_frame=iso_forest) File "/home/ec2-user/.local/lib/python3.7/site- 
packages/h2o/estimators/estimator_base.py", line 107, in train self._train(parms, 
verbose=verbose) File "/home/ec2-user/.local/lib/python3.7/site- 
packages/h2o/estimators/estimator_base.py", line 199, in _train 
job.poll(poll_updates=self._print_model_scoring_history if verbose else None) File 
"/home/ec2-user/.local/lib/python3.7/site-packages/h2o/job.py", line 89, in poll 
"\n{}".format(self.job_key, self.exception, self.job["stacktrace"])) OSError: Job with key 
$03017f00000132d4ffffffff$_92ee3e892f7bc86460e80153eaec4b70 failed with an exception: 

java.lang.AssertionError stacktrace: java.lang.AssertionError at 
hex.tree.DHistogram.init(DHistogram.java:350) at 
hex.tree.DHistogram.init(DHistogram.java:343) at 
hex.tree.ScoreBuildHistogram2$ComputeHistoThread.computeChunk(ScoreBuildHistogram2.java:427) 
at hex.tree.ScoreBuildHistogram2$ComputeHistoThread.map(ScoreBuildHistogram2.java:408) at 
water.LocalMR.compute2(LocalMR.java:89) at water.LocalMR.compute2(LocalMR.java:81) at 
water.H2O$H2OCountedCompleter.compute(H2O.java:1704) at 
jsr166y.CountedCompleter.exec(CountedCompleter.java:468) at 
jsr166y.ForkJoinTask.doExec(ForkJoinTask.java:263) at 
jsr166y.ForkJoinPool$WorkQueue.popAndExecAll(ForkJoinPool.java:906) at 
jsr166y.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:979) at 
jsr166y.ForkJoinPool.runWorker(ForkJoinPool.java:1479) at 
jsr166y.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:104)
with open('/home/webapp/flask-api/tmp_rows/temp_file2.csv', 'w+') as tmp_file:
        temp_name = "/tmp_rows/temp_file2.csv"
        tmp_file.write(text_stream.getvalue())
        tmp_file.close()

h2o.init()
print("TEMP_nAME", temp_name)
iso_forest = h2o.import_file('/home/webapp/flask-api/{0}'.format(temp_name))
seed = 12345
ntrees = 100
isoforest = h2o.estimators.H2OIsolationForestEstimator(
ntrees=ntrees, seed=seed)
isoforest.train(x=iso_forest.col_names[0:65], training_frame=iso_forest)
predictions = isoforest.predict(iso_forest)
print(predictions)
h2o.cluster().shutdown()

CSV создается нормально, поэтому, похоже, с этим нет проблем. Что вызывает эту ошибку Java? Я даже увеличил размер своего ec2, чтобы иметь больше оперативной памяти, но это тоже не решило проблему.

AssertionError означает, что это внутренняя ошибка в h2o. Вот утверждение, к которому вы пришли. Возможно, у вас есть столбец в CSV-файле, который содержит одно значение?

that other guy 29.03.2024 23:03

@thatotherguy Извините за поздний ответ и спасибо за ваш. У меня действительно есть такой столбец, в нем только нули. Я попробую удалить этот столбец.

Amon 30.03.2024 17:17

Также извините, что не смог опубликовать CSV-файл, он действительно содержит конфиденциальную информацию.

Amon 30.03.2024 17:18
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
3
61
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я предполагаю, что это наберет близкое количество голосов, потому что именно данные будут вызывать проблему, но данные не предоставлены. Но возможно ваши данные не могут быть предоставлены, или их слишком много.

Поэтому я бы предложил попробовать просто использовать первую/половину второй половины данных, и если только один или другой триггер вызывает их, продолжайте повторять, чтобы посмотреть, сможете ли вы сузить их до одной строки.

То же самое для столбцов, например. попробуйте 10-15 столбцов одновременно, чтобы увидеть, вызывает ли это только один столбец или, возможно, определенные типы столбцов.

Конечно, если это у вас есть, у вас также есть решение: исключить проблемный столбец/строку. Но вам также будет достаточно отправить отчет об ошибке в H2O (похоже, это можно сделать по адресу https://github.com/h2oai/h2o-3/issues)

Эврика!! Спасибо, Даррен, я объединил фрейм данных, чтобы использовать только первые 10 строк, и получил результат, ты потрясающий. (Я не смог опубликовать CSV, поскольку данные конфиденциальны)

Amon 30.03.2024 17:42

Другие вопросы по теме