我编写了以下代码,但我无法让“预测”方法发挥作用:
import statsmodels.api as sm
from statsmodels.formula.api import ols
ols_model = ols('Consumption ~ Disposable_Income', df).fit()
我的“df”是一个 pandas 数据框,其列标题为“消耗”和“Disposable_Income”。例如,当我运行时,
ols_model.predict([1000.0])
我得到:“TypeError:列表索引必须是整数,而不是 str”
例如,当我运行时,
ols_model.predict(df['Disposable_Income'].values)
我得到:“IndexError:仅整数、切片 (:
)、省略号 (...
)、numpy.newaxis (None
)和整数或 bool 数组是有效索引”
我很困惑,因为我认为这两种格式正是文档所说的 - 放入 x 变量的值数组。我到底应该如何使用“预测”方法?
最佳答案
由于您使用模型中的公式,因此公式信息也将用于解释 predict
中的 exog。
我认为您需要使用具有正确名称的解释变量的数据框或字典。
ols_model.predict({'Disposable_Income':[1000.0]})
或者类似的东西
df_predict = pd.DataFrame([[1000.0]], columns=['Disposable_Income'])
ols_model.predict(df_predict)
另一种选择是,如果用于预测的完整设计矩阵(包括常数)可用,则避免预测中的公式处理
AFAIR,这也应该有效:
ols_model.predict([[1, 1000.0]],transform=False)
关于Python 统计模型 : OLS regressor not predicting,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33476897/