pythonの多重リストから最頻出ラベルを取り出す
例えば以下のような多重リストがあったとする
top_list = [[0.9951, 2],[0.8845, 3],[0.8745, 1],...]
top_list内の各要素は、第1要素が精度で第2要素がラベルの組のリスト、のようなイメージ.
ここで、top_list内の最頻出ラベルを取り出したい.こんな時、pandasのSeriesを使うとこのように書ける.
from pandas import Series Series(map(lambda x: x[1], top_list)).value_counts().index[0]
まず内側のmap(lambda x: x[1], top_list)
で、内側のリストの第2要素のみ取り出したリストを生成する.
上で言う```[2, 3, 1, ...] に相当する.仮にこれをtmp_listとする.
Series(tmp_list).value_counts()
で、tmp_listの統計を取ってくれる.すなわち
4 54 2 34 1 27 3 21 ...
のようになる.index[0]で最頻出のラベル(上で言う"4")が取り出せる.