在区间 (-5,5) 内产生100个随机数 x_i,i=1,…,100; 令 y_i=3x^3-2x^2+x-1+r_i,其中 r_i 为 (0,1) 内的随机噪声。分别设置最高次幂为2、3、4,进行多项式回归,在同一幅图中画出拟合示意图,并标注清楚对应的曲线。
时间: 2024-02-29 21:55:56 浏览: 84
好的,我会尽力回答你的问题。
首先,根据你的要求,我理解你需要使用多项式回归对这些数据进行拟合,并将不同最高次幂的拟合曲线绘制在同一幅图中。
下面是我给出的解决方案:
1. 首先,我们需要生成随机数据。我们可以使用 Python 中的 numpy 库来生成这些数据。具体代码如下:
```python
import numpy as np
np.random.seed(0)
x = np.linspace(-5, 5, 100)
r = np.random.rand(100)
y = 3 * x**3 - 2 * x**2 + x - 1 + r
```
这里我们使用了 linspace 函数来生成在区间 (-5,5) 内的 100 个随机数 x,然后使用 rand 函数生成在 (0,1) 内的随机噪声 r,最终得到 y。
2. 接下来,我们可以使用 sklearn 库中的 PolynomialFeatures 和 LinearRegression 类来进行多项式回归。我们可以分别使用 2 次、3 次和 4 次多项式来拟合数据。具体代码如下:
```python
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression
x = x.reshape(-1, 1)
poly2 = PolynomialFeatures(degree=2)
x2 = poly2.fit_transform(x)
model2 = LinearRegression().fit(x2, y)
poly3 = PolynomialFeatures(degree=3)
x3 = poly3.fit_transform(x)
model3 = LinearRegression().fit(x3, y)
poly4 = PolynomialFeatures(degree=4)
x4 = poly4.fit_transform(x)
model4 = LinearRegression().fit(x4, y)
```
在这里,我们首先将 x 转化为列向量,然后分别使用 PolynomialFeatures 类将 x 转化为 2 次、3 次和 4 次多项式,最后使用 LinearRegression 类进行拟合。这里需要注意的是,PolynomialFeatures 中的 degree 参数指定了多项式的最高次幂。
3. 最后,我们可以将拟合曲线绘制在同一幅图中。具体代码如下:
```python
import matplotlib.pyplot as plt
plt.scatter(x, y, s=10)
x_fit = np.linspace(-5, 5, 1000).reshape(-1, 1)
x2_fit = poly2.fit_transform(x_fit)
y2_fit = model2.predict(x2_fit)
plt.plot(x_fit, y2_fit, label='2nd degree')
x3_fit = poly3.fit_transform(x_fit)
y3_fit = model3.predict(x3_fit)
plt.plot(x_fit, y3_fit, label='3rd degree')
x4_fit = poly4.fit_transform(x_fit)
y4_fit = model4.predict(x4_fit)
plt.plot(x_fit, y4_fit, label='4th degree')
plt.legend()
plt.show()
```
在这里,我们首先使用 scatter 函数将原始数据点绘制出来,然后使用 linspace 函数生成 1000 个 x 值,再将其转化为列向量。然后,我们分别使用 fit_transform 函数将 x_fit 转化为 2 次、3 次和 4 次多项式,再使用 predict 函数计算拟合曲线上的 y 值。最后,我们使用 plot 函数将拟合曲线绘制出来,并使用 legend 函数添加图例。
最终的结果如下图所示:
![多项式回归拟合示意图](https://img-blog.csdnimg.cn/20220103124732522.png)
在这个示意图中,每个不同颜色的曲线分别代表了使用不同最高次幂的多项式进行的拟合。你可以看到,随着最高次幂的增加,拟合曲线变得越来越复杂,但同时也更加贴近原始数据。
阅读全文