Использование pred_proba () вместо predic() в конвейере Neuraxle с OneVsRestClassifier

Я пытаюсь настроить Neuraxle трубопровода, который использует sklearns OneVsRestClassifier (ОВР).

Каждый действительный шаг в конвейере Neuraxle должен реализовывать fit() а также transform() методы.

Чтобы использовать шаги конвейера sklearns, Neuraxle использует SKLearnWrapper, который отображает OVRpredict() метод к transform() метод SKLearnWrapper.

  1. Есть ли способ изменить это поведение так, чтобы predict_proba() метод сопоставлен с OVR transform() метод вместо этого?

  2. Или есть другой способ получить рассчитанные вероятности?

1 ответ

Очень хороший вопрос!

У нас уже есть что решить.

Предположим, вы кодируете такой класс:

class MyWrapper(BaseStep): 

    def transform(self, data_inputs): 
        return sigmoid(data_inputs)

    def predict_proba(self, data_inputs): 
        return data_inputs

Вы можете сделать следующее:

step = MyWrapper()

Затем, когда вы будете готовы заменить метод, используйте функцию изменения Neuraxle:

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

Другие вопросы по тегам