我试图在python中使用sklearn的common_info_classif。这让我出错了吗?

时间:2019-11-01 08:02:07

标签: python scikit-learn feature-selection

我有一个包含64列的数据集,我想找到共同的信息得分或矩阵来了解所有要素之间的关系。我在sklearn模块common_info_score中发现了一个总是抛出的函数:

  

ValueError:找到的数组包含0个样本(shape =(0,1)),而最少需要1个?

有人可以引导我吗?另外,如果有人知道更好的方法来查找整个数据集的互信息,也会让我知道。

我以numpy数组的形式给出了参数输入。 X和标签。

from sklearn.feature_selection import mutual_info_classif
epoch1 = pd.read_excel('eegforevent_0.xlsx')
X=epoch1

y = []

for i in range(0,360):
     y.append(i)

y1 = pd.DataFrame(y)


mi = mutual_info_classif(X.to_numpy(),y1.to_numpy())
C:\Users\xx\Anaconda4\lib\site-packages\sklearn\utils\validation.py:724: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().
  y = column_or_1d(y, warn=True)

    ValueError                                Traceback (most recent call       last)
   <ipython-input-105-7a0d61440a9b> in <module>
   ----> 1 mi = mutual_info_classif(X.to_numpy(),y1.to_numpy())

  ValueError: Found array with 0 sample(s) (shape=(0, 1)) while a minimum of   1 is required.

1 个答案:

答案 0 :(得分:0)

您收到错误消息,因为函数 mutual_info_classif() 需要目标 y 的分类变量。如果您的目标 y 是一个连续变量,那么您可以使用 mutual_info_regression()。有关详细信息,请参阅 documentation

此外,在这行 mi = mutual_info_classif(X.to_numpy(),y1.to_numpy()) 中,无需将 y1 转换为 numpy 数组。确保 y1 dtype 是 mutual_info_classif() 工作的对象。