我正在尝试在python中编写一个程序,它使用遗传算法来提取与一组数据匹配的函数。
例如,如果我输入:
3, 5, 7, 9, 11
输出应该是这样的:
2x + 1
问题是,我正在尝试用Python做这个,我不知道如何在Python中建模数学函数。我需要像神经网络这样的东西吗?
我已经写了一个通用的遗传算法,一旦我弄清楚如何开始就可以修改。
非常感谢。
答案 0 :(得分:0)
您要找的是symbolic regression。
由于您已经处于遗传算法路径,因此您可以采取进一步措施genetic programming。
通过遗传编程,每个人都是使用终端和原始功能(构建块)表示的“程序”。
例如,符号回归:
terminal set = {x, 1, 2, 3, 4, 5, 6, 7, 8, 9}
function set = {+, -, *, /, exp, log, sin}
“简单”程序(2x + 1
):
+
/ \
2 +
/ \
* \
/ \ \
10 x \
-
/ \
* 1
/ \
- x
/ \
3 11
这表示为树结构,但非树表示已成功实现。
GP的缺点是必须探索大的搜索空间,而且计算成本非常高。这可以通过基于生成数据的系统的现有知识限制提供给算法的构建块集来减弱。
然而,符号回归的这一特征也具有优势:因为进化算法需要多样性才能有效地探索搜索空间。
如果你的是一个学习项目,python是一个在相对较短的时间内开发一个简单框架的好语言。
否则你冷看看DEAP(一个很好的基于Python的进化计算框架,包括遗传编程)。