强烈建议通过键入以下内容来设置新的虚拟环境
virtualenv -p python3 feyn source feyn/bin/activate
首先使用pip install numpy
安装 numpy 。 “aifeynman”包在 PyPI 上可用,可以使用pip install aifeynman
进行安装。
请注意,目前 AI Feynman 仅支持 Linux 和 Mac 环境。
进入一个干净的目录并运行以下 Python 命令:
import aifeynman aifeynman.get_demos("example_data") # Download examples from server aifeynman.run_aifeynman("./example_data/", "example1.txt", 60, "14ops.txt", polyfit_deg=3, NN_epochs=500)
此示例将在大约 10-30 分钟内得到解决,具体取决于您拥有的计算机以及是否有 GPU。
这里的“example.txt”包含要执行符号回归的数据表,列之间用空格、逗号或制表符分隔。其他参数控制搜索:这里暴力模块尝试组合“14ops.txt”中的 14 个基本操作长达 60 秒,多项式拟合尝试最高 3 次,并且插值神经网络经过训练最多到 500 个纪元。
此代码是 AI Feynman 的改进实现:符号回归的物理启发方法,Silviu-Marian Udrescu 和 Max Tegmark (2019) [科学进展] 和 AI Feynman 2.0:利用图模块化的帕累托最优符号回归,Udrescu SM 等等人。 (2020)[arXiv]。
请查看这篇 Medium 文章,了解如何运行代码的更详细说明。
首先,运行compile.sh 来编译用于暴力破解代码的fortran 文件。
ai_feynman_example.py 包含在某些示例上运行代码的示例(位于 example_data 目录中)。示例对应于论文表4中的方程I.8.14、I.10.7和I.50.26。可以在费曼符号回归数据库中找到更多可以测试代码的数据文件。
代码的main函数,由用户调用,有以下参数:
pathdir - 包含数据文件的目录的路径
filename - 包含数据的文件的名称
BF_try_time - 每次暴力调用的时间限制(默认设置为 60 秒)
BF_ops_file_type - 包含暴力代码中使用的符号的文件(默认设置为“14ops.txt”)
polyfit_deg - 多项式拟合例程尝试的多项式的最大次数(默认设置为 4)
NN_epochs - 训练的纪元数(默认设置为 4000)
vars_name - 方程中出现的变量的名称(包括输出变量的名称)。这应该作为字符串列表传递,变量名称的出现顺序与包含数据的文件中的顺序相同
test_percentage - 保留并用作测试集的输入数据的百分比
要分析的数据文件应该是一个文本文件,每列包含每个(因变量和自变量)的数值。解决方案文件将以名称solution_{filename}保存在名为“results”的目录中。解决方案文件将包含几行(对应于帕累托前沿上的每个点),每行显示:
应用于输入数据的发现方程的误差以 2 为基数的平均对数(这可以被认为是位的平均误差)
应用于输入数据的已发现方程的误差以 2 为底的累积对数(这可以视为以位为单位的累积误差)
发现的方程的复杂度(以位为单位)
所发现的方程应用于输入数据的误差
所发现方程的符号表达式
如果 test_percentage 不为零,则在每行的开头添加一个数字,显示测试集上发现的方程的错误。
ai_feynman_terminal_example.py 允许从命令行调用 aiFeynman 函数。 (例如 python ai_feynman_terminal_example.py --pathdir=../example_data/ --filename=example1.txt)。使用 python ai_feynman_terminal_example.py --help 显示可传递给函数的所有可用参数。
如果您比较、借鉴或使用 AI Feynman 工作的某些方面,请引用以下内容:
@article{udrescu2020ai, title={AI Feynman: A physics-inspired method for symbolic regression}, author={Udrescu, Silviu-Marian and Tegmark, Max}, journal={Science Advances}, volume={6}, number={16}, pages={eaay2631}, year={2020}, publisher={American Association for the Advancement of Science} }
@article{udrescu2020ai, title={AI Feynman 2.0: Pareto-optimal symbolic regression exploiting graph modularity}, author={Udrescu, Silviu-Marian and Tan, Andrew and Feng, Jiahai and Neto, Orisvaldo and Wu, Tailin and Tegmark, Max}, journal={arXiv preprint arXiv:2006.10782}, year={2020} }