我似乎无法弄清楚逻辑回归模型得分的语法。
logit = sm.Logit(data[response],sm.add_constant(data[features]))
model = logit.fit()
preds = model.predict(data[features])
这是我得到的追溯(抱歉丑陋的格式,不知道如何解决它......)
2 logit = sm.Logit(data[response],sm.add_constant(data[features]))
3 model = logit.fit()
----> 4 preds = model.predict(data [features])
878 exog = dmatrix(self.model.data.orig_exog.design_info.builder,
879 exog)
- > 880返回self.model.predict(self.params,exog,* args,** kwargs) 881 882
376 exog = self.exog
377 if not linear:
- > 378返回self.cdf(np.dot(exog,params)) 379其他: 380返回np.dot(exog,params)
ValueError:矩阵未对齐
答案 0 :(得分:2)
您在估算中包含常数,但不在预测中。
用于预测的解释变量需要相同数量的变量,包括在估算中使用的常数:
preds = model.predict(sm.add_constant(data[features]))
向数据框添加常量列通常很有用,因此我们有一组一致的变量,包括常量。
相关:如果已在模型中使用了公式接口,那么公式接口也会在预测调用中执行一些自动转换。
答案 1 :(得分:1)
看起来您还需要将常量添加到predict方法中。假设您正在使用pandas,那么可能更容易做到
data['constant'] = 1
并将其添加到您的功能列表中。或者,您可以使用statsmodels.formula.api.logit