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 позаботится об остальном.

Другие вопросы по тегам