添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
烦恼的上铺  ·  Process Class ...·  3 周前    · 
会搭讪的领结  ·  MicroPython Display ...·  3 周前    · 
狂野的荒野  ·  Figma 如何收费?Figma ...·  3 月前    · 
慈祥的萝卜  ·  适用于 Dynamics 365 的 ...·  3 月前    · 
激动的瀑布  ·  新思想引领新征程 | ...·  4 月前    · 
有腹肌的机器猫  ·  天津市公安局·  7 月前    · 
打酱油的领带  ·  qt ...·  1 年前    · 
Parameters:
  • alpha ( float ( 0 , 1.0 ] or >=4 ) – if alpha is in (0,1] then B will be max(n^alpha, 4) where n is the number of samples. If alpha is >=4 then alpha defines directly the B parameter. If alpha is higher than the number of samples (n) it will be limited to be n, so B = min(alpha, n).
  • c ( float ( > 0 ) ) – determines how many more clumps there will be than columns in every partition. Default value is 15, meaning that when trying to draw x grid lines on the x-axis, the algorithm will start with at most 15*x clumps.
  • est ( str ( "mic_approx" , "mic_e" ) ) – estimator. With est=”mic_approx” the original MINE statistics will be computed, with est=”mic_e” the equicharacteristic matrix is is evaluated and the mic() and tic() methods will return MIC_e and TIC_e values respectively.
  • compute_score ( x , y )

    Computes the (equi)characteristic matrix (i.e. maximum normalized mutual information scores.

    get_score ( )

    Returns the maximum normalized mutual information scores (i.e. the characteristic matrix M if est=”mic_approx”, the equicharacteristic matrix instead). M is a list of 1d numpy arrays where M[i][j] contains the score using a grid partitioning x-values into i+2 bins and y-values into j+2 bins.

    minepy. pstats ( X , alpha=0.6 , c=15 , est="mic_approx" )

    Compute pairwise statistics (MIC and normalized TIC) between variables (convenience function).

    For each statistic, the upper triangle of the matrix is stored by row (condensed matrix). If m is the number of variables, then for i < j < m, the statistic between (row) i and j is stored in k = m*i - i*(i+1)/2 - i - 1 + j. The length of the vectors is n = m*(m-1)/2.

    Parameters:
    • X ( 2D array_like object ) – An n-by-m array of n variables and m samples.
    • alpha ( float ( 0 , 1.0 ] or >=4 ) – if alpha is in (0,1] then B will be max(n^alpha, 4) where n is the number of samples. If alpha is >=4 then alpha defines directly the B parameter. If alpha is higher than the number of samples (n) it will be limited to be n, so B = min(alpha, n).
    • c ( float ( > 0 ) ) – determines how many more clumps there will be than columns in every partition. Default value is 15, meaning that when trying to draw x grid lines on the x-axis, the algorithm will start with at most 15*x clumps.
    • est ( str ( "mic_approx" , "mic_e" ) ) – estimator. With est=”mic_approx” the original MINE statistics will be computed, with est=”mic_e” the equicharacteristic matrix is is evaluated and MIC_e and TIC_e are returned.
    • Returns:

      • mic ( 1D ndarray ) – the condensed MIC statistic matrix of length n*(n-1)/2.
      • tic ( 1D ndarray ) – the condensed normalized TIC statistic matrix of length n*(n-1)/2.
      • minepy. cstats ( X , Y , alpha=0.6 , c=15 , est="mic_approx" )

        Compute statistics (MIC and normalized TIC) between each pair of the two collections of variables (convenience function).

        If n and m are the number of variables in X and Y respectively, then the statistic between the (row) i (for X) and j (for Y) is stored in mic[i, j] and tic[i, j].

        Parameters:
        • X ( 2D array_like object ) – An n by m array of n variables and m samples.
        • Y ( 2D array_like object ) – An p by m array of p variables and m samples.
        • alpha ( float ( 0 , 1.0 ] or >=4 ) – if alpha is in (0,1] then B will be max(n^alpha, 4) where n is the number of samples. If alpha is >=4 then alpha defines directly the B parameter. If alpha is higher than the number of samples (n) it will be limited to be n, so B = min(alpha, n).
        • c ( float ( > 0 ) ) – determines how many more clumps there will be than columns in every partition. Default value is 15, meaning that when trying to draw x grid lines on the x-axis, the algorithm will start with at most 15*x clumps.
        • est ( str ( "mic_approx" , "mic_e" ) ) – estimator. With est=”mic_approx” the original MINE statistics will be computed, with est=”mic_e” the equicharacteristic matrix is is evaluated and MIC_e and TIC_e are returned.
        • Returns:

          • mic ( 2D ndarray ) – the MIC statistic matrix (n x p).
          • tic ( 2D ndarray ) – the normalized TIC statistic matrix (n x p).
          • First Example

            The example is located in examples/python_example.py .

            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)
            

            Run the example:

            $ python python_example.py
            Without noise:
            MIC 1.0
            MAS 0.726071574374
            MEV 1.0
            MCN (eps=0) 4.58496250072
            MCN (eps=1-MIC) 4.58496250072
            GMIC 0.779360251901
            TIC 67.6612295532
            With noise:
            MIC 0.505716693417
            MAS 0.365399904262
            MEV 0.505716693417
            MCN (eps=0) 5.95419631039
            MCN (eps=1-MIC) 3.80735492206
            GMIC 0.359475501353
            TIC 28.7498326953
            
            from __future__ import division
            import numpy as np
            import matplotlib.pyplot as plt
            from minepy import MINE
            rs = np.random.RandomState(seed=0)
            def mysubplot(x, y, numRows, numCols, plotNum,
                          xlim=(-4, 4), ylim=(-4, 4)):
                r = np.around(np.corrcoef(x, y)[0, 1], 1)
                mine = MINE(alpha=0.6, c=15, est="mic_approx")
                mine.compute_score(x, y)
                mic = np.around(mine.mic(), 1)
                ax = plt.subplot(numRows, numCols, plotNum,
                                 xlim=xlim, ylim=ylim)
                ax.
            
            
            
            
                
            set_title('Pearson r=%.1f\nMIC=%.1f' % (r, mic),fontsize=10)
                ax.set_frame_on(False)
                ax.axes.get_xaxis().set_visible(False)
                ax.axes.get_yaxis().set_visible(False)
                ax.plot(x, y, ',')
                ax.set_xticks([])
                ax.set_yticks([])
                return ax
            def rotation(xy, t):
                return np.dot(xy, [[np.cos(t), -np.sin(t)], [np.sin(t), np.cos(t)]])
            def mvnormal(n=1000):
                cors = [1.0, 0.8, 0.4, 0.0, -0.4, -0.8, -1.0]
                for i, cor in enumerate(cors):
                    cov = [[1, cor],[cor, 1]]
                    xy = rs.multivariate_normal([0, 0], cov, n)
                    mysubplot(xy[:, 0], xy[:, 1], 3, 7, i+1)
            def rotnormal(n=1000):
                ts = [0, np.pi/12, np.pi/6, np.pi/4, np.pi/2-np.pi/6,
                      np.pi/2-np.pi/12, np.pi/2]
                cov = [[1, 1],[1, 1]]
                xy = rs.multivariate_normal([0, 0], cov, n)
                for i, t in enumerate(ts):
                    xy_r = rotation(xy, t)
                    mysubplot(xy_r[:, 0], xy_r[:, 1], 3, 7, i+8)
            def others(n=1000):
                x = rs.uniform(-1, 1, n)
                y = 4*(x**2-0.5)**2 + rs.uniform(-1, 1, n)/3
                mysubplot(x, y, 3, 7, 15, (-1, 1), (-1/3, 1+1/3))
                y = rs.uniform(-1, 1, n)
                xy = np.concatenate((x.reshape(-1, 1), y.reshape(-1, 1)), axis=1)
                xy = rotation(xy, -np.pi/8)
                lim = np.sqrt(2+np.sqrt(2)) / np.sqrt(2)
                mysubplot(xy[:, 0], xy[:, 1], 3, 7, 16, (-lim, lim), (-lim, lim))
                xy = rotation(xy, -np.pi/8)
                lim = np.sqrt(2)
                mysubplot(xy[:, 0], xy[:, 1], 3, 7, 17, (-lim, lim), (-lim, lim))
                y = 2*x**2 + rs.uniform(-1, 1, n)
                mysubplot(x, y, 3, 7, 18, (-1, 1), (-1, 3))
                y = (x**2 + rs.uniform(0, 0.5, n)) * \
                    np.array([-1, 1])[rs.random_integers(0, 1, size=n)]
                mysubplot(x, y, 3, 7, 19, (-1.5, 1.5), (-1.5, 1.5))
                y = np.cos(x * np.pi) + rs.uniform(0, 1/8, n)
                x = np.sin(x * np.pi) + rs.uniform(0, 1/8, n)
                mysubplot(x, y, 3, 7, 20, (-1.5, 1.5), (-1.5, 1.5))
                xy1 = np.random.multivariate_normal([3, 3], [[1, 0], [0, 1]], int(n/4))
                xy2 = np.random.multivariate_normal([-3, 3], [[1, 0], [0, 1]], int(n/4))
                xy3 = np.random.multivariate_normal([-3, -3], [[1, 0], [0, 1]], int(n/4))
                xy4 = np.random.multivariate_normal([3, -3], [[1, 0], [0, 1]], int(n/4))
                xy = np.concatenate((xy1, xy2, xy3, xy4), axis=0)
                mysubplot(xy[:, 0], xy[:, 1], 3, 7, 21, (-7, 7), (-7, 7))
            plt.figure(facecolor='white')
            mvnormal(n=800)
            rotnormal(n=200)
            others(n=800)
            plt.tight_layout()
            plt.show()
            

            Convenience functions example

            The example is located in examples/python_conv_example.py.

            import numpy as np
            from minepy import pstats, cstats
            import time
            np.random.seed(0)
            # build the X matrix, 8 variables, 320 samples
            X = np.random.rand(8, 320)
            # build the Y matrix, 4 variables, 320 samples
            Y = np.random.rand(4, 320)
            # compute pairwise statistics MIC_e and normalized TIC_e between samples in X,
            # B=9, c=5
            mic_p, tic_p =  pstats(X, alpha=9, c=5, est="mic_e")
            # compute statistics between each pair of samples in X and Y
            mic_c, tic_c =  cstats(X, Y, alpha=9, c=5, est="mic_e")
            print "normalized TIC_e (X):"
            print tic_p
            print "MIC_e (X vs. Y):"
            print mic_c
            
            $ python python_conv_example.py
            normalized TIC_e (X):
            [ 0.01517556  0.00859132  0.00562575  0.01082706  0.01367201  0.0196697
              0.00947777  0.01273158  0.011291    0.01455822  0.0072817   0.01187837
              0.01595135  0.00902464  0.00974791  0.00952264  0.01806944  0.01064587
              0.00808622  0.01075486  0.00943122  0.01116569  0.01380142  0.01590193
              0.02159243  0.01450488  0.01347701  0.01036625]
            MIC_e (X vs. Y):
            [[ 0.0175473   0.01102385  0.01489008  0.02957048]
             [ 0.01294067  0.02682975  0.02743612  0.02224291]
             [ 0.01613576  0.0175808   0.01633154  0.02633199]
             [ 0.02090252  0.01680651  0.01735732  0.02186021]
             [ 0.01350926  0.01002233  0.02128154  0.02036634]
             [ 0.01459962  0.020248    0.0319421   0.01782455]
             [ 0.01186273  0.0291112   0.01577821  0.01970322]
             [ 0.012531    0.02071883  0.01536824  0.03312674]]