互信息python代码_转:标准化互信息NMI计算步骤及其Python实现

本文介绍了如何使用Python计算标准化互信息(NMI),并提供了详细的代码实现。通过示例展示了从计算互信息到标准化的过程,最后比较了自编代码与sklearn库中NMI函数的结果。
摘要由CSDN通过智能技术生成

标准化互信息NMI计算步骤

Python 实现

代码:

‘‘‘ 利用Python实现NMI计算‘‘‘

import math

import numpy as np

from sklearn import metrics

def NMI(A,B):

# 样本点数

total = len(A)

A_ids = set(A)

B_ids = set(B)

# 互信息计算

MI = 0

eps = 1.4e-45

for idA in A_ids:

for idB in B_ids:

idAOccur = np.where(A==idA) # 输出满足条件的元素的下标

idBOccur = np.where(B==idB)

idABOccur = np.intersect1d(idAOccur,idBOccur) # Find the intersection of two arrays.

px = 1.0*len(idAOccur[0])/total

py = 1.0*len(idBOccur[0])/total

pxy = 1.0*len(idABOccur)/total

MI = MI + pxy*math.log(pxy/(px*py)+eps,2)

# 标准化互信息

Hx = 0

for id

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值