from sklearn import metrics
import math
import numpy as np
from sklearn import metrics
from sklearn import metrics
def NMI(A,B): #此为计算互信息的函数,还可以计算标准互信息#样本点数total = len(A)A_ids = set(A)B_ids = set(B)#互信息计算MI = 0eps = 1.4e-45for idA in A_ids:for idB in B_ids:idAOccur = np.where(A==idA)idBOccur = np.where(B==idB)idABOccur = np.intersect1d(idAOccur,idBOccur)px = 1.0*len(idAOccur[0])/totalpy = 1.0*len(idBOccur[0])/totalpxy = 1.0*len(idABOccur)/totalMI = MI + pxy*math.log(pxy/(px*py)+eps,2)# 标准化互信息Hx = 0for idA in A_ids:idAOccurCount = 1.0*len(np.where(A==idA)[0])Hx = Hx - (idAOccurCount/total)*math.log(idAOccurCount/total+eps,2)Hy = 0for idB in B_ids:idBOccurCount = 1.0*len(np.where(B==idB)[0])Hy = Hy - (idBOccurCount/total)*math.log(idBOccurCount/total+eps,2)MIhat = 2.0*MI/(Hx+Hy)return MI
if __name__ == '__main__':dic = {1: {'w7w93t': 0.6901, 'w7w93y': 0.114, 'w7w93w': 0.0887, 'w7w93q': 0.0439, 'w7w93p': 0.0263, 'w7w93v': 0.0253, 'w7w93m': 0.0058, 'w7w93k': 0.0019, 'w7w93n': 0.0019, 'w7w932': 0.001, 'w7w93j': 0.001}, 2: {'w7w93t': 0.6684, 'w7w93y': 0.1265, 'w7w93w': 0.0961, 'w7w93q': 0.048, 'w7w93v': 0.0248, 'w7w93p': 0.0227, 'w7w93m': 0.0062, 'w7w93n': 0.0031, 'w7w93k': 0.001, 'w7w93j': 0.001, 'w7w93s': 0.001, 'w7w932': 0.0005, 'w7w93z': 0.0005}, 3: {'w7w93t': 0.6798, 'w7w93y': 0.1168, 'w7w93w': 0.0913, 'w7w93q': 0.049, 'w7w93v': 0.0266, 'w7w93p': 0.0232, 'w7w93m': 0.0068, 'w7w93n': 0.0024, 'w7w93k': 0.001, 'w7w93s': 0.001, 'w7w93j': 0.0007, 'w7w93z': 0.0007, 'w7w932': 0.0003, 'w7w931': 0.0003}, 4: {'w7w93t': 0.6875, 'w7w93y': 0.1077, 'w7w93w': 0.0952, 'w7w93q': 0.0445, 'w7w93v': 0.0296, 'w7w93p': 0.0236, 'w7w93m': 0.0062, 'w7w93n': 0.0022, 'w7w93s': 0.001, 'w7w93k': 0.0007, 'w7w93j': 0.0005, 'w7w93z': 0.0005, 'w7w93x': 0.0002, 'w7w932': 0.0002, 'w7w931': 0.0002}, 5: {'w7w93t': 0.6834, 'w7w93y': 0.1093, 'w7w93w': 0.0953, 'w7w93q': 0.0455, 'w7w93v': 0.029, 'w7w93p': 0.0248, 'w7w93m': 0.0062, 'w7w93n': 0.0028, 'w7w93j': 0.0008, 'w7w93s': 0.0008, 'w7w93z': 0.0006, 'w7w93k': 0.0006, 'w7w932': 0.0004, 'w7w931': 0.0002, 'w7w93x': 0.0002, 'w7w930': 0.0002}}i = 1while i < len(dic.keys()) + 1:  # 把90天的数据分离出来成为字典for k in dic[5].keys():  # 比较两个字典,没有的key的加上该key并取值为0if k not in dic[i].keys():dic[i][k] = 0dic[i] = {j: dic[i][j] for j in sorted(dic[i].keys())}  # 对dic[i]字典按照key值排序后输出i += 1print('90天的数据处理排序后是')print(dic)print('*****开始计算互信息**********')c=1result1=[]#result存放最终对比的NMI结果result2=[]while c < len(dic.keys()) + 1:A=list(dic[c].values())B=list(dic[5].values()) #B是最终的那个数据C = np.array(A)D = np.array(B)result_NMI1 = NMI(C, D) #计算互信息result_NMI2 = metrics.normalized_mutual_info_score(A, B)result1.append(result_NMI1)result2.append(result_NMI2)c+=1print(result1)print(result2)

