Python 哪些scikit学习工具可以处理多变量输出?
我一直在摆弄不同的scikit学习工具。监督学习类都有相同的通用API,您可以在其中调用Python 哪些scikit学习工具可以处理多变量输出?,python,scikit-learn,Python,Scikit Learn,我一直在摆弄不同的scikit学习工具。监督学习类都有相同的通用API,您可以在其中调用model.fit(X,y)来拟合模型。使用其中的一些(至少是树外分离器),我可以为y传入一个二维数组,它工作得很好。对于其他人来说,这是行不通的。不过,它通常不会说为什么不起作用:我得到的形状不匹配错误表明,它只能预测单个输出维度,而实际上没有这样说。例如,对于随机梯度下降: >>> X.shape (77946, 24) >>> y.shape (77946, 24)
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的ofSGDRegressor
明确表示预期目标具有形状(n_样本,)
因此为1D
如果需要,您可以为每个目标包装一个for循环以适合一个SGDRegressor
。否则,您可以尝试Ridge
、RidgeCV
、ElasticNet
或ElasticNetCV
编辑:如果您想向SGDRegressor
添加对多目标的支持,请随时发送拉取请求。的SGDRegressor
明确声明预期目标具有形状(n_示例),
因此为1D
如果需要,您可以为每个目标包装一个for循环以适合一个SGDRegressor
。否则,您可以尝试Ridge
、RidgeCV
、ElasticNet
或ElasticNetCV
编辑:如果您想向SGDRegressor
添加对多目标的支持,请随时发送请求