python-线性回归NumPy和Matplotlib库

import matplotlib.pyplot as plt
from scipy import stats

x = [5,7,8,7,2,17,2,9,4,11,12,9,6]
y = [99,86,87,88,111,86,103,87,94,78,77,85,86]

slope, intercept, r, p, std_err = stats.linregress(x, y)

def myfunc(x):
  return slope * x + intercept

mymodel = list(map(myfunc, x))

plt.scatter(x, y)
plt.plot(x, mymodel)
plt.show()

这段代码使用了Matplotlib和SciPy库来进行简单的线性回归分析,并绘制出数据点和回归线的散点图。下面是对每行代码的解释:

  1. import matplotlib.pyplot as plt:导入Matplotlib库中的pyplot模块,并将其命名为plt,以便在代码中使用。

  2. from scipy import stats:从SciPy库中导入stats模块,用于进行统计分析。

  3. x = [5,7,8,7,2,17,2,9,4,11,12,9,6]:定义一个一维数组x,表示自变量的取值。

  4. y = [99,86,87,88,111,86,103,87,94,78,77,85,86]:定义一个一维数组y,表示因变量的取值。

  5. slope, intercept, r, p, std_err = stats.linregress(x, y):使用stats模块中的linregress函数进行线性回归分析,得到回归方程的斜率(slope)、截距(intercept)、相关系数(r)、p值(p)和标准误差(std_err)。

  6. def myfunc(x)::定义一个名为myfunc的函数,接受一个参数x,用于计算回归线上的y值。

  7. return slope * x + intercept:在myfunc函数中,返回根据回归方程计算的y值。

  8. mymodel = list(map(myfunc, x)):使用map函数将自变量数组x中的每个元素传入myfunc函数,并将结果存储在mymodel中,得到回归线上的所有y值。

  9. plt.scatter(x, y):使用Matplotlib的scatter函数绘制数据点的散点图。

  10. plt.plot(x, mymodel):使用Matplotlib的plot函数绘制回归线。

  11. plt.show():显示绘制的散点图和回归线。

通过这段代码,我们可以对给定的x和y数据进行线性回归分析,并绘制出数据点和回归线的散点图,从而观察数据的线性趋势和相关性。

  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个使用numpymatplotlib、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的向量作为截距。最后,计算最小二乘解,得到回归系数,并绘制回归直线。 上述代码仅仅是一个示例,您可以根据自己的需要进行修改和扩展。同时,需要注意的是,多元线性回归需要满足一些前提条件,如线性关系、正态分布、同方差性等,您需要在进行回归分析之前进行检验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值