GridSearchCV фитинг
У меня проблемы с подбором классификатора с использованием бинаризованных меток.
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("неверная форма ввода {0}". Format(shape)) ValueError: неверная форма ввода (545, 3)
Форма входной метки - (682, 3), а не (545, 3).
Мой профессор сказал мне использовать бинаризованные метки в gridSearchCV, но, читая документы scikit-learn, я думаю, что не могу этого сделать.
1 ответ
Не имеет значения, его 682,3 или 545,3. Почему цель имеет 3 столбца? Ваш у (цели) должен быть 1-й массив для SVC. Вам не нужно делать label_binarize
операция. Держать y_train
как есть.
Делая это:
y_train = label_binarize(y_train, classes=[1, 2, 3])
Преобразует y_train в label-indicator
матрица. Это используется для задач классификации с несколькими метками (где образец может иметь более одного класса одновременно). Его не используют для многоклассовых задач.
Держать y_train
как сохранить его как одномерный массив и SVC
позаботится об остальном.