不使用sklearn库,使用最小二乘法实现多元线性回归python
时间: 2023-06-13 20:06:51 浏览: 158
要使用最小二乘法实现多元线性回归,需要以下步骤:
1. 导入必要的库:
```python
import numpy as np
import matplotlib.pyplot as plt
```
2. 定义数据:
```python
x = np.array([[1, 2], [2, 3], [3, 4], [4, 5], [5, 6]])
y = np.array([3, 4, 5, 6, 7])
```
其中,x为输入特征矩阵,每一行代表一个样本,每一列代表一个特征;y为输出变量,代表每个样本对应的输出。
3. 计算参数:
```python
x_t = np.transpose(x)
x_t_x = np.dot(x_t, x)
x_t_x_inv = np.linalg.inv(x_t_x)
x_t_y = np.dot(x_t, y)
w = np.dot(x_t_x_inv, x_t_y)
```
其中,x_t为x的转置,x_t_x为x的转置乘以x,x_t_x_inv为x_t_x的逆矩阵,x_t_y为x的转置乘以y,w为参数矩阵。
4. 预测结果:
```python
y_pred = np.dot(x, w)
```
其中,y_pred为预测的输出值。
5. 可视化:
```python
plt.scatter(y, y_pred)
plt.plot([min(y), max(y)], [min(y), max(y)], '--k')
plt.xlabel('True Values')
plt.ylabel('Predictions')
plt.show()
```
其中,plt.scatter用于绘制真实值与预测值的散点图,plt.plot用于绘制一条直线表示真实值与预测值的一致性,plt.xlabel和plt.ylabel用于设置坐标轴标签,plt.show用于显示图像。
完整代码如下:
```python
import numpy as np
import matplotlib.pyplot as plt
x = np.array([[1, 2], [2, 3], [3, 4], [4, 5], [5, 6]])
y = np.array([3, 4, 5, 6, 7])
x_t = np.transpose(x)
x_t_x = np.dot(x_t, x)
x_t_x_inv = np.linalg.inv(x_t_x)
x_t_y = np.dot(x_t, y)
w = np.dot(x_t_x_inv, x_t_y)
y_pred = np.dot(x, w)
plt.scatter(y, y_pred)
plt.plot([min(y), max(y)], [min(y), max(y)], '--k')
plt.xlabel('True Values')
plt.ylabel('Predictions')
plt.show()
```
阅读全文