Какие инструменты scikit-learn могут обрабатывать многомерный вывод?

Я занимался различными инструментами для изучения scikit-learn. Все классы с контролируемым обучением имеют один и тот же общий API, где вы вызываете model.fit(X, y) для соответствия модели. С некоторыми из них (по крайней мере, ExtraTreesRegressor) я могу передать двумерный массив для y и он отлично работает. С другими это не работает. Обычно он не говорит, почему это не работает: я получаю ошибки несоответствия формы, которые предполагают, что он может предсказать только одно измерение вывода, не сказав об этом. Например, для стохастического градиентного спуска:

 >>> X.shape (77946, 24) >>> y.shape (77946, 24) >>> mach = sklearn.linear_model.SGDRegressor() >>> mach.fit(X, y) Traceback (most recent call last): File "<pyshell#37>", line 1, in <module> mach.fit(X, y) File "C:\FakeProgs\Python\lib\site-packages\sklearn\linear_model\stochastic_gradient.py", line 842, in fit sample_weight=sample_weight) File "C:\FakeProgs\Python\lib\site-packages\sklearn\linear_model\stochastic_gradient.py", line 811, in _fit coef_init, intercept_init) File "C:\FakeProgs\Python\lib\site-packages\sklearn\linear_model\stochastic_gradient.py", line 752, in _partial_fit _check_fit_data(X, y) File "C:\FakeProgs\Python\lib\site-packages\sklearn\linear_model\stochastic_gradient.py", line 228, in _check_fit_data raise ValueError("Shapes of X and y do not match.") ValueError: Shapes of X and y do not match. 

Ну, да, они подходят. Он работает, если я использую только один столбец y , но я не знаю, означает ли это, что многомерное y не поддерживается, или я просто не делаю это правильно.

Есть ли явная документация, говорящая, какие классы scikit могут принимать двумерные y а какие нет? Как я могу определить, поддерживает ли данный тип модели, не пытаясь угадать сообщения об ошибках?

One Solution collect form web for “Какие инструменты scikit-learn могут обрабатывать многомерный вывод?”

Метод подгонки SGDRegressor явно указывает, что ожидаемая цель имеет форму (n_samples,) следовательно, 1D.

Вы можете обернуть цикл for, чтобы он соответствовал одному SGDRegressor для цели, если вам нужно. В противном случае вы можете попробовать Ridge , RidgeCV , ElasticNet или ElasticNetCV .

Edit: также, если вы хотите добавить поддержку для нескольких целей в SGDRegressor стесняйтесь отправлять запрос на pull.

  • Графическая кривая Precision-Recall при использовании кросс-валидации в scikit-learn
  • Scikit-learn train_test_split с индексами
  • Результат результата sklearn standardcaler отличается от результата вручную
  • Ошибка метрики Scikit F-score
  • Python RandomForest - Неизвестная метка Ошибка
  • Как вычислить меру F1 в классификации с несколькими метками?
  • python - sklearn Скрытое преобразование распределения Дирихле против Fittransform
  • Python Multiprocessing сохраняет данные до дальнейшего вызова в каждом процессе
  • Python - лучший язык программирования в мире.