生成任意数据集,使用numpy实现线性回归模型,代码要求使用向量化数据实现,并写出推导过程
时间: 2024-09-14 11:17:01 浏览: 97
在Python中,我们可以使用NumPy库生成随机数据集,然后构建一个简单的线性回归模型。下面是一个例子,首先我们将生成两个相关的随机变量X(自变量)和y(因变量),假设它们满足y = a * x + b + 随机误差的形式。
```python
import numpy as np
# 设置随机数种子以便复现结果
np.random.seed(0)
# 生成随机数据 (500个样本点)
n_samples = 500
a = 1.5 # 真实斜率
b = 10 # 真实截距
x = np.linspace(-10, 10, n_samples) # 自变量范围在-10到10
noise = np.random.normal(0, 2, size=n_samples) # 添加随机噪声
y = a * x + b + noise # 因变量
# 将数据转化为NumPy数组
X = x[:, np.newaxis] # 转置为列向量,适合矩阵运算
y = y.reshape(-1, 1) # 同理转置为列向量
# 定义线性回归的拟合函数 (利用向量化)
def linear_regression(X, y):
X_transpose = X.T
theta = np.linalg.inv(X_transpose @ X) @ X_transpose @ y # 使用最小二乘法求解theta
return theta
# 求得线性回归参数
theta_hat = linear_regression(X, y)
# 打印参数
print(f"Estimated parameters: a = {theta_hat[0]:.2f}, b = {theta_hat[1]:.2f}")
# 可视化数据及回归线
import matplotlib.pyplot as plt
plt.scatter(x, y)
plt.plot(x, X @ theta_hat, color='r', label="Linear Regression")
plt.legend()
plt.show()
阅读全文