ValueError:形状(993,228)和(1,228)不对齐:228(dim 1)!= 1(dim 0)

时间:2019-01-02 08:12:36

标签: python-3.x numpy valueerror

我已经在python中创建了OLS线性回归模型,当我预测一个特定值时,我得到了错误。

我的代码如下:

df=pd.read_csv("smatrix.csv",index_col=0)
import statsmodels.api as sm

x=df.iloc[:,:-1]
y=df.Rating

est = sm.OLS(y.astype(float), x.astype(float))
results=est.fit()

op=list()
for i in df.columns:
    if 'bad' == i:
        op.append(1)
    else:
        op.append(0)
op=op[:-1]
X5=np.array(op).reshape(1,-1)
y1=est.predict(X5)

我得到的错误是

ValueError: shapes (993,228) and (1,228) not aligned: 228 (dim 1) != 1 (dim 0)

X5的形状是(1,228)

x的形状是(993,228)

y的形状为(993,)

1 个答案:

答案 0 :(得分:1)

est.predict()期望第一个参数为params(more here),但是您正在传递形状为1、128的X [5]。当模型尝试将X与参数(在本例中为X [5])。

X -> (993, 128)
params -> (1, 128)

这两个矩阵(X,参数)不能相乘,因为X(128)的列与params(1)的行不对齐。

解决方案

使用通过fit方法学习的参数。

y1=est.predict(results.params, X5)