我有一个包含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.
答案 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()
工作的对象。