我在使用二值化标签适应分类器时遇到问题。
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])
我遇到以下错误:
column_or_1d中的文件“ C:\ Python \ lib \ site-packages \ sklearn \ utils \ validation.py”,行788 引发ValueError(“错误的输入形状{0}”。format(shape)) ValueError:输入形状错误(545,3)
输入标签的形状是(682,3)而不是(545,3)。
我的教授告诉我在gridSearchCV中使用二值化标签,但是阅读scikit-learn文档,我认为我做不到。
答案 0 :(得分:0)
无关紧要的是682,3或545,3。为什么目标有3列?对于SVC,您的y(目标)应为一维数组。您不需要执行label_binarize
操作。保持y_train
不变。
这样做:
y_train = label_binarize(y_train, classes=[1, 2, 3])
将y_train转换为label-indicator
矩阵。这用于多标签分类问题(样本一次可以具有多个类别)。它不用于多类问题。
将y_train
保留为一维数组,SVC
将处理其余的一维数组。