【问题标题】:ValueError: shapes (993,228) and (1,228) not aligned: 228 (dim 1) != 1 (dim 0)ValueError:形状(993,228)和(1,228)未对齐:228(dim 1)!= 1(dim 0)
【发布时间】:2019-05-28 21:52:46
【问题描述】:

我在 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,)

【问题讨论】:

    标签: python-3.x numpy valueerror


    【解决方案1】:

    est.predict() 期望第一个参数是 params (more here),但您传递的 X[5] 形状为 1, 128。当模型尝试将 X 与 params 相乘时抛出错误消息(在此案例 X[5])。

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

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

    解决方案

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

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

    【讨论】:

    • 嘿,我已经为这个错误苦苦挣扎了好几个小时。这就像一个魅力。非常感谢您拯救了这一天:)
    猜你喜欢
    • 2019-03-21
    • 2021-04-25
    • 2021-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-26
    • 2019-04-25
    • 2019-04-01
    相关资源
    最近更新 更多