【问题标题】:How to get the class labels and predicted probabiltiies for each class for top 5 classes in multiclass classification?如何获取多类分类中前 5 个类的每个类的类标签和预测概率?
【发布时间】:2020-01-07 20:14:43
【问题描述】:

我有一个带有键、值对的字典,其中的值是如下所示的值列表,为了向问题添加更多内容,我有我的预测类概率和我已经制作成字典的相应类,我想获得每个类别的最高 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:数组([按降序排序的前 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)]`

【问题讨论】:

  • 所以倒序排列,取“前”5。
  • 嗨斯科特,反向排序不起作用,所以这个问题。反向排序会报错 TypeError: 'reverse' is an invalid keyword argument for this function
  • 展示你是如何使用它的。
  • for key, v_list in prob_per_class_dictionary.items(): v_list = v_list.sort(reverse =True)

标签: arrays dictionary python-3.6


【解决方案1】:

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

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

【讨论】:

  • 这并没有像我拥有的​​ dict 那样把课程还给我
  • 以什么方式?请记住,dicts 是未排序的。
  • def sort_dict_values(dict): for key, v_list in prob_per_class_dictionary.items(): v_list.sort() v_list = v_list.take((-1,-2,-3,-4,- 5)) return key,v_list 我如何让它以这种方式对整个字典进行排序?
猜你喜欢
  • 1970-01-01
  • 2020-04-03
  • 2018-10-12
  • 2017-06-12
  • 2022-06-28
  • 1970-01-01
  • 2017-06-12
  • 2016-01-05
  • 2015-02-01
相关资源
最近更新 更多