Очень хороший вопрос!
У нас уже есть кое-что, чтобы решить эту проблему.
Предположим, вы запрограммировали такой класс:
class MyWrapper(BaseStep):
def transform(self, data_inputs):
return sigmoid(data_inputs)
def predict_proba(self, data_inputs):
return data_inputs
Вы можете сделать следующее:
step = MyWrapper()
Затем, когда вы будете готовы заменить метод, используйте функцию Neuraxle mutate :
step = step.mutate(new_method='predict_proba', method_to_assign_to='transform')
И затем, когда .transform()
будет вызывается, вместо этого будет вызван метод predict_proba
. Мутация будет работать, даже если ваш step
обернут (вложен) глубже в другие шаги.
Обратите внимание, что нам, вероятно, следует изменить оболочку sklearn, чтобы разрешить это. Я добавил здесь проблему: https://github.com/Neuraxio/Neuraxle/issues/368
Итак, пока эта проблема не будет устранена, вы можете сделать class MySKLearnWrapper(SKLearnWrapper): ...
(унаследовав от SKLearnWrapper для его изменения) и определить predict_proba
самостоятельно, как было предложено здесь: https://github.com/Neuraxio/Neuraxle/pull/363/files