如何结合docker和sklearn

时间:2019-01-03 10:29:59

标签: docker scikit-learn

我正在尝试将训练有素的scikit-learn分类器转换为Docker容器。 我在github上找到了sklearn2docker项目,但失败了。

我从以下代码生成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())

错误如下:

  

requests.exceptions.ConnectionError:HTTPConnectionPool(host ='localhost',port = 5000):url超过了最大重试次数:/ predict / split(由NewConnectionError(':导致无法建立新连接:[Errno 111]连接被拒绝',))

我还尝试直接使用sklearn2docker目录中Dockerfile中的requirements.txtconstructor.py,使用app.py目录中的sklearn2docker生成容器,但没有成功。

enter image description here

0 个答案:

没有答案