【发布时间】: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
LogisticRegressionin sklearn 不直接支持多标签,因为它不在我链接的页面中的“Support multilabel”标题下。因此,您只能为此使用 OneVsRestClassifier。
标签: python machine-learning scikit-learn naivebayes