繁体   English   中英

如何在 python 的范围内找到 function 的根

[英]How to find the root of a function within a range in python

我需要在线性组合alpha*Id+(1-alpha)*M的 [0,1] 中找到alpha值,其中Id是单位矩阵, M是给定矩阵,这样该线性组合具有给定的均值。

目前我正在使用scipyt.optimize.fsolve但它不允许范围 [0,1] 作为输入。 有什么建议吗?

您可以使用 S 形 function 定义alpha

alpha = 1/(1+exp(-x))

https://en.wikipedia.org/wiki/Sigmoid_function

根据此定义,alpha 将始终在[0, 1]范围内。 然后,您可以更改scipy.optimize.fsolve中的优化目标以校准x的值,而不是直接校准alpha

变量x不受约束,因此任何优化方法都有效。


附言。 这种技术在机器学习中很常见。


PS2。 向优化器添加约束仅在约束未得到满足时才重要。 因此,例如,如果您的alpha解决方案已经在[0,1]范围内,那么您可以保持优化器不变。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM