python中只用numpy,matplotlib,pandas,scipy做多元线性回归代码
时间: 2024-03-27 07:36:06 浏览: 98
python实现多元线性回归
好的,以下是一个使用numpy、matplotlib、pandas和scipy库进行多元线性回归的示例代码:
```python
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from scipy import stats
# 读取CSV文件
data = pd.read_csv('data.csv')
# 将数据转换为numpy数组
x = data.iloc[:, :-1].values
y = data.iloc[:, -1].values
# 计算相关系数矩阵
r = np.corrcoef(x.T)
# 计算特征值和特征向量
eig_vals, eig_vecs = np.linalg.eig(r)
# 取最大的k个特征值对应的特征向量组成投影矩阵
k = 2
proj_mat = eig_vecs[:, :k]
# 将数据降维到k维
x_pca = x.dot(proj_mat)
# 添加一列全为1的向量作为截距
x_pca = np.hstack((np.ones((x_pca.shape[0], 1)), x_pca))
# 计算最小二乘解
beta = np.linalg.inv(x_pca.T.dot(x_pca)).dot(x_pca.T).dot(y)
# 输出回归系数
print('回归系数为', beta)
# 绘制回归直线
plt.scatter(x_pca[:, 1], y)
x_line = np.linspace(np.min(x_pca[:, 1]), np.max(x_pca[:, 1]), 100)
y_line = beta[0] + beta[1] * x_line
plt.plot(x_line, y_line, color='red')
plt.show()
```
其中,data.csv文件格式如下所示:
```
x1,x2,y
1,2,5
2,3,7
3,4,9
4,5,11
5,6,13
```
代码首先读取CSV文件并将数据转换为numpy数组。然后,计算相关系数矩阵,并求出特征值和特征向量。接着,取最大的k个特征值对应的特征向量组成投影矩阵,将数据降维到k维,并添加一列全为1的向量作为截距。最后,计算最小二乘解,得到回归系数,并绘制回归直线。
上述代码仅仅是一个示例,您可以根据自己的需要进行修改和扩展。同时,需要注意的是,多元线性回归需要满足一些前提条件,如线性关系、正态分布、同方差性等,您需要在进行回归分析之前进行检验。
阅读全文