ハンガリーアルゴリズム実装(sklearn実装とscipy実装テスト)


sklearnの中のlinear_assignment()関数およびscipyのlinear_sum_assignment()関数はハンガリーアルゴリズムを実現し、両者の戻り値の形式は異なる.
import numpy as np
from sklearn.utils.linear_assignment_ import linear_assignment
from scipy.optimize import linear_assignment
const_matrix = np.array([[15, 40, 45], 
						 [20, 60, 35], 
						 [20, 40, 25]])
matches = linear_assignment(cost_matrix)
print("matches: ", matches)
matches2 = linear_sum_assignment(cost_matrix)
print("matches2: ", matches2)						 

output:
matches: [[0 1] [1 0] [2 2]] matches2: (array([0, 1, 2]), array([1, 0, 2]))

上から見ると、


sklearnが実現したハンガリーの戻り値とscipyが実現したハンガリーの戻り値は互いに回転関係である.