【问题标题】:Using predict_proba() instead predict() in Neuraxle Pipeline with OneVsRestClassifier在带有 OneVsRestClassifier 的 Neuraxle Pipeline 中使用 predict_proba() 代替 predict()
【发布时间】:2020-11-01 02:34:57
【问题描述】:

我正在尝试设置一个使用 sklearns OneVsRestClassifier (OVR) 的 Neuraxle 管道

Neuraxle 管道中的每个有效步骤都必须实现 fit()transform() 方法。

为了使用 sklearns 管道步骤,Neuraxle 使用 SKLearnWrapper 将 OVR predict() 方法映射到 SKLearnWrapper 的 transform() 方法。

  1. 有没有办法修改此行为,以便将 predict_proba() 方法映射到 OVR 的 transform() 方法?

  2. 或者是否有其他方法可以检索计算出的概率?

【问题讨论】:

    标签: python scikit-learn pipeline neuraxle


    【解决方案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's 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

    【讨论】:

      猜你喜欢
      • 2020-06-24
      • 2016-09-03
      • 2020-02-07
      • 2020-07-25
      • 2015-02-06
      • 2020-05-15
      • 2013-08-23
      • 2019-10-17
      • 2018-05-27
      相关资源
      最近更新 更多