-1

我在使用二值化标签来拟合分类器时遇到问题。

clf_linear = GridSearchCV(SVC(kernel='linear', class_weight='balanced'),
                      param_grid, cv=5)

clf_linear = clf_linear.fit(X_train_pca, y_train)

y_train 通过以下方法二值化:

y_train = label_binarize(y_train, classes=[1, 2, 3])

我收到以下错误:

文件“C:\Python\lib\site-packages\sklearn\utils\validation.py”,第 788 行,在 column_or_1d 中引发 ValueError("bad input shape {0}".format(shape)) ValueError: bad input shape ( 545, 3)

输入标签形状是 (682, 3) 而不是 (545, 3)。

我的教授告诉我在 gridSearchCV 中使用二值化标签,但是阅读 scikit-learn 文档我认为我不能这样做。

4

1 回答 1

0

没关系它的 682,3 或 545,3。为什么目标有 3 列?您的 y (目标)应该是 SVC 的一维数组。你不需要label_binarize做手术。保持y_train原样。

这样做:

y_train = label_binarize(y_train, classes=[1, 2, 3])

将 y_train 转换为label-indicator矩阵。这用于多标签分类问题(样本一次可以有多个类)。它不用于多类问题。

保持y_train 原样以将其保持为一维数组并SVC处理其余部分。

于 2018-11-26T14:11:32.197 回答