【发布时间】: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