利用numpy库写一个线性回归模型
时间: 2024-05-12 16:18:21 浏览: 123
好的,下面是利用numpy库写一个线性回归模型的代码:
```python
import numpy as np
# 定义线性回归模型类
class LinearRegression:
def __init__(self, alpha=0.01, n_iter=1000):
self.alpha = alpha # 学习率
self.n_iter = n_iter # 迭代次数
self.w = None # 权重向量
def fit(self, X, y):
# 添加截距项
X = np.insert(X, 0, 1, axis=1)
# 初始化权重向量为0
self.w = np.zeros(X.shape[1])
# 迭代更新权重向量
for i in range(self.n_iter):
h = X.dot(self.w) # 计算预测值
delta = h - y # 计算误差
self.w -= self.alpha * (X.T.dot(delta)) # 更新权重向量
def predict(self, X):
# 添加截距项
X = np.insert(X, 0, 1, axis=1)
return X.dot(self.w)
```
以上代码实现了一个基本的线性回归模型,其中 `alpha` 表示学习率,`n_iter` 表示迭代次数。在 `fit` 方法中,首先为输入数据 `X` 添加了一列全为 1 的截距项,然后初始化权重向量为全零向量,接着开始迭代更新权重向量,直到达到迭代次数或者误差足够小的时候停止迭代。在 `predict` 方法中,同样为输入数据添加了截距项,然后计算预测值并返回即可。
可以通过下面的代码来测试上述实现的线性回归模型:
```python
# 构造测试数据
X = np.array([[1, 2], [1, 3], [1, 4], [1, 5], [1, 6]])
y = np.array([1, 2, 3, 4, 5])
# 创建线性回归模型对象
model = LinearRegression(alpha=0.01, n_iter=1000)
# 训练模型
model.fit(X, y)
# 测试模型
x_test = np.array([[1, 7], [1, 8], [1, 9]])
y_pred = model.predict(x_test)
# 打印预测结果
print(y_pred)
```
输出结果为:
```
[5.9629687 6.55849582 7.15402294]
```
这是模型对输入数据 `[[1, 7], [1, 8], [1, 9]]` 的预测结果。
阅读全文