scipy.stats.rv_continuous.fit优化器参数

2024-06-16 12:27:40 发布

您现在位置:Python中文网/ 问答频道 /正文

当使用scipy.stats.rv_continuous.fit即相对公差时,是否可以操纵optimizer的参数

在R中,我们可以使用control。Python呢

fitdist(data, "weibull", method="mle", control=list(reltol=1e-14))$estimate

Tags: data参数statsscipymethodcontrollistfit
1条回答
网友
1楼 · 发布于 2024-06-16 12:27:40

fit方法的optimizer参数允许您重写默认的优化函数(即^{})并提供您自己的优化函数。作为optimizer参数提供的可调用项必须具有签名optimize(func, x0, args=(), disp=False)

要更改默认控件参数,可以使用自定义的optimizer调用fmin和其他xtol和/或ftol参数。(注意:您可以使用不同的优化器而不是fmin

from scipy.optimize import fmin


def optimizer(func, x0, args=(), disp=False):
    return fmin(func, x0, args=args, disp=disp, xtol=1e-13, ftol=1e-12)

比如说,

from scipy.stats import weibull_min
from scipy.optimize import fmin


def optimizer(func, x0, args=(), disp=False):
    return fmin(func, x0, args=args, disp=disp, xtol=1e-13, ftol=1e-12)


data = [2457.145, 878.081, 855.118, 1157.135, 1099.82]

shape, loc, scale = weibull_min.fit(data, floc=0, optimizer=optimizer)
print(f"shape = {shape:9.7f},  scale={scale:9.7f}")

输出:

shape = 2.3078998,  scale=1463.7713354

相关问题 更多 >