python實現標籤匹配 匈牙利演算法

2021-10-09 02:38:19 字數 1433 閱讀 5218

# 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 時稱為完美匹配。常見實現步驟 用途 主要用於解決一些與二分圖匹配有關的問題,即部圖匹配最常見的演算法。某公司存在分工問題,一定數量的女員工與男員工搭配,如何搭配才能實現人員的最大利益...