NMI 代码实现步骤

# Copyright (c)2018, 东北大学软件学院学生
# All rightsreserved
# 文件名称:nmi.py
# 作   者:孔云
#问题描述:计算算法聚类结果与ground truth的相似度
# coding:utf-8
#A是标准聚类结果,B是算法聚类结果 
from sklearn import metrics
import numpy as np
def open_file(file):
    temp=[]
    with open(file, 'r') as f:
        data = f.readlines()
        for row in data:
            temp=eval(row)
            print("temp",temp)

    return np.array(temp)
if __name__ == '__main__':
    file1 = 're1.txt'
    file2 = 're2.txt'
    A=open_file(file1)
    B=open_file(file2)
    print("A",A)
    print("B",B)
    result_NMI=metrics.normalized_mutual_info_score(A, B)
    print("result_NMI:",result_NMI)

NMI是聚类结果与数据集真实情况(ground truth)的相似度。取值范围在 0-1,值越大,说明聚类结果与数据集真实情况(ground truth)的相似度越大,聚类结果越好。

相关论文介绍:http://www.neusncp.com/static/upload/article/201807242106289781.pdf

### 回答1: 利用8253A、8255A和8086的NMI中断实现流灯的过程如下: 1. 首先,需要配置8253A定时器来控制流灯的闪烁频率。8253A是一个可编程的计数器/定时器芯片,它有3个独立的计数通道,每个通道可以被编程成不同的计数模式。在本例中,我们选择使用其中一个通道来作为闪烁频率的计数器。通过将8253A的寄存器进行配置,设置计数器的初值和计数模式,从而实现所需的闪烁频率。 2. 接下来,使用8255A来控制流灯的亮灭。8255A是一个可编程I/O接口芯片,提供了3个8位的并行I/O端口。我们可以使用其中一个端口来连接流灯,并通过对该端口的位进行设置来控制流灯的状态。比如,将某一位设置为高电平时,对应的流灯就会亮起;将该位设置为低电平时,流灯就会熄灭。通过编程8255A的I/O端口,控制相应的位进行开关,可以实现流灯的闪烁效果。 3. 最后,通过8086的NMI中断来触发流灯的控制程序。NMI中断(非屏蔽中断)是一种特殊的中断,它是由硬件引起的异常情况,例如电源故障、内存奇偶校验错等。我们可以通过编程设置8086的NMI中断处理程序,使其在NMI中断产生时执行特定的流灯控制指令,从而实现流灯的闪烁。 综上所述,通过配置8253A的定时器、编程8255A的I/O端口和设置8086的NMI中断处理程序,可以实现流灯的闪烁效果。具体实现的细节还需要根据具体的硬件和软件环境来确定。 ### 回答2: 利用8253A、8255A和8086的NMI中断实现流灯效果,具体的实现步骤如下: 首先,通过8253A编程设置一个定时器,控制流灯效果的切换速度。8253A是一个可编程的计数器芯片,可以用来生成定时中断。我们可以通过编程将8253A设置为一定的时钟频率,比如100毫秒,然后在NMI中断处理程序中,通过不断改变8255A的输出口状态,实现流灯的闪烁效果。 接着,使用8255A控制流灯的灯珠。8255A是一个通用的并行I/O接口芯片,可以通过编程设置其输出端口的状态。我们可以将8255A的三个端口A、B、C配置为输出模式,每个端口可以控制一组灯珠。通过编程改变8255A的输出端口状态,可以实现流灯的效果。 最后,利用8086的NMI中断实现流灯的控制逻辑。8086是一个16位的微处理器,可以通过编程控制NMI中断的触发和处理。在NMI中断处理程序中,我们可以编写逻辑代码,轮流控制8255A的输出端口状态,从而实现流灯的效果。 总的来说,这个流程涉及到三个芯片的编程和控制,通过8253A的定时中断控制刷新速度,8255A控制灯珠的状态,8086的NMI中断处理程序实现流灯的控制逻辑。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值