我一直在摆弄不同的 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
而哪些不能?我如何判断给定类型的模型是否支持这一点,而不仅仅是试图从错误消息中猜测?