问题原因
此错误出现是因为在使用 scikit-learn 的一些模型时,模型需要输入的目标变量 y 需要是二维的数组(即 y 的形状为[样本数,目标变量数])。但是,如果输入的 y 是一维的数组,则会出现上述错误。
解决办法
将 y 转换为二维数组:
可以使用 Numpy 中的 reshape 函数将一维数组转换为二维数组。
示例代码如下:
import numpy as np
from sklearn.linear_model import LinearRegression
X = np.array([[1, 2], [3, 4], [5, 6], [7, 8]])
y = np.array([1, 2, 3, 4])
y_2d = y.reshape(-1, 1)
model = LinearRegression()
model.fit(X, y_2d)
使用一些适合多输出问题的模型:
如果 y 确实是多目标的,可以使用一些适合多输出问题的模型,例如 MultiOutputRegressor 或 MultiOutputClassifier。
示例代码如下:
from sklearn.multioutput import MultiOutputRegressor
from sklearn.linear_model import Ridge
X = [[0., 0.], [1., 1.], [2., 2.], [3., 3.]]
y = [[0., 0.], [1., 1.], [2., 2.], [3., 3.]]
model = MultiOutputRegressor(Ridge(random_state=123))
model.fit(X, y)