Я пытаюсь преобразовать обученный классификатор 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
, но безуспешно.
введите описание изображения здесь