ValueError: Expected 2D array, got 1D array instead - sklearn 多项式回归问题解析
ValueError: Expected 2D array, got 1D array instead - sklearn 多项式回归问题解析
在使用 sklearn 库进行多项式回归时,你可能会遇到 ValueError: Expected 2D array, got 1D array instead 的错误。这个错误通常出现在使用 PolynomialFeatures.transform 方法时,传递给该方法的数组是一维数组,而它期望接收的是一个二维数组。
错误原因分析:
PolynomialFeatures.transform 方法用于将数据转换为多项式特征。该方法需要接收一个二维数组作为输入,其中每一行代表一个样本,每一列代表一个特征。而当你传入一个一维数组时,它会被解释成一个样本,导致维度不匹配,从而引发错误。
解决方案:
要解决这个问题,我们需要将一维数组转换为二维数组。可以使用 numpy 库的 reshape 方法轻松实现这一点。
假设你遇到错误的代码如下:pythonimport numpy as npfrom scipy.optimize import minimize_scalarfrom sklearn.preprocessing import PolynomialFeaturesfrom sklearn.linear_model import LinearRegression
... (其他代码) ...
def objective_function(x): # 构建X矩阵 x_matrix = np.array([x]) x_poly_matrix = po.transform(x_matrix) # 错误发生在此行 # ... (其他代码) ...
错误代码解析:
问题出在 objective_function 函数中,x_matrix 使用 np.array([x]) 创建,这是一个一维数组。而 PolynomialFeatures.transform 方法需要接收一个二维数组作为输入。
**修改后的代码:**pythonimport numpy as npfrom scipy.optimize import minimize_scalarfrom sklearn.preprocessing import PolynomialFeaturesfrom sklearn.linear_model import LinearRegression
... (其他代码) ...
def objective_function(x): # 构建X矩阵,使用reshape将其转换为二维数组 x_matrix = np.array([x]).reshape(1, -1) x_poly_matrix = po.transform(x_matrix) # ... (其他代码) ...
代码解析:
通过使用 reshape(1, -1),我们将 x_matrix 转换为一个包含一行的二维数组,从而满足了 PolynomialFeatures.transform 方法对输入的要求。
总结:
遇到 ValueError: Expected 2D array, got 1D array instead 错误,首先要检查是否将一维数组传递给了需要二维数组的方法。如果确认是这个问题,可以使用 reshape 方法将数组转换为正确的维度,即可解决问题。
原文地址: https://www.cveoy.top/t/topic/fOjA 著作权归作者所有。请勿转载和采集!