複数の学習結果を多数決したい時、以下のような操作が必要になります。
これを実現するには転置してmapで各行に対して最頻値を求めればOKです。
results = np.array([result_1, result_2, result_3])
[*map(lambda x: np.argmax(np.bincount(x)), result.T)]
>>> [0, 2, 2, 1]
解説
まず、例として以下のような配列を準備します。
>>> import numpy as np
>>> a = np.array([0,1,2,3])
>>> b = np.array([0,2,2,1])
>>> c = np.array([1,2,2,1])
>>> np.array([a,b,c])
array([[0, 1, 2, 3],
[0, 2, 2, 1],
[1, 2, 2, 1]])
転置すると行と列が入れ替わり多数決を取れる形になります。
>>> np.array([a,b,c]).T
array([[0, 0, 1],
[1, 2, 2],
[2, 2, 2],
[3, 1, 1]])
mapでそれぞれの配列に対して最頻値を求めます。
>>> [*map(lambda x:np.argmax(np.bincount(x)), np.array([a,b,c]).T)]
[0, 2, 2, 1]
おまけ Python2向け
Python2だと以下のように書けば動いてくれます。
list(map(lambda x: np.argmax(np.bincount(x)), result.T))