# coding = utf-8'''
用匈牙利演算法實現標籤的匹配問題,並且輸出最後的標籤'''
import numpy as np
from scipy.optimize import linear_sum_assignment
label = np.array(
[1,1,2,1,1,2,2,2,3,2,2,3,1,3,3,2,3]
)gnd = np.array(
[2,2,2,2,2,2,3,3,3,3,3,3,1,1,1,1,1]
)k = np.unique(gnd)
k_num = len(k)
cost_mat = np.array(np.zeros((k_num,k_num))
)for i in range(k_num):
temp_i = k[i]
idx = np.where(np.array(label)
==temp_i)
for j in range(k_num):
temp_j = k[j]
h = gnd[idx]
t = np.where(np.array(h)
!=temp_j)
cost_mat[i,j]
= len(t[0]
)print(cost_mat)
row_index,col_index = linear_sum_assignment(cost_mat)
assignment = col_index+1
print(assignment)
print(
'*'*200)
# assignment = assignment[::-1]
assignment_index = np.where(assignment)
result_label = np.array(np.zeros(label.shape))
for i in range(k_num):
temp_i = k[i]
print(temp_i)
idx = np.where(np.array(label)
==temp_i)
print(idx)
result_label[idx]
= assignment[i]
print(result_label)
print(cost_mat[row_index,col_index]
)print(cost_mat[row_index,col_index].sum(
))
參考鏈結
kmeans、lvq、gaussianmixture幾種聚類方法的python實現以及標籤對映(kuhn-munkres匈牙利演算法)問題的解決(詳細並附完整**)
matlab例項:為匹配真實標籤,對訓練得到的標籤進行調整
python實現匈牙利演算法
1.通過深度優先搜尋實現匈牙利演算法 coding utf 8 created by lixiao at 2019 4 16 class dfs hungary def init self,nx,ny,edge,cx,cy,visited self.nx,self.ny nx,ny x和y集合中頂點...
最大匹配 過山車 匈牙利
rpg girls今天和大家一起去遊樂場玩,終於可以坐上夢寐以求的過山車了。可是,過山車的每一排只有兩個座位,而且還有條不成文的規矩,就是每個女生必須找個個男生做partner和她同坐。但是,每個女孩都有各自的想法,舉個例子把,rabbit只願意和xhd或pqk做partner,grass只願意和l...
匈牙利演算法 匹配問題
假期 2020.01 27完全匹配 如果乙個匹配中,x y 且匹配數等於 x 則稱此匹配為完全匹配 特別的當 x y 時稱為完美匹配。常見實現步驟 用途 主要用於解決一些與二分圖匹配有關的問題,即部圖匹配最常見的演算法。某公司存在分工問題,一定數量的女員工與男員工搭配,如何搭配才能實現人員的最大利益...