如何获取多类分类中前 5 个类的每个类的类标签和预测概率?



>我有一个带有键值对的字典,其中值是如下所示的值列表,为了向问题添加更多内容,我有我的预测类概率和相应的类,我已经将其制作成字典,我想为每个类获得最高的 5 个概率:

# gets a dictionary of {'class_name': probability}

prob_per_class_dictionary = dict(zip(loaded_model.classes_, probs))

字典如下所示:

{0: array([9.65109812e-07, 0.00000000e+00, 0.00000000e+00, ..., 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]),

1: array([9.30082941e-07, 0.00000000e+00, 0.00000000e+00, ..., 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]),

2: array([9.42541599e-07, 0.00000000e+00, 0.00000000e+00, ..., 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]),

3: array([9.54675878e-07, 0.00000000e+00, 0.00000000e+00, ..., 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]),

4: array([9.00161937e-07, 0.00000000e+00, 0.00000000e+00, ..., 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]),

5: array([9.33723827e-07, 0.00000000e+00, 0.00000000e+00, ..., 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]),

6: array([9.6553016e-07, 0.0000000e+00, 0.0000000e+00, ..., 0.0000000e+00, 0.0000000e+00, 0.0000000e+00]),

7: array([9.45838933e-07, 0.00000000e+00, 0.00000000e+00, ..., 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]),

我想对字典进行排序,以便每个键说 0:array([前 5 个值按降序排序](。我已经尝试了以下按升序排序的方法,但我只想要降序排列的前 5 个值。

for key, v_list in prob_per_class_dictionary.items():
v_list = v_list.sort()`

请让我知道实现这一目标的最简单方法是什么?

我希望我的结果看起来像这样

sorted( zip( loaded_model.classes_, probs[0] (, key=lambda x:x[1] ([-n:] 这样,对于每个类,我都会得到相应的概率,并且我得到了前 5 个类及其各自的概率。

`[(1019, 0.02498873845258007),`
`(1421, 0.3491224577864634),`
`(1295, 0.5342553538931459)]`

不是最有效的解决方案,但它可以完成它:

v_list.sort()
v_list = v_list.take((-1,-2,-3,-4,-5))

最新更新