如何使用statsmodels.formula.api(python)预测新值

问题描述 投票:2回答:2

我使用以下来自乳腺癌数据训练逻辑模型,并且仅使用一个特征'mean_area'

from statsmodels.formula.api import logit
logistic_model = logit('target ~ mean_area',breast)
result = logistic_model.fit()

在训练模型中存在内置预测方法。然而,这给出了所有训练样本的预测值。如下

predictions = result.predict()

假设我想要一个新值的预测说30如何使用训练的模型输出值? (而不是手动读取系数和计算)

python machine-learning scikit-learn logistic-regression statsmodels
2个回答
2
投票

您可以为.predict()模型提供新值,如此notebook中的输出#11所示,来自单个观察的文档。您可以提供2d array的多个观测值,例如DataFrame - see docs

由于您使用的是公式API,因此您的输入需要采用pd.DataFrame的形式,以便列引用可用。在你的情况下,你可以使用像.predict(pd.DataFrame({'mean_area': [1,2,3]})这样的东西。

当没有提供替代方案时,statsmodels .predict()仅将用于拟合的观察结果用作默认值。


1
投票

将statsmodels.formula.api导入为smf

model = smf.ols('y~x',data = df).fit()

预测观察列表,列表长度可以是1到多个..

prediction = model.get_prediction(exog = dict(x = [5,10,25]))

prediction.summary_frame(阿尔法= 0.05)

© www.soinside.com 2019 - 2024. All rights reserved.