【发布时间】:2018-07-31 22:10:34
【问题描述】:
我正在寻找在我的 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
【问题讨论】:
-
只是将新的(自定义函数)文件放在与实际代码相同的目录或模块中不起作用吗?
-
(旁注:您可以使用 sklearn.preprocessing.FunctionTransformer 而不是从 TransformerMixin 派生)
标签: scikit-learn google-cloud-ml