Классификация scikit multilabel: ValueError: неправильная форма ввода

Я верю SGDClassifier() с loss='log' поддерживает классификацию Multilabel, и мне не нужно использовать OneVsRestClassifier. Проверь это

Теперь мой набор данных довольно большой, и я использую HashingVectorizer и передача результата в качестве входных данных для SGDClassifier, У моей цели 42048 функций.

Когда я запускаю это, следующим образом:

clf.partial_fit(X_train_batch, y)

Я получил: ValueError: bad input shape (300000, 42048),

Я также использовал классы в качестве параметра, как показано ниже, но все же проблема.

clf.partial_fit(X_train_batch, y, classes=np.arange(42048))

В документации SGDClassifier сказано y : numpy array of shape [n_samples]

1 ответ

Решение

Нет, SGDClassifier не выполняет многослойную классификацию - она ​​выполняет мультиклассовую классификацию, что является другой проблемой, хотя обе решаются с использованием единого решения всех проблем.

Тогда ни СГД, ни OneVsRestClassifier.fit примет разреженную матрицу для y, Первый хочет множество меток, как вы уже узнали. Последний хочет, для целей нескольких меток, список списков меток, например,

y = [[1], [2, 3], [1, 3]]

чтобы обозначить это X[0] имеет метку 1, X[1] имеет ярлыки {2,3} а также X[2] имеет ярлыки {1,3},

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