我编写了以下代码,但我无法让“预测”方法起作用:
ols_model.predict([1000.0])
我的'df'是一个pandas数据框,其列标题为“消费”和“Disposable_Income”。例如,当我跑步时,
ols_model.predict(df['Disposable_Income'].values)
我得到:“TypeError:list indices必须是整数,而不是str”
例如,当我跑步时,
:
我得到:“IndexError:只有整数,切片(...
),省略号(None
),numpy.newaxis(awk
)和整数或布尔数组是有效索引”< / p>
我很困惑,因为我认为这两种格式正是文档所说的 - 放入x变量的值数组。我究竟应该如何使用'预测'方法?
答案 0 :(得分:2)
由于您使用模型中的公式,公式信息也将用于解释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)
答案 1 :(得分:0)
不确定这是否是最好的方法,但经过大量的摆弄后,我得到了这个代码(似乎abit笨拙和低效):
假设我想预测X = 10和X = 1000的值:
import statsmodels.api as sm
from statsmodels.formula.api import ols
ols_model = ols('Consumption ~ Disposable_Income', df).fit()
regressor = ols('Consumption ~ Disposable_Income', df)
regressor.predict(ols_model.params, exog=[[1,10],[1,1000]])