Невозможно сохранить обученную наивную байесовскую модель с помощью pyspark.mllib, хотя HADOOP_HOME установлен правильно - PullRequest
0 голосов
/ 16 июня 2019

Я обучил модель на python с использованием Наивного Байеса, но я не могу сохранить модель в любой форме. Я был реализован мой код на окнах. Хотя сохранение и загрузка модели описаны здесь https://spark.apache.org/docs/1.5.1/mllib-naive-bayes.html,, фактический метод сохранения не принимает параметр SparkContext, поэтому я работаю только с моим путем.

Некоторые люди предположили, что HADOOP_HOME может быть установлен неправильно, но я убедился, что версия winutils.exe правильная и ее местоположение находится в C: \ hadoop \ bin.

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

Я попробовал обходной путь, как предлагается здесь https://machinelearningmastery.com/save-load-machine-learning-models-python-scikit-learn/,, но возникли другие исключения, связанные с pickle.load () и joblib, и я почувствовал, что меня бросили в червоточину, поэтому я отказался от этой альтернативы.

Я прочитал несколько предложений по сохранению весов модели, но я не понимаю, как работает такое решение.

Следующая строка возвращает фрейм данных со столбцами меток и объектов, а также контекст искры.

(train_output, train_spark) = at.Algorithm.preprocess_dataframe('train')

Ниже я тренирую свою модель, используя набор данных обучения и Наивный байесовский метод (сглаживание = 1) из pyspark.mllib.classification.

nbModel = at.execute_NB(train_output, 1)

А вот когда я пытаюсь сохранить свою модель

nbModel.write().overwrite().save('Interface/model')
 #attempt with same output exception

Хотя каталог 'модель' появляется, исключение продолжает поступать, а именно: nbModel.write (). перезаписать (). сохранить ( "Interface / модель") Traceback (последний вызов был последним):

Файл "", строка 1, в nbModel.write (). перезаписать (). сохранить ( "Interface / модель")

Файл "C: ... \ Anaconda3 \ lib \ site-packages \ pyspark \ ml \ util.py", строка 183, в сохранении self._jwrite.save (путь)

Файл "C: ... i \ Anaconda3 \ lib \ site-packages \ py4j \ java_gateway.py", строка 1257, в , вызов ответ, self.gateway_client, self.target_id, self.name)

Файл "C: ... \ Anaconda3 \ lib \ site-packages \ pyspark \ sql \ utils.py", строка 63, в деко возврат f (* a, ** квт)

Файл "C: ... \ Anaconda3 \ lib \ site-packages \ py4j \ protocol.py", строка 328, в get_return_value формат (target_id, ".", name), значение)

Py4JJavaError: Произошла ошибка при вызове o6242.save. : org.apache.spark.SparkException: задание прервано. , , , Вызвано: org.apache.spark.SparkException: Задание прервано из-за сбоя этапа: Задача 0 на этапе 117.0 не выполнена 1 раз, последний сбой: Потерянная задача 0.0 на этапе 117.0 (TID 105, localhost, драйвер исполнителя): java.io .IOException: (нулевая) запись в командной строке: null chmod 0644

Я "..." редактировал некоторую информацию, потому что знал, что она не имеет отношения к проблеме. Если кто-нибудь знает, как я могу сохранить модель в Python без использования уже опробованных решений, или, по крайней мере, дать мне еще одно предложение о том, как мне избавиться от этого исключения, я был бы всегда благодарен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...