把NMI = \frac{-2 \cdot \sum_{i=1}^C \sum_{j=1}^K \frac{n_{ij}}{n} \log\left(\frac{n_{ij} \cdot n}{n_i \cdot n_j}\right)}{\sum_{i=1}^C \frac{n_i}{n} \log\left(\frac{n_i}{n}\right) + \sum_{j=1}^K \frac{n_j}{n} \log\left(\frac{n_j}{n}\right)}转换成普通数学公式
时间: 2023-07-17 11:11:46 浏览: 104
将NMI的计算公式转换成普通数学公式:
NMI = \frac{-2 \cdot \sum_{i=1}^C \sum_{j=1}^K \frac{n_{ij}}{n} \log\left(\frac{n_{ij} \cdot n}{n_i \cdot n_j}\right)}{\sum_{i=1}^C \frac{n_i}{n} \log\left(\frac{n_i}{n}\right) + \sum_{j=1}^K \frac{n_j}{n} \log\left(\frac{n_j}{n}\right)}
可以进一步简化为:
NMI = \frac{2 \cdot I(C, K)}{H(C) + H(K)}
其中,
- I(C, K) 表示互信息(Mutual Information)的计算,定义为:I(C, K) = \sum_{i=1}^C \sum_{j=1}^K \frac{n_{ij}}{n} \log\left(\frac{n_{ij} \cdot n}{n_i \cdot n_j}\right)
- H(C) 表示聚类结果的熵(Entropy),定义为:H(C) = -\sum_{i=1}^C \frac{n_i}{n} \log\left(\frac{n_i}{n}\right)
- H(K) 表示真实标签的熵(Entropy),定义为:H(K) = -\sum_{j=1}^K \frac{n_j}{n} \log\left(\frac{n_j}{n}\right)
通过计算互信息、聚类结果的熵和真实标签的熵,可以得到NMI的值。
相关问题
void pwm_clock_init() { do { CS->CLRIFG |= CS_CLRIFG_CLR_DCOR_OPNIFG | CS_CLRIFG_CLR_HFXTIFG | CS_CLRIFG_CLR_LFXTIFG; SYSCTL->NMI_CTLSTAT &= ~ SYSCTL_NMI_CTLSTAT_CS_SRC; }while (SYSCTL->NMI_CTLSTAT & SYSCTL_NMI_CTLSTAT_CS_FLG); CS->KEY = 0; } 请告诉我这段代码的作用
这段代码是用于初始化 PWM 时钟的函数。PWM(脉冲宽度调制)是一种用于产生模拟信号的技术,通常用于控制电机、调光等应用中。
具体来说,这段代码的功能如下:
1. 使用 do-while 循环来清除时钟系统(CS)模块的中断标志位和 NMI(非屏蔽中断)控制状态寄存器中与时钟系统相关的标志位。
2. 将 SYSCTL 模块的 NMI_CTLSTAT 寄存器的 CS_SRC 位清零,即禁用时钟系统的 NMI 中断源。
3. 在循环中检查 NMI_CTLSTAT 寄存器的 CS_FLG 位,如果该位为1,则继续循环,直到该位为0。这是为了确保时钟系统已经完成初始化并稳定。
4. 将 CS 模块的 KEY 寄存器设置为0,以锁定对 CS 模块其他寄存器的写入操作。
总之,这段代码的作用是初始化 PWM 时钟,并确保时钟系统已经初始化完毕并稳定。这样,在使用 PWM 功能之前,可以保证时钟系统的正常工作。
def evaluate(label, pred): nmi = metrics.normalized_mutual_info_score(label, pred) ari = metrics.adjusted_rand_score(label, pred) f = metrics.fowlkes_mallows_score(label, pred) pred_adjusted = get_y_preds(label, pred, len(set(label))) acc = metrics.accuracy_score(pred_adjusted, label) return nmi, ari, f, acc
这段代码定义了一个名为 `evaluate` 的函数,该函数接受两个参数 `label` 和 `pred`,用于计算聚类算法的评估指标。
- `nmi`:使用 `metrics.normalized_mutual_info_score()` 函数计算标签和预测结果之间的归一化互信息分数。
- `ari`:使用 `metrics.adjusted_rand_score()` 函数计算标签和预测结果之间的调整兰德指数。
- `f`:使用 `metrics.fowlkes_mallows_score()` 函数计算标签和预测结果之间的 Fowlkes-Mallows 指数。
- `pred_adjusted`:调用 `get_y_preds()` 函数获取调整后的预测结果,该函数接受标签、预测结果和标签类别数量作为参数。
- `acc`:使用 `metrics.accuracy_score()` 函数计算调整后的预测结果与标签之间的准确率。
最后,函数返回 nmi、ari、f 和 acc 这四个评估指标的值。你可以根据需要使用这些指标来评估聚类算法的性能。
阅读全文