Какие инструменты 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.

  • Как использовать scikit-learn PCA для уменьшения возможностей и знать, какие функции отбрасываются
  • RandomForestClassfier.fit (): ValueError: не удалось преобразовать строку в float
  • как анализировать и прогнозировать (машинное обучение) набор данных временных рядов, используя scikit-learn для python
  • Как использовать проверку креста k-fold в scikit с наивным классификатором заливов и NLTK
  • Сколько функций можно выполнить с помощью scikit-learn?
  • scidit-learn GridSearchCV перестает работать, когда n_jobs> 1
  • pip: вытягивание обновлений из удаленного репозитория git
  • Scikits Learn: как получить вес функций
  • Python - лучший язык программирования в мире.