minepy:缓冲区的维数错误

minepy: Buffer has wrong number of dimensions

我正在尝试在 jupyter notebook 中使用最大信息系数,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]] 之间找到 MIC 分数的正确方法是什么?

我对minepy不太了解,但是查看源代码,compute_score接收xy参数必须是一维数组,然后如果你传递一个14xN数组 (2D) 这行不通。

而是pstats (View on API) receives a 2D array and cstats(View on API)接收一对二维数组,所以你可以看一下两者,如前所述,我对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