如何获取每个 class 的概率和标签?

How to get the probability and label for each class?

我有一个模型,它 class 根据某些条件对场地进行分类,它有 10 个 class,我想要多少模型预测每个 class 的置信度得分?

我的代码: 结果是一个数组,模型在其中进行预测

        predictions=model.predict(result)
        confidence_score= model.predict_proba(list(result))

model.predict returns 只有一个值和置信度分数具有每个 class 的分数列表,如下所示:

[[0.       0.14       0.       0.       0.       0.56       0.       0.17
  0.1      0.01       0.       0.20       0.       0.       0.002    0.01]]

它应该 return 每个 class 的 class 标签,例如:Class A 出现的概率为 0.2 % 等

labelencoder.inverse_transform(predictions) 

输出应如下所示:

{Class Label A : Probability score , Class Label B: Probability score ....}

输出使用以下代码:

      dictionary=[dict(zip(labelencoder.classes_, cs)) for cs in confidence_score]

Output   
{Covent Garden': 0.0, 'London Cocktail Club - Liverpool Street': 0.0,
'Lost Society Battersea': 0.0, 'Lost Society Putney': 0.94.....}

在这种情况下,您可以看到 Lost Society 具有更高的置信度分数,但是当我这样做时 model.predict 它 return 我有一些其他标签而不是这个标签,我在代码中写了预测class 得分最高。

My code :
        predictions=model.predict(result) //returns the single number 
        confidence_score= model.predict_proba(list(result))

        dictionary=[dict(zip(labelencoder.classes_, cs)) for cs in confidence_score]
        print(dictionary)
            
        print("Recommended Venue for this type of category is",labelencoder.inverse_transform(predictions))
        print("Confidence Score : ", np.max(confidence_score))
        return labelencoder.inverse_transform(predictions),np.max(confidence_score)

我们可以 zip labelencoder.classes_confidence_score 并将 zip 对象传递给 dict 以创建字典

dict(zip(labelencoder.classes_, confidence_score.squeeze()))

如果您想一次预测多个样本

[dict(zip(labelencoder.classes_, cs)) for cs in confidence_score]