Python 哪些scikit学习工具可以处理多变量输出?

Python 哪些scikit学习工具可以处理多变量输出?,python,scikit-learn,Python,Scikit Learn,我一直在摆弄不同的scikit学习工具。监督学习类都有相同的通用API,您可以在其中调用model.fit(X,y)来拟合模型。使用其中的一些(至少是树外分离器),我可以为y传入一个二维数组,它工作得很好。对于其他人来说,这是行不通的。不过,它通常不会说为什么不起作用:我得到的形状不匹配错误表明,它只能预测单个输出维度,而实际上没有这样说。例如,对于随机梯度下降: >>> X.shape (77946, 24) >>> y.shape (77946, 24)

我一直在摆弄不同的scikit学习工具。监督学习类都有相同的通用API,您可以在其中调用
model.fit(X,y)
来拟合模型。使用其中的一些(至少是树外分离器),我可以为
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.
>>X.shape
(77946, 24)
>>>y形
(77946, 24)
>>>mach=sklearn.linear_model.SGDRegressor()
>>>马赫配合(X,y)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
马赫配合(X,y)
文件“C:\FakeProgs\Python\lib\site packages\sklearn\linear\u model\randomic\u gradient.py”,第842行,在fit中
样品重量=样品重量)
文件“C:\FakeProgs\Python\lib\site packages\sklearn\linear\u model\randomic\u gradient.py”,第811行,以\u-fit格式
coef_init,intercept_init)
文件“C:\FakeProgs\Python\lib\site packages\sklearn\linear\u model\random\u gradient.py”,第752行,部分拟合
_检查拟合数据(X,y)
文件“C:\FakeProgs\Python\lib\site packages\sklearn\linear\u model\randomic\u gradient.py”,第228行,在检查拟合数据中
raise VALUERROR(“X和y的形状不匹配”)
ValueError:X和y的形状不匹配。
嗯,是的,他们确实相配。如果我只使用
y
的一列,它就可以工作,但我不知道这是否意味着不支持多变量
y
,或者我做得不对

是否有明确的文档说明哪些scikit类可以接受二维
y
,哪些不能?我如何判断给定类型的模型是否支持这一点,而不只是试图从错误消息中猜测?

SGDRegressor的of
SGDRegressor
明确表示预期目标具有形状
(n_样本,)
因此为1D

如果需要,您可以为每个目标包装一个for循环以适合一个
SGDRegressor
。否则,您可以尝试
Ridge
RidgeCV
ElasticNet
ElasticNetCV

编辑:如果您想向
SGDRegressor
添加对多目标的支持,请随时发送拉取请求。

SGDRegressor
明确声明预期目标具有形状
(n_示例),
因此为1D

如果需要,您可以为每个目标包装一个for循环以适合一个
SGDRegressor
。否则,您可以尝试
Ridge
RidgeCV
ElasticNet
ElasticNetCV

编辑:如果您想向
SGDRegressor
添加对多目标的支持,请随时发送请求