sklearn(错误的输入形状)ValueError

Posted

技术标签:

【中文标题】sklearn(错误的输入形状)ValueError【英文标题】:sklearn (Bad Input Shape) ValueError 【发布时间】:2018-01-27 20:43:13 【问题描述】:

我是 ML 和 sklearn 世界的新手。我尝试在具有X_train[2500,800]Y_train[2500,8] 的数据集上使用 GaussianNB。

from sklearn.naive_bayes import GaussianNB
clf = GaussianNB()
clf.fit(X, Y)

程序运行时显示

ValueError: 错误的输入形状 (2500, 8)。

如何将Y_train[2500,8] 转换为Y_train[2500,1]

【问题讨论】:

你的数据是什么?你有2500 具有800 特征的样本吗? 这是多标签分类吗?即单个样本可以在 y 中有多个标签(来自这 8 个标签)还是每个样本只有一个标签? 好吧,如果你的标签是ont_hot 格式,就做Y_train = np.argmax(Y_train, axis=1) @fath 你使用的是哪个分类器?高斯NB?如果是这样,那么它本质上不支持二维y。您需要使用OneVsRestClassifier 将多标签问题简化为多个二元问题,或者使用支持多标签情况的不同算法。见this for more details。如果您提供更多详细信息会更好(最好在新问题中)。 @fateh LogisticRegression in sklearn 不直接支持多标签,因为它不在我链接的页面中的“Support multilabel”标题下。因此,您只能为此使用 OneVsRestClassifier。 【参考方案1】:

OP 使用的是单热编码器,因此 fit 函数不适用于数组@Ishant Mrinal 推荐这个

Y_train = np.argmax(Y_train, axis=1)

这将允许您将一种热编码传递给 fit 函数。

【讨论】:

以上是关于sklearn(错误的输入形状)ValueError的主要内容,如果未能解决你的问题,请参考以下文章

label_binarize 不适合显示错误输入形状的 sklearn 朴素贝叶斯分类器

Python Scikit - 调用 sklearn.metrics.precision_recall_curve 时输入形状错误

获取形状未对齐错误 sklearn 。

在使用 sklearn 和 keras 构建 CNN 时需要帮助理解形状错误吗?

Sklearn - 与样品的不一致数实测值输入变量:[16512,4128]

将 Keras 集成到 SKLearn 管道?