美文网首页统计分析与数据挖掘
最大互信息系数(MIC)与minepy的使用

最大互信息系数(MIC)与minepy的使用

作者: 蜘蛛鱼 | 来源:发表于2021-03-17 17:14 被阅读0次

    Minepy与MIC简介

    minepy是基于最大互信息的非参数勘探(MINE,Maximal Information-based Nonparametric Exploration)的一个python库。

    许多数据集包括成千上万个变量对,在我们不知道它们有哪些关系的情况下,如何有效地识别重要的关系呢?
    最大互信息系数(MIC,Maximal Information Coefficient)与MINE专门针对快速挖掘多维度数据,可以衡量两个变量的相关性。

    D. Reshef, Y. Reshef], H. Finucane, S. Grossman, G. McVean, P. Turnbaugh, E. Lander, [[M. Mitzenmacher, P. Sabeti]]. Detecting novel associations in large datasets. Science 334, 6062 (2011).

    MIC计算分为三个步骤:

    1. 给定i、j,对XY构成的散点图进行i列j行网格化,并求出最大的互信息值
    2. 对最大的互信息值进行归一化
    3. 选择不同尺度下互信息的最大值作为MIC值

    Minepy的Python API

    在Linux中,minepy可以直接通过pip install下载。(Mac可以用brew install下载)。
    官网中给出的例子如下:

    import numpy as np
    from minepy import MINE
    
    def print_stats(mine):
        print "MIC", mine.mic()
        print "MAS", mine.mas()
        print "MEV", mine.mev()
        print "MCN (eps=0)", mine.mcn(0)
        print "MCN (eps=1-MIC)", mine.mcn_general()
        print "GMIC", mine.gmic()
        print "TIC", mine.tic()
    
    x = np.linspace(0, 1, 1000)
    y = np.sin(10 * np.pi * x) + x
    mine = MINE(alpha=0.6, c=15, est="mic_approx")
    mine.compute_score(x, y)
    
    print "Without noise:"
    print_stats(mine)
    print
    
    np.random.seed(0)
    y +=np.random.uniform(-1, 1, x.shape[0]) # add some noise
    mine.compute_score(x, y)
    
    print "With noise:"
    print_stats(mine)
    

    其中,compute_score计算特征矩阵,mic指最大互信息系数。

    参考:
    http://www.exploredata.net/
    https://minepy.readthedocs.io/en/latest/python.html

    相关文章

      网友评论

        本文标题:最大互信息系数(MIC)与minepy的使用

        本文链接:https://www.haomeiwen.com/subject/cbfjcltx.html