StatsModels:为什么我们必须拟合模型?

时间:2019-04-15 14:46:51

标签: python scikit-learn statsmodels

在StatsModels(以及其他类似scikit-learn的库)中,我们首先必须创建一个模型:

model = sm.OLS(y, x)

然后安装它:

results = model.fit()

这两个步骤为什么分开?

2 个答案:

答案 0 :(得分:1)

@RestController @Validated public class Ctrl { // ... @GetMapping("/{id}") public String getById(@Pattern(regexp = REGEXP) @PathVariable String id) { return someObjectService.getById(UUID.fromString(id))); } } 中的参数可以看出fit是独立方法的主要原因。我们只创建一次特定的模型一次,但是我们可能想要或者可能不得不多次调用fit

一个例子是优化中的问题,我们需要在达到收敛之前尝试使用不同的优化器或初始值,或者意识到该模型不适用于数据,并且不存在常规的优化。

作为fit参数可用的另一个选项是不同的fit,它们是用于计算参数估计的标准误差的不同方法。

另一个原因是,几个模型现在具有几种cov_type方法,这些方法无法通过常规fit方法使用。例如fit用于惩罚估计,fit_regularized用于在参数线性约束下进行估计。在这些模型中,我们不需要调用常规的fit_constrained方法。

更笼统的问题:为什么statsmodels使用这种复杂的类层次结构和大量方法,而不是将所有内容都放入函数中?

主要原因是模块化,代码可重用性和延迟评估。

答案 1 :(得分:0)

fit()是表示模型的类的方法。首先,您从该类(此处为sm.OLS创建一个对象,然后从该类中调用方法fit()

该类经常使用其他方法,例如scorepredict,...