Использование pred_proba () вместо predic() в конвейере Neuraxle с OneVsRestClassifier
Я пытаюсь настроить Neuraxle трубопровода, который использует sklearns OneVsRestClassifier (ОВР).
Каждый действительный шаг в конвейере Neuraxle должен реализовывать fit()
а также transform()
методы.
Чтобы использовать шаги конвейера sklearns, Neuraxle использует SKLearnWrapper, который отображает OVRpredict()
метод к transform()
метод SKLearnWrapper.
Есть ли способ изменить это поведение так, чтобы
predict_proba()
метод сопоставлен с OVRtransform()
метод вместо этого?Или есть другой способ получить рассчитанные вероятности?
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