python语言建立一个线性回归模型 $$y = \sum_{i=1}^{10} w_i \times x_i + b $$ 其中, w和b来自于均匀分布(-10,10). 将该模型作为真实模型.随机生成1000个样本,作为训练数据. x来自于均匀分布(-1,1). 在训练数据中加入均值为0,标准差为0.05的高斯噪声
时间: 2023-05-12 20:03:30 浏览: 77
以下是 Python 代码,用于建立一个线性回归模型并训练它:
```python
import numpy as np
# 生成训练数据
np.random.seed(42)
X_train = np.random.uniform(-1, 1, size=(1000, 10))
y_train = np.sum(np.random.uniform(-10, 10, size=(10,)) * X_train, axis=1) + np.random.normal(0, 0.05, size=(1000,))
# 建立线性回归模型
class LinearRegression:
def __init__(self, lr=0.01, epochs=1000):
self.lr = lr
self.epochs = epochs
def fit(self, X, y):
self.w = np.random.uniform(-10, 10, size=(10,))
self.b = np.random.uniform(-10, 10)
for i in range(self.epochs):
y_pred = np.dot(X, self.w) + self.b
error = y_pred - y
self.w -= self.lr * np.dot(X.T, error) / X.shape[0]
self.b -= self.lr * np.mean(error)
def predict(self, X):
return np.dot(X, self.w) + self.b
# 训练模型
model = LinearRegression()
model.fit(X_train, y_train)
# 预测新数据
X_test = np.random.uniform(-1, 1, size=(10,))
y_pred = model.predict(X_test)
print(y_pred)
```
这段代码会生成一个线性回归模型,并用随机生成的训练数据进行训练。最后,它会用随机生成的测试数据进行预测,并输出预测结果。