我正在寻找在我的 ML 项目中添加用户定义函数和自定义转换器的可能性,但我只找到了如何在 Tensor-Flow 框架中执行此操作的示例。
我已经创建了一个可以使用 pip 安装的自定义包,但我不知道 setup.py 文件在 scikit-learn 框架中应该是什么样子。
如果你能给我一些提示,我会很高兴。
我尝试部署的管道如下所示:
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/__init__.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
最佳答案
无论框架如何,打包依赖项都是一样的。虽然 setup.py
是一个通用构造,但 CloudML Engine 页面 ( link ) 上给出了一些建议
特别是,这个数字应该有帮助:
在您的情况下,执行 knn_pipe.fit
的代码片段将在 trainer
内,而 custscaler
将是“other_subpackage”图。
setup.py
中的“魔法位”是一行:
packages=find_packages()
这将包括 trainer
和 custscaler
(假设他们有 __init__.py
)。
关于scikit-learn - Google Cloud ML Engine 的 scikit-learn 框架中的自定义依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49995645/