Python 3.x 值错误:形状(993228)和(1228)未对齐:228(尺寸1)!=1(尺寸0)

Python 3.x 值错误:形状(993228)和(1228)未对齐:228(尺寸1)!=1(尺寸0),python-3.x,numpy,valueerror,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:

我用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的形状是(1228) x的形状是(993228) y的形状是(993,)

est.predict()希望第一个参数是params(),但您传递的是形状1128的X[5]。当模型尝试将X与参数相乘(在本例中为X[5])时,会抛出错误消息

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

解决方案 使用通过拟合方法学习的参数

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

嘿,我已经为这个错误挣扎了好几个小时了。这很有魅力。非常感谢您为我们节省了时间:)
y1=est.predict(results.params, X5)