栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python——基于矩阵计算的线性回归分析方程中系数的估计

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python——基于矩阵计算的线性回归分析方程中系数的估计

一、问题描述

回归(regression)是指⼀类为⼀个或多个⾃变量与因变量之间关系建模的⽅法。在⾃然科学和社会科学领域回归经常⽤来表⽰输⼊和输出之间的关系。

本文以y = 2x + 1的数据进行拟合为例,给出了基于矩阵运算来估计系数的方法及python实现。

二、数学推导

 

 注意:

对于矩阵A只是列满,不是方阵(一般情况),则(A.T*A)'*A.T称为矩阵A的广义逆(伪逆)

三 、Python程序

1.绘制散点图

import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
trainX=np.arange(25)
trainY=2*trainX+1+np.random.randn(25)
plt.scatter(trainX, trainY,color='red',marker='+')

结果如下图所示: 

 2.数据拟合

X=np.ones((25,2))
X[:,0]=trainX
Y=trainY.T
b=np.dot(X.T,X)
b1=np.linalg.pinv(b)
b3=np.dot(b1,X.T)
b5=np.dot(b3,Y)

得到回归系数为:k = b5(0) = 1.98233782, b = b5(1) = 1.167998

3.完整的代码

import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
trainX=np.arange(25)
trainY=2*trainX+1+np.random.randn(25)
X=np.ones((25,2))
X[:,0]=trainX
Y=trainY.T
b=np.dot(X.T,X)
b1=np.linalg.pinv(b)
b3=np.dot(b1,X.T)
b5=np.dot(b3,Y)
Y1=b5[0]*trainX+b5[1]
fig,ax = plt.subplots()
ax.scatter(trainX, trainY,color='red',marker='+')
ax.plot(trainX, Y1,color='blue')

结果如下图所示: 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1029886.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号