python实现标签匹配--匈牙利算法

# 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())

参考链接

  1. KMeans、LVQ、GaussianMixture几种聚类方法的Python实现以及标签映射(Kuhn-Munkres匈牙利算法)问题的解决(详细并附完整代码)
  2. MATLAB实例:为匹配真实标签,对训练得到的标签进行调整
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值