用Python写一个多项式回归的代码
时间: 2024-02-13 13:00:34 浏览: 98
好的,以下是一个简单的多项式回归的Python代码:
```python
import numpy as np
import matplotlib.pyplot as plt
# 生成随机数据
x = np.linspace(-1, 1, 100)
y = 2 * x ** 2 - 3 * x + 1 + np.random.randn(100) * 0.5
# 将x转化为矩阵形式,并增加一列全为1的常数列
X = np.vstack([x ** 2, x, np.ones_like(x)]).T
# 初始化权重
w = np.random.randn(3)
# 设置学习率和迭代次数
lr = 0.01
epochs = 1000
# 梯度下降
for i in range(epochs):
# 计算预测值
y_pred = X.dot(w)
# 计算损失函数(均方误差)
loss = np.mean((y_pred - y) ** 2)
# 计算梯度并更新权重
gradient = X.T.dot(y_pred - y)
w -= lr * gradient
if (i + 1) % 100 == 0:
print(f"Epoch {i + 1}/{epochs}, Loss: {loss:.4f}")
# 绘制数据和拟合曲线
plt.scatter(x, y)
plt.plot(x, X.dot(w), color="r")
plt.show()
```
这个代码实现了一个二次多项式回归模型,通过随机生成数据来模拟真实场景。首先将x和y转换为numpy数组形式,并将x转化为矩阵形式,并增加一列全为1的常数列,用于表示偏置项。然后初始化权重,设置学习率和迭代次数。在每个epoch中,计算预测值和损失函数,并根据梯度下降更新权重。最后绘制原始数据和拟合曲线。
阅读全文