我正在尝试在 python 中使用 sklearn 的mutual_info_classif。它给我一个错误?
Posted
技术标签:
【中文标题】我正在尝试在 python 中使用 sklearn 的mutual_info_classif。它给我一个错误?【英文标题】:i am trying to use sklearn's mutual_info_classif in python. It is throwing me a error? 【发布时间】:2020-02-27 13:19:50 【问题描述】:我有一个 64 列的数据集,我想找到互信息分数或矩阵来了解所有特征之间的关系。我在 sklearn 模块mutual_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】:您收到错误,因为函数 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()
工作的对象。
【讨论】:
以上是关于我正在尝试在 python 中使用 sklearn 的mutual_info_classif。它给我一个错误?的主要内容,如果未能解决你的问题,请参考以下文章
在 python 中调整 ElasticNet 参数 sklearn 包
python:如何在sklearn中使用逻辑回归系数构建决策边界
通过 Pipeline sklearn (Python) 使用多个自定义类