Как совместить докер и склеарн - PullRequest
0 голосов
/ 03 января 2019

Я пытаюсь преобразовать обученный классификатор scikit-learn в контейнер Docker. Я нашел проект sklearn2docker на github, но он не удался.

Я генерирую скрипт test.py из следующего кода:

from pandas import DataFrame
from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier
iris = load_iris()
input_df = DataFrame(data=iris['data'], columns=iris['feature_names'])
clf = DecisionTreeClassifier(max_depth=2)
clf.fit(input_df.values, iris['target'])

from sklearn2docker.constructor import Sklearn2Docker

s2d = Sklearn2Docker(
    classifier=clf,
    feature_names=iris['feature_names'],
    class_names=iris['target_names'].tolist()
)
s2d.save(name="classifier", tag="iris")

python test.py запускает скрипт и генерирует контейнер.

Произошла ошибка, когда я использовал следующий код для прогнозирования:

from os import system
system("docker run -d -p 5000:5000 classifier:iris && sleep 5")

from requests import post
from pandas import read_json
request = post("http://localhost:5000/predict_proba/split", 
    json=input_df.to_json(orient="split"))
result = read_json(request.content.decode(), orient="split")
print(result.head())

Ошибка выглядит следующим образом:

reports.exceptions.ConnectionError: HTTPConnectionPool (host = 'localhost', port = 5000): превышено максимальное количество попыток с помощью url: /gnett / split (вызвано NewConnectionError (': не удалось установить новое соединение: [Errno 111] Отказ в соединении »,))

Я также пытаюсь напрямую использовать Dockerfile и requirements.txt из constructor.py в каталоге sklearn2docker для генерации контейнера, используя app.py в каталоге sklearn2docker, но безуспешно.

введите описание изображения здесь

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