python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python gplearn遗传编程

Python执行遗传编程gplearn库使用实例探究

作者:程序员小寒

这篇文章主要为大家介绍了Python执行遗传编程gplearn库使用实例探究,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

python gplearn库

今天给大家介绍一个神奇的 python 库,gplearn

https://github.com/trevorstephens/gplearn   

gplearn 是一个用于执行遗传编程(Genetic Programming, GP)的 Python 库,它建立在 scikit-learn 的接口之上,提供了一种灵活、高效的方法来发现数据中的模式和关系。虽然遗传编程 (GP) 可用于执行非常广泛的任务,但 gplearn 被有意限制为解决符号回归问题。

什么是符号回归

符号回归的核心目标是找到准确描述数据集的数学公式。与预先定义模型结构的传统回归技术(如线性或多项式回归)不同,符号回归会搜索理想结构及其参数。这使得它非常适合发现传统方法可能错过的隐藏关系。

假设你有以下数据。

x, y 
1, 3 
2, 6 
3, 12 
4, 18

符号回归算法可能会自动发现 x 和 y 之间的关系最好用公式 y = x² + 2 来描述。这个简单的示例演示了符号回归如何超越拟合预定义的直线或曲线;它实际上发现了潜在的数学关系。

何时使用符号回归

何时使用符号回归的选择在很大程度上取决于你的问题和优先级。

gplearn 的特点

库的安装

可以直接使用 pip 进行安装。

pip install gplearn

案例分享

让我们通过一个简单的例子来看看实际效果。

import numpy as np
from gplearn.genetic import SymbolicRegressor
import matplotlib.pyplot as plt

# Generating synthetic data
np.random.seed(0)
x = np.linspace(-10, 10, 100)
y = x + np.log2(x**2) + 3*np.sin(x) + np.random.normal(0, 0.1, 100)

# Creating Symbolic Regressor
function_set = [
    'add', 'sub', 'mul', 'div', 'sqrt', 'log', 'abs', 'sin', 'cos', 'tan']
symbolic_regressor = SymbolicRegressor(population_size=5000,
                                       generations=20,
                                       function_set=function_set,
                                       stopping_criteria=0.01,
                                       p_crossover=0.6, p_subtree_mutation=0.2,
                                       p_hoist_mutation=0.05, p_point_mutation=0.1,
                                       max_samples=0.9, verbose=1,
                                       parsimony_coefficient=0.01, random_state=0)

# Fitting the model
symbolic_regressor.fit(x.reshape(-1, 1), y)

# Print the best program
print(symbolic_regressor._program)

# Predictions
y_pred = symbolic_regressor.predict(x.reshape(-1, 1))

# Plotting
plt.figure(figsize=(10, 6))
plt.scatter(x, y, label="Actual Data")
plt.plot(x, y_pred, color='red', label="Symbolic Regression Model")
plt.legend()
plt.xlabel("X")
plt.ylabel("Y")
plt.title("Symbolic Regression Example")
plt.show()

此代码片段将训练符号回归模型并揭示与原始函数非常相似的方程。

以上就是Python执行遗传编程gplearn库使用实例探究的详细内容,更多关于Python gplearn执行遗传编程库的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文