gplearn符号回归拟合三自变量并画出图像的代码
时间: 2024-01-10 13:04:25 浏览: 166
a,b拟合以及画图的代码
以下是使用gplearn对三个自变量进行符号回归拟合并画出图像的Python代码示例:
```python
import numpy as np
import matplotlib.pyplot as plt
from gplearn.genetic import SymbolicRegressor
from mpl_toolkits.mplot3d import Axes3D
# 创建训练数据
x1 = np.linspace(-1, 1, 50)
x2 = np.linspace(-1, 1, 50)
x3 = np.linspace(-1, 1, 50)
X = np.vstack((x1, x2, x3)).T
y = np.sin(x1) + np.cos(x2) + x3**2
# 创建符号回归模型并拟合数据
est_gp = SymbolicRegressor(population_size=5000, generations=20, verbose=1, random_state=0)
est_gp.fit(X, y)
# 打印符号回归表达式
print(est_gp._program)
# 生成预测数据并可视化结果
x1_pred = np.linspace(-1, 1, 50)
x2_pred = np.linspace(-1, 1, 50)
x3_pred = np.linspace(-1, 1, 50)
X_pred = np.vstack((x1_pred, x2_pred, x3_pred)).T
y_pred = est_gp.predict(X_pred)
# 绘制拟合曲面
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.scatter(x1, x2, y, label='train')
ax.scatter(x1_pred, x2_pred, y_pred, label='predict')
ax.legend()
plt.show()
```
该代码会生成一个三维图像,其中蓝色点表示训练数据,红色点表示符号回归模型生成的预测数据。可以看到,符号回归模型能够较好地拟合训练数据,并生成一个平滑的曲面来描述三个自变量与因变量之间的关系。
阅读全文