gpt4 book ai didi

python - 如何将 gplearn 的输出导出为 sympy 表达式或其他可读格式?

转载 作者:太空宇宙 更新时间:2023-11-03 15:48:29 24 4
gpt4 key购买 nike

尽管这听起来像是一项简单的任务,但我还没有通过文档找到实现它的方法。

运行任意例程后(例如其中一个 examples ,我得到类似的东西

>>> print(est_gp)
sqrt(div(add(1.000, sub(div(sqrt(log(0.978)), X0), mul(-0.993, X0))),add(-0.583, 0.592)))

我如何(或者我什至可以)将其转换为可以在 gplearn 外部使用的表达式,如 sympy 表达式?

最佳答案

您可以使用 sympify 将其变成 SymPy 表达式.这需要提供字典,以便 SymPy 正确解释诸如 add、mul、sub、div 之类的内容:

locals = {
"add": Add,
"mul": Mul,
"sub": Lambda((x, y), x - y),
"div": Lambda((x, y), x/y)
}

sympify('sqrt(div(add(1.000, sub(div(sqrt(log(0.978)), X0), mul(-0.993, X0))), add(-0.583, 0.592)))', locals=locals)

这将返回一个 SymPy 表达式,打印为

sqrt(110.333333333333*X0 + 111.111111111111 + 16.5721799259414*I/X0)

符号 X0 可以作为 Symbol("X0") 访问。或者,这是一种更稳健的方法,您可以通过创建符号并将它们提前添加到字典中来明确说明符号是什么。

X0 = symbols("X0")
locals = {
"add": Add,
"mul": Mul,
"sub": Lambda((x, y), x - y),
"div": Lambda((x, y), x/y),
"X0": X0
}

这是必需的,例如,将 I 解析为符号“I”而不是 SymPy 默认情况下所做的“虚数单位”。

我对 sqrt(log(0.978)) 的计算结果不满意。虽然 sympify 有选项 evaluate=False,它可以防止加法之类的事情,但它不会阻止对带有浮点参数的函数进行求值。

关于python - 如何将 gplearn 的输出导出为 sympy 表达式或其他可读格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48404263/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com