scikit-learn报”ValueError: For a multioutput estimator, y must be a 2D array, but got y.shape = {y_shape}. “的原因以及解决办法

问题原因

此错误出现是因为在使用 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)

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:scikit-learn报”ValueError: For a multioutput estimator, y must be a 2D array, but got y.shape = {y_shape}. “的原因以及解决办法 - Python技术站

(0)
上一篇 2023年3月19日
下一篇 2023年3月19日

相关文章

合作推广
合作推广
分享本页
返回顶部