【问题标题】:minepy: Buffer has wrong number of dimensionsminepy:缓冲区的维数错误
【发布时间】:2018-04-25 20:17:21
【问题描述】:

我正在尝试在 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 分数的正确方法是什么?

【问题讨论】:

  • 能否指出导致错误的行号?
  • @AmrKeleg 我就是这么做的。谢谢。

标签: python python-3.x pandas regression data-science


【解决方案1】:

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

而不是pstats (View on API) 接收一个二维数组,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

【讨论】:

  • 我认为这可能是答案。我还没有尝试过。但是,似乎cstats() 是更合适的函数,因为在我的示例中它不是成对统计。您能否更新您的答案,以便我接受。谢谢! minepy.readthedocs.io/en/latest/…
猜你喜欢
  • 2018-01-07
  • 2021-10-18
  • 1970-01-01
  • 1970-01-01
  • 2017-05-12
  • 2013-07-20
  • 2016-07-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多