多项式回归求函数关系代码
时间: 2023-12-20 08:21:26 浏览: 30
以下是使用多项式回归求函数关系的代码:
```python
import numpy as np
import sklearn.pipeline as pl
import sklearn.preprocessing as sp
import sklearn.linear_model as lm
from sklearn.metrics import mean_squared_error
import matplotlib.pyplot as plt
# 生成数据集
data = []
for i in range(100):
x = np.random.uniform(-5., 15.)
eps = np.random.normal(0., 0.1)
y = -5.555 * x**3 + 2.333 * x**2 + 1.477 * x + 0.089 + eps
data.append([x, y])
data = np.array(data)
# 创建模型(管线)
piple = pl.make_pipeline(
sp.PolynomialFeatures(3), # 多项式特征扩展器,degree表示拟合的最高次数,这里是3次
lm.LinearRegression() # 线性回归器
)
model = piple.fit(data[:, 0].reshape(-1, 1), data[:, 1])
# 查看结果(评价指标)
y_pred = model.predict(data[:, 0].reshape(-1, 1))
mse = mean_squared_error(y_pred, data[:, 1])
print('MSE:', mse)
# 预测
x_new = np.arange(-25, 25).reshape(-1, 1)
y_pred = model.predict(x_new)
# 可视化结果
plt.scatter(data[:, 0], data[:, 1], c='g', label='scatter gram')
plt.scatter(x_new, y_pred, c='red', label='predicted')
plt.legend()
plt.show()
```
这段代码首先生成了一个包含100个样本点的数据集,每个样本点包括一个输入x和一个输出y。然后使用多项式回归创建了一个模型,并将数据集用于模型的训练。接着计算了预测结果与真实结果之间的均方误差(MSE)作为评价指标。最后,使用模型对新的输入进行预测,并将原始数据点和预测结果在散点图上进行可视化展示。