如何解决如何基于另一个参数将lmfit参数绑定为param1 <0.5 * param2
我尝试遵循lmfit
的{{3}}中给出的示例,并产生了以下内容:
...
params.add(name="m",value=m_init,min=m_min,max=m_max)
params.add(name="mni_minus_m",value=1,vary=True,min=1e-12)
params.add(name="m_ni",expr='0.5*m + mni_minus_m') # max value of m_ni is 0.5*m
...
这驻留在一个函数中,该函数采用m_max
,m_min
等参数。
您可能会说,我希望将m_ni
的最大值设置为m
值的一半,但是希望可以自由地在零(最好是最小值0.1)之间变化。以及最大数目出于类似float精度(?)的原因,在类似的问题中建议在中间参数中设置min=
不幸的是,看来这实际上只是将m_ni
的值粘贴到m
的50%上。对于我尝试与此匹配的所有事情,似乎都是这种情况。
这很可能发生,因为这是最小二乘决定要执行的操作,而这实际上是正确的语法,但是我不确定,并想向比我更胜任的任何人进行验证。
我还想知道在这种情况下如何为m_ni
设置一个初始值,因为这对我来说还不是很清楚。
解决方法
我还没有使用过这个库,但是听起来像你想要的
OLS Lasso Ridge
0 1.000000 0.914186 0.985494
1 0.700401 0.877555 0.867068
或者最后一个可能是
params.add(name="m",value=m_init,min=m_min,max=m_max)
params.add(name="mni_factor",min=0,max=0.5)
params.add(name="m_ni",expr='m * mni_factor')
获得0.1的下限,但是我不确定这是否对优化行为有效:)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。