Подтвердить что ты не робот

Как я могу вызвать классификаторы scikit-learn из Java?

У меня есть классификатор, который я тренировал с помощью Python scikit-learn. Как я могу использовать классификатор из Java-программы? Могу ли я использовать Jython? Есть ли способ сохранить классификатор в Python и загрузить его на Java? Есть ли другой способ его использования?

4b9b3361

Ответ 1

Вы не можете использовать jython, поскольку scikit-learn сильно полагается на numpy и scipy, у которых много скомпилированных расширений C и Fortran, следовательно, не могут работать в jython.

Самые простые способы использования scikit-learn в java-среде:

  • выставить классификатор в качестве службы HTTP/Json, например, используя микрокадр, например flask или bottle или cornice и вызывать его из java с помощью HTTP-клиента библиотека

  • напишите приложение оболочки командной строки в python, которое считывает данные о stdin и выводимых прогнозах на stdout, используя какой-либо формат, такой как CSV или JSON (или некоторое двоичное представление более низкого уровня) и, например, вызывает программу python из java, используя Apache Commons Exec.

  • заставляют программу python выводить необработанные числовые параметры, полученные в подходящее время (как правило, в виде массива значений с плавающей запятой) и переопределять функцию прогнозирования в java (это обычно легко для прогнозирующих линейных моделей, где часто прогнозируется просто порожденный точечный продукт).

Последний подход будет намного более полезен, если вам потребуется снова реализовать извлечение функции на Java.

Наконец, вы можете использовать библиотеку Java, такую ​​как Weka или Mahout, которые реализуют алгоритмы, которые вам нужны, вместо того, чтобы пытаться использовать scikit-learn из Java.

Ответ 2

Для этой цели существует JPMML.

Во-первых, вы можете сериализовать модель scikit-learn для PMML (которая является внутренне XML), используя библиотеку sklearn2pmml непосредственно из python или сбрасывая ее сначала в python и конвертировать с помощью jpmml-sklearn в java или из командной строки, предоставленной этой библиотекой. Затем вы можете загрузить файл pmml, десериализовать и выполнить загруженную модель, используя jpmml-evaluator в вашем Java-коде.

Этот способ работает не со всеми моделями scikit-learn, а с из них.