模型预测输出

2024-04-26 23:16:23 发布

您现在位置:Python中文网/ 问答频道 /正文

docs中,predict_proba(self, x, batch_size=32, verbose=1)

Generates class probability predictions for the input samples batch by batch.

和回报

A Numpy array of probability predictions.

假设我的模型是二元分类模型,输出是[a, b],因为aclass_0的概率,而bclass_1的概率?


Tags: the模型selfdocsforverbosesizebatch
2条回答

这里的情况是不同的,而且有点误导,特别是当您将predict_proba方法与同名的sklearn方法进行比较时。在Keras(不是sklearn包装器)中,方法predict_proba与方法predict完全相同。你甚至可以检查一下here

def predict_proba(self, x, batch_size=32, verbose=1):
        """Generates class probability predictions for the input samples
        batch by batch.
        # Arguments
            x: input data, as a Numpy array or list of Numpy arrays
                (if the model has multiple inputs).
            batch_size: integer.
            verbose: verbosity mode, 0 or 1.
        # Returns
            A Numpy array of probability predictions.
        """
        preds = self.predict(x, batch_size, verbose)
        if preds.min() < 0. or preds.max() > 1.:
            warnings.warn('Network returning invalid probability values. '
                          'The last layer might not normalize predictions '
                          'into probabilities '
                          '(like softmax or sigmoid would).')
        return preds

所以-在二进制分类的情况下-输出取决于网络的设计:

  • 如果网络的最终输出是通过一个sigmoid输出获得的,那么predict_proba的输出只是分配给类1的概率。
  • 如果网络的最终输出是通过应用softmax函数的二维输出获得的,那么predict_proba的输出是一对,其中[a, b],其中a = P(class(x) = 0)b = P(class(x) = 1)

第二种方法很少使用,使用第一种方法在理论上有一些优势,但我想告诉你,以防万一。

这取决于如何指定模型和目标的输出。两者都可以。通常当一个人进行二值分类时,输出是一个单一的值,这是一个正预测的概率。1减去输出是负预测的概率。

相关问题 更多 >