我想使用Sklearn进行线性回归分析,以下是我的代码。我收到一个错误,提示“Expected 2D array, got 1D array instead”(期望是二维数组,但得到的是一维数组)
from sklearn.linear_model import LinearRegressionimport numpy as npimport pandas as pdimport matplotlib.pyplot as plt%matplotlib inline# 从csv文件导入数据并存储到变量中data = pd.read_csv("Advertising.csv")x = data.iloc[:,2]y = data.iloc[:,4]reg = LinearRegression(x,y)reg.fit (x,y)
错误:
ValueError: Expected 2D array, got 1D array instead:array=[ 37.8 39.3 45.9 41.3 10.8 48.9 32.8 19.6 2.1 2.6 5.8 24. 35.1 7.6 32.9 47.7 36.6 39.6 20.5 23.9 27.7 5.1 15.9 16.9
回答:
你的代码在LinearRegression的构造函数中出现了错误。
不要这样做:
reg = LinearRegression(x,y)
应该这样做:
reg = LinearRegression()
至于你提到的错误,是因为你的X只有单列。因此当前的形状是
(n_rows,)
所有scikit估计器都要求X的形状为:
(n_rows, n_columns)
所以,你需要这样重塑你的X:
X = X.reshape(-1,1)
然后将它们传递给fit()函数