【问题标题】:Using numpy to test for false positives and false negatives使用 numpy 测试假阳性和假阴性
【发布时间】:2021-09-10 09:46:29
【问题描述】:

我正在尝试弄清楚如何使用 numpy 计算误报和误报。

我可以通过以下方式计算准确度和不准确度:

在以下示例中,y_prediction 是在数据集上做出的预测的二维数组,即 1 和 0 的二维数组。 Truth_labels 是与特征向量相关联的类标签的一维数组,二维数组。

accurate_prediction_rate = np.count_nonzero(y_prediction == truth_labels)/truth_labels.shape[0]
inaccurate_prediction_rate = np.count_nonzero(y_prediction != truth_labels)/truth_labels.shape[0]

然后我尝试像这样计算误报(我的数据集中的正数用 1 表示)...

false_positives = np.count_nonzero((y_prediction != truth_labels)/truth_labels.shape[0] & predictions == 1)

但这会返回一个 TypeError。我是使用 numpy 的新手,所以不熟悉所有可用的方法。有没有更适合我想要做的事情的 numpy 方法?

【问题讨论】:

    标签: python numpy precision-recall numpy-ufunc


    【解决方案1】:

    根据您的问题,我尝试制作一个最小的示例。

    y_pred = np.array([[0, 1], [1, 0], [0, 1]]) #predictions
    y_class = np.array([1, 0, 0]) #actual class
    
    y_pred_class = np.argmax(y_pred, axis=1) #extracting class from predictions
    false_positive = np.sum((y_pred_class == 1) & (y_class == 0))
    

    【讨论】:

      【解决方案2】:

      您可以使用np.logical_and()np.sum() 来实现这一点,我还介绍了如何计算真阳性和真阴性。

      negative = 0.0
      positive = 1.0
      
      tp = np.sum(np.logical_and(y_prediction == positive, truth_labels == positive))
      tn = np.sum(np.logical_and(y_prediction == negative, truth_labels == negative))
      fp = np.sum(np.logical_and(y_prediction == positive, truth_labels == negative))
      fn = np.sum(np.logical_and(y_prediction == negative, truth_labels == positive))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-02-03
        • 1970-01-01
        • 2015-09-28
        • 1970-01-01
        • 2021-11-15
        • 2018-04-22
        • 2017-06-08
        相关资源
        最近更新 更多