python用15次多项式拟合数据并作图,分析经验误差和测试误差的代码
时间: 2024-05-02 09:19:04 浏览: 103
以下是用Python进行15次多项式拟合数据并作图的示例代码:
```
import numpy as np
import matplotlib.pyplot as plt
# 生成随机数据
x = np.random.rand(100)
y = np.sin(x*2*np.pi) + np.random.randn(100) * 0.2
# 用15次多项式拟合数据
p = np.polyfit(x, y, 15)
# 生成预测数据
x_pred = np.linspace(0, 1, 100)
y_pred = np.polyval(p, x_pred)
# 计算经验误差和测试误差
y_fit = np.polyval(p, x) # 拟合数据
E_emp = np.sum((y - y_fit) ** 2) / len(y) # 经验误差
E_test = np.sum((np.sin(x_pred*2*np.pi) - y_pred) ** 2) / len(y_pred) # 测试误差
# 绘图
plt.scatter(x, y, s=10)
plt.plot(x_pred, y_pred, color='r', label='15th order polynomial fit')
plt.legend()
plt.title(f'Empirical Error={E_emp:.4f}, Test Error={E_test:.4f}')
plt.show()
```
需要注意的是,多项式次数过高会导致过拟合,因此在实际应用中需要进行模型选择和交叉验证等步骤来避免过拟合问题。
阅读全文