我有一个FunctionTransform的用例,在这个用例中,训练示例需要根据某种标准与它们的真实标签一起排序。在
def sort_examples(X, y=None):
Xt, indices = zip(*map(itemgetter(1, 2),
sorted([(x.nnz, x, i) for i, x in
enumerate(X)], key = itemgetter(0))))
if y is not None:
yt = [yy[idx] for idx in indices]
return(Xt, yt)
classifier = Pipeline(steps=[
('sorter', FunctionTransformer(func=sort_examples,
validate=False,
accept_sparse=True,
pass_y=True)),
('classifier', DummyClassifier())])
问题是,当我通过传递pass_y = True
将FunctionTransform实例嵌入到包装我的实现函数的管道中时(因为y也需要转换),管道会有意地通过调用<;FunctionTransform instance>;.fit(x,y).transform(x)而不返回转换后的y
因此,训练示例会被转换和排序,但不会关联真正的标签。在
我目前的工作是使用fit_变换和旁路调用实现patch FunctionTransformsklearn.FunctionTransform.transform在fit_transform body中显式但隐式地强制y的方法也被转换。在
我不确定这个用例对于FunctionTransform的设计是否合法。如果有任何scikit learn专家能提供建议或更好的解决方案,我将不胜感激,如何将培训示例和相应的标签转换为自动管道
目前没有回答
相关问题 更多 >
编程相关推荐