代码之家  ›  专栏  ›  技术社区  ›  Anx8

minepy:缓冲区的维度数错误

  •  0
  • Anx8  · 技术社区  · 6 年前

    我试图使用jupyter笔记本中的最大信息系数 Boston Housing dataset

    import numpy as np
    import pandas as pd
    from minepy import MINE
    
    #Read dataset
    df = pd.read_csv('housing.data', delim_whitespace=True, header=None);
    col_name = ['CRIM', 'ZN' , 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD', 'TAX', 'PTRATIO', 'B', 'LSTAT', 'MEDV']
    df.columns = col_name;
    
    #Compute MIC
    m = MINE()
    m.compute_score(df[col_name[0:13]], df.MEDV)
    print(m.mic())
    

    m.compute_score(.. 给了我一个 ValueError: Buffer has wrong number of dimensions (expected 1, got 2)

    使现代化

    我现在明白了 compute_score() 应为向量而不是矩阵。在以下各项之间找到话筒得分的正确方法是什么 df.MEDV 以及13个功能 df[col_name[0:13]] ?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Julián Esteban Salomón Torres    6 年前

    我对minepy了解不多,但查看源代码, compute_score 接收 x y 参数必须是1D数组,如果传递14xN数组(2D),则此操作无效。

    相反 pstats (View on API) 接收二维阵列,并 cstats (View on API) 接收一对2D数组,因此您可以同时查看这两个数组,如前所述,我不太了解minepy或您要查找的目的,但您可以按如下方式使用它们:

    from minepy import pstats, cstats
    
    ... # Load of the data
    
    micOneVector, ticOneVector = pstats(df)            # Returns mic and tic (Arrays of 1D)
    
    micTwoVectors, ticTwoVectors = cstats(df, df.MEDV) # Returns mic and tic (Arrays of 1D)
    

    参考文献

    minepy - Source code

    minepy - Python API