我正在使用季度数据矩阵:
Qtrs,Y,X,,,
1Q11, 252.0 , 0.0166 ,1,0,0
2Q11, 212.4 , 0.0122 ,0, 1 ,0
3Q11, 425.9 , 0.0286 ,0,0, 1
4Q11, 522.3 , 0.0322 ,0,0,0
1Q12, 263.2 , 0.0185 ,1,0,0
2Q12, 238.6 , 0.0131 ,0, 1 ,0
3Q12, 411.3 , 0.0270 ,0,0, 1
4Q12, 538.4 , 0.0343 ,0,0,0
1Q13, 272.0 , 0.0180 ,1,0,0
2Q13, 212.3 , 0.0122 ,0, 1 ,0
3Q13, 405.2 , 0.0257 ,0,0, 1
4Q13, 495.8 , 0.0308 ,0,0,0
1Q14, 264.5 , 0.0179 ,1,0,0
2Q14, 211.2 , 0.0116 ,0, 1 ,0
我使用以下代码读取csv数据文件并使其适合模型:
import pandas as pd
from sklearn.linear_model import LinearRegression
data = pd.read_csv('C:/Filepath/Macro.csv')
regressor = LinearRegression()
regressor.fit(data['X'], data['Y'])
然而,执行代码时出现的错误是:
ValueError: Found arrays with inconsistent numbers of samples: [ 1 14]
知道我提出的基本错误是什么?
答案 0 :(得分:1)
sklearn模型期望X
数据(预测变量)为形状的二维数据(n_samples,n_features)。
因此,在这种情况下,您可以通过执行data[['X']]
而不是data['X']
将X数据作为数据框传递:
In [24]: regressor.fit(data[['X']], data['Y'])
Out[24]: LinearRegression(copy_X=True, fit_intercept=True, normalize=False)
作为双方括号的解释:data[['X']]
是指定您想要选择与此列名列表对应的数据帧子集的pandas方式(在您的情况下是一个元素的列表),而不是data['X']
,而只是将一列作为一个系列返回:
In [27]: data['X'].shape
Out[27]: (14L,)
In [28]: data[['X']].shape
Out[28]: (14, 1)