Google Cloud ML Engine的scikit-learn框架中的自定义依赖项

时间:2018-04-24 07:22:48

标签: scikit-learn google-cloud-ml

我正在寻找在我的ML项目中添加用户定义函数和自定义变换器的可能性,但我在Tensor-Flow框架中仅找到了如何执行此操作的示例。

我创建了一个可以使用pip安装的自定义包,但我不知道在scikit-learn框架中setup.py文件应该是什么样子。

如果你能给我一些提示,我会很高兴的。

我尝试部署的管道如下:

from custscaler import StdScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn.pipeline import Pipeline   

knn_pipe = Pipeline([
    ('my_std', StdScaler(5) ),
    ('my_knn',KNeighborsClassifier(n_neighbors=7)) 
    ])

model = knn_pipe.fit(X_train, Y_train)

定制变压器:
/ custscaler / __初始化__。PY

from .fct1 import StdScaler

/custscaler/fct1.py

from sklearn import base


class StdScaler(base.BaseEstimator, base.TransformerMixin):

    def __init__(self, scaling_factor):
        self.scaling_factor = scaling_factor

    def fit(self, X, y=None):
        return self

    def transform(self, X):
        data = [ [el*self.scaling_factor for el in row] for row in X ]
        return data

1 个答案:

答案 0 :(得分:3)

无论框架如何,打包依赖关系都是一样的。虽然setup.py是一个通用构造,但是在CloudML Engine的页面上给出了一些建议(link

特别是,这个数字应该有所帮助:

Recommended Project Structure

在您的情况下,执行knn_pipe.fit的代码段将位于trainer内,custscaler将位于图中的“other_subpackage”。

setup.py中的“魔术位”是一行:

packages=find_packages()

包括trainercustscaler(假设他们有__init__.py)。