根据字典数据计算互信息相关推荐

  1. 大数据计算框架与平台--深入浅出分析

    http://mp.weixin.qq.com/s/s2DnbgieeQockaLKdZDCzA?utm_source=tuicool&utm_medium=referral 1. 前言 计算 ...

  2. 大数据风控---互信息及Python实现

    前言 信息增益表示得知特征空间X的信息而使得类Y的信息不确定性减少的程度.信息增益依赖于特征,不同的特征往往具有不同的信息增益,信息增益大的特征具有更强的分类能力.在概率论和信息论中,两个随机变量的互 ...

  3. python计算互信息_Maximal Information Coefficient (MIC)最大互信息系数详解与实现

    MIC MIC 即:Maximal Information Coefficient 最大互信息系数. 使用MIC来衡量两个基因之间的关联程度,线性或非线性关系,相较于Mutual Informatio ...

  4. 超级干货 :一文读懂大数据计算框架与平台(升级版)

    1. 前言 计算机的基本工作就是处理数据,包括磁盘文件中的数据,通过网络传输的数据流或数据包,数据库中的结构化数据等.随着互联网.物联网等技术得到越来越广泛的应用,数据规模不断增加,TB.PB量级成为 ...

  5. 一文读懂大数据计算框架与平台

    1. 前言 计算机的基本工作就是处理数据,包括磁盘文件中的数据,通过网络传输的数据流或数据包,数据库中的结构化数据等.随着互联网.物联网等技术得到越来越广泛的应用,数据规模不断增加,TB.PB量级成为 ...

  6. boll指标 java_股票数据计算分析 web 系统 stock-job-web v1.0 发布了

    stock-job-web V1 是基于Python的pandas,tushare,bokeh,tornado,stockstats,ta-lib等框架开发的全栈股票系统. 1)可以直接使用docke ...

  7. 阿里云大数据计算服务MaxCompute(下篇)

    关于阿里云大数据计算服务MaxCompute的详细内容: 阿里云大数据计算服务MaxCompute使用教程 (MaxCompute(原ODPS)是一项大数据计算服务,它能提供快速.完全托管的PB级数据 ...

  8. 王坚十年前的坚持,才有了今天世界顶级大数据计算平台MaxCompute...

    如果说十年前,王坚创立阿里云让云计算在国内得到了普及,那么王坚带领团队自主研发的大数据计算平台MaxCompute则推动大数据技术向前跨越了一大步. 数据是企业的核心资产,但十年前阿里巴巴的算力已经无 ...

  9. 王坚十年前的坚持,才有了今天世界顶级大数据计算平台MaxCompute

    2019独角兽企业重金招聘Python工程师标准>>> 如果说十年前,王坚创立阿里云让云计算在国内得到了普及,那么王坚带领团队自主研发的大数据计算平台MaxCompute则推动大数据 ...

最新文章

  1. Centos 搭建高性能WEB服务 Nginx+PHP+MYSQL+Discuz论坛
  2. 《C++应用程序性能优化::第五章动态内存管理》学习和理解
  3. 自动化测试框架cucumber_自动化测试框架cucumber-java操作手册_从配置到生成测报...
  4. 防抖和节流(白话版)
  5. h5微信本地调试 vue_vueh5中使用微信sdk
  6. 不知道选择多云还是混合云?先把概念弄清楚吧
  7. J-UI框架踩过的坑
  8. 笨办法学 Python · 续 练习 52:`moreweb`
  9. linux下amd超频工具,AMD锐龙超频民间工具Work Tool:可单独超CCX模块
  10. 预备作业03 20162311张之睿
  11. 谷歌浏览器:解决Chrome浏览器添加扩展程序报错无法从该网站添加应用、扩展程序和用户脚本
  12. 数据分析第一步 | 做好数据埋点
  13. PLC梯形图设计全自动洗衣机S7-1200博途以及PLC仿真实现之 3. 仿真设计
  14. ipv6overipv4+linux,IPv4 over IPv6 的配置
  15. Git详细教程(三):window系统下,使用Git Gui管理项目
  16. torch中repeat()函数的准确理解
  17. [解决方案]excel2010分析工具库无法运行“ FUNCRES.NLAM! Showatpdialog”宏
  18. thinkphp 打开速度缓慢,大多由于数据库读取问题!解决方法
  19. 【Linux】gcc编译器下载与手动安装
  20. configure error /bin/bash /config sub failed

热门文章

  1. dvwa_Brute Force(暴力破解) _Medium
  2. POJ 1985 Cow Marathon
  3. 《伤寒论》——辨太阳病脉证并治(下)51条
  4. 六篇原创研报读懂央行数字货币|链塔精选
  5. 量子计算机led,科学家发现三维量子液晶 超高速量子计算机有戏
  6. 机器学习算法之——线性回归
  7. 计算机1级 英语怎么说,计算机1级考试全称是什么
  8. 侠盗飞车猎车手破解版_侠盗猎车手有身份危机吗?
  9. 如何设置IDM为谷歌Chrome浏览器默认下载工具
  10. 360和企鹅精彩的对决