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 和 keras 构建 CNN 时需要帮助理解形状错误吗?