Классификация 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}
,