我正在寻找在我的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
答案 0 :(得分:3)
无论框架如何,打包依赖关系都是一样的。虽然setup.py
是一个通用构造,但是在CloudML Engine的页面上给出了一些建议(link)
特别是,这个数字应该有所帮助:
在您的情况下,执行knn_pipe.fit
的代码段将位于trainer
内,custscaler
将位于图中的“other_subpackage”。
setup.py
中的“魔术位”是一行:
packages=find_packages()
包括trainer
和custscaler
(假设他们有__init__.py
)。