实验要求: 1、使用python实现线性回归,在数据集eg2.1中建立建立y关于x 1 、x 2 、x 3 和x 4 的线性回归方程,同时利用RSS、TSS、ESS计算拟合优度(判定系数)。可以考虑采用梯度下降的方法完成训练,也可以直接使用闭合解的方式。
时间: 2024-09-25 15:12:26 浏览: 48
实验要求是在Python中通过编程实现线性回归模型。首先,你需要导入必要的库,如`numpy`和`matplotlib`等。对于eg2.1数据集,假设已经读取并存储在变量`X`和`y`中,其中`X`是一个包含特征(x1, x2, x3, x4)的二维数组,`y`是目标变量。
1. **线性回归模型**:线性回归的基本形式是 `y = wx + b`,其中w是权重向量,b是偏置。你可以创建一个简单的函数来表示这个模型:
```python
import numpy as np
def linear_regression(X, y, w=None, b=0):
if w is None:
# 如果w没给定,使用梯度下降法求解
w = np.linalg.inv(X.T @ X) @ X.T @ y
else:
# 使用已知的w进行预测
y_pred = X @ w + b
return w, b, y_pred
```
2. **计算残差平方和(RSS)**:这是预测值与实际值之差的平方的总和。对于所有样本`(yi, yi_pred)`:
```python
def rss(y, y_pred):
return np.sum((y - y_pred) ** 2)
```
3. **计算总平方误差(TSS)**:这是因变量y的实际均值与每个观测值之差的平方的总和:
```python
def tss(y):
mean_y = np.mean(y)
return np.sum((y - mean_y) ** 2)
```
4. **计算解释平方和(ESS)**:TSS减去RSS,即模型能够解释的变异性:
```python
def ess(tss, rss):
return tss - rss
```
5. **判定系数(R^2 or Coefficient of Determination)**:R^2是一个介于0到1之间的统计量,表示模型解释了多少变异:
```python
def r_squared(rss, tss):
return 1 - rss / tss
```
最后,你可以使用上述函数来计算拟合优度,并可视化结果。别忘了处理异常情况和进行数据预处理,如果需要的话。