ハンガリーアルゴリズム実装(sklearn実装とscipy実装テスト)
2686 ワード
sklearnの中のlinear_assignment()関数およびscipyのlinear_sum_assignment()関数はハンガリーアルゴリズムを実現し、両者の戻り値の形式は異なる.
output:
matches: [[0 1] [1 0] [2 2]] matches2: (array([0, 1, 2]), array([1, 0, 2]))
sklearnが実現したハンガリーの戻り値とscipyが実現したハンガリーの戻り値は互いに回転関係である.
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が実現したハンガリーの戻り値は互いに回転関係である.