文章目录

  • 解释及实现
  • 笔记
  • 伪逆在最简单的线性回归中的应用

解释及实现

记XXX的伪逆为pinv(X)pinv(X)pinv(X),则有
pinv(X)=(XTX)−1XTpinv(X)=(X^TX)^{-1}X^Tpinv(X)=(XTX)−1XT,容易发现pinv(X)X=Ipinv(X)X=Ipinv(X)X=I
在numpy中可以使用numpy.linalg.pinv求伪逆。
例子:1

>>> a = np.random.randn(9, 6)
>>> B = np.linalg.pinv(a)
>>> np.allclose(a, np.dot(a, np.dot(B, a)))
True
>>> np.allclose(B, np.dot(B, np.dot(a, B)))
True
>>> np.allclose(np.transpose(a), np.dot(B, np.dot(a, np.transpose(a))))
True

numpy.linalg.pinv只是numpy众多线性代数函数中的一个,了解更多numpy的线性代数方面的函数,可以看这个链接。

笔记

矩阵 AAA 的伪逆矩阵,记为A+A^+A+ , 定义为:解决最小二乘问题的矩阵。例如, Ax=bAx=bAx=b 的最小二乘解 x^=A+b\hat x = A^+ bx^=A+b。

可以证明,如果 Q1ΣQ2TQ_1 \Sigma Q_2^TQ1​ΣQ2T​ 是 AAA 的奇异值分解,那么 A+=Q2Σ+Q1TA^+=Q_2 \Sigma^+ Q_1^TA+=Q2​Σ+Q1T​,其中, Q1,2Q_{1,2}Q1,2​ 是正交矩阵, Σ\SigmaΣ 是一个由 AAA 的奇异值构成的对角矩阵,Σ+\Sigma^+Σ+ 是由 A 的奇异值的倒数组成的对角矩阵。

伪逆在最简单的线性回归中的应用

最小二乘回归是最简单的线性回归,下边就用伪逆来计算一下最小二乘回归。并使用了sklearn中的最小二乘回归做对比,比较两者效率的高下。

import numpy as np
n = 9999999
x = np.arange(n)
np.random.seed(123)
y = x + 3 + np.random.standard_normal(n)# 使用伪逆来计算
import time as t
tic = t.time()
temp = np.ones(n).reshape(-1, 1)
x_aug = np.c_[temp, x]
pinv_x_aug = np.linalg.pinv(x_aug)  # 这个叫伪逆
b1, k1 = np.dot(pinv_x_aug, y)  # 第一个的是截距,第二个是斜率
toc = t.time()
cost_pinv = toc-tic# 使用sklearn的线性模型来计算
from sklearn import linear_model
tic = t.time()
reg = linear_model.LinearRegression()
reg.fit(x.reshape(-1, 1), y.reshape(-1, 1))
k2 = reg.coef_
b2 = reg.intercept_
toc = t.time()
cost_sklearn = toc-tic

计算结果截图如下

从结果中看出,两种方法计算得到的斜率和截距都是一样的。但是:

  1. sklearn的耗时大概是使用伪逆方法的一半!

  2. 可见sklearn还是厉害啊!没事就不要自己造轮子了。


  1. SciPy官方:numpy.linalg.pinv ↩︎

python之numpy之伪逆numpy.linalg.pinv相关推荐

  1. 学习笔记DL007:Moore-Penrose伪逆,迹运算,行列式,主成分分析PCA

    2019独角兽企业重金招聘Python工程师标准>>> Moore-Penrose伪逆(pseudoinverse). 非方矩阵,逆矩阵没有定义.矩阵A的左逆B求解线性方程Ax=y. ...

  2. python numpy逆_numpy.linalg.inv返回奇异矩阵的逆函数 - python

    下面的矩阵是单数,并且AFAIK尝试将其求反应导致 numpy.linalg.linalg.LinAlgError: Singular matrix 但是我得到了一些输出矩阵.请注意,输出矩阵是无意义 ...

  3. numpy求矩阵的逆和伪逆

    我们可以使用np.linalg中的inv和pinv函数来求解矩阵的逆/伪逆. np.linalg.inv 对于可逆方阵M,我们使用下面这行代码求逆: np.linalg.inv(J(theta)) 示 ...

  4. matlab求最小范数解,python中计算最小范数解或伪逆解最精确的方法是什么?

    我的目标是解决:Kc=y 对于伪逆(即最小范数解): ^{pr2}$ 这样模型(希望)是高次多项式模型f(x) = sum_i c_i x^i.我特别感兴趣的是我们有更多的多项式特征比数据(少方程太多 ...

  5. numpy将所有数据变为0和1_《利用python进行数据分析》1.0——Numpy库

    目录: Tab 键自动完成 %run命令 "Ctri-C" 中断正在执行的代码 忘记输入和输出文本怎么办 创建数组 zero 和ones arange(),生成一定长度的数量 dt ...

  6. Python深度学习基予tensorflow(Numpy)

    NumPy常用操作 NumPy提供了两种基本对象:ndarray,ufunc 生成ndarray 1.从已有数据中创建 (1)将列表转换成ndarray import numpy as np list ...

  7. python 多项式求系数_在Python中用于计算“多项式系数”的numpy / scipy函数

    是否有任何 python函数(可能来自numpy或scipy)计算扩展中x ** r的系数(1 xx ** 2 x ** 3 - x **(k-1))** n ,其中k> = 1,n> = ...

  8. python编写自定义函数计算一维numpy数组中与指定目标数值最接近(距离最近)的数值(find closest value in numpy array to a certain value)

    python编写自定义函数计算一维numpy数组中与指定目标数值最接近(距离最近)的数值(find closest value in numpy array to a certain value) 目 ...

  9. python使用np.argsort对一维numpy概率值数据排序获取倒序索引、获取的top索引(例如top2、top5、top10)索引二维numpy数组中对应的原始数据:原始数据概率最大的头部数据

    python使用np.argsort对一维numpy概率值数据排序获取倒序索引.获取的top索引(例如top2.top5.top10)索引二维numpy数组中对应的原始数据:原始数据概率最大的头部数据 ...

最新文章

  1. 解散了地图接口讨论群
  2. 2019春季学期期末总结
  3. VS2019 WPF制作OTA上位机(一)新建工程
  4. mysql重要的监控参数_zabbix3.0.2使用percona mysql插件来监控mysql5.7   以及必须监控的性能参数...
  5. 剑指offer(C++)-JZ78:把二叉树打印成多行(数据结构-树)
  6. mysql 主从复制日志_mysql主从复制基于日志复制
  7. Win7如何硬盘安装Ubuntu实现双系统
  8. .p7b证书转成iis使用的.pfx证书
  9. 区域生长影像分割算法
  10. 几种经典病毒动力学模型【基于matlab的动力学模型学习笔记_3】
  11. 网易邮箱显示服务器返回错误,企业退信的常见问题?
  12. 微信公众号接入百度机器人
  13. iPhone测试软件偷开照相机,iphone小软件让小偷现形 自动拍下照片发送邮箱
  14. 基于京东云GPU云主机搭建TensorFlow深度学习环境
  15. Python骚操作,让图片上的人物动起来!
  16. mysql(数据库)初级操作
  17. 如何将图片识别为可编辑的Word文件
  18. 表观修饰的“当红炸子鸡” - 组蛋白乳酸化
  19. 1034. 边框着色
  20. Caliburn.Micro学习笔记目录——Zhouyongh

热门文章

  1. 华为服务器光纤卡wwn信息,HP-UX下如何获取HBA光纤卡的WWN号?
  2. 计算机网络第七版谢希仁著课后习题答案
  3. A Novel Cascade Binary Tagging Framework for Relational Triple Extraction
  4. Hyperledger Indy项目(开源去中心化身份平台)、去中心化身份(DID)、分布式数字身份项目
  5. delphi indy_使用Delphi和Indy发送电子邮件(和附件)
  6. 比较两个时间的前后关系
  7. zanUI组件的使用
  8. c#集成程控电源SCPI 命令( 德国EA)
  9. js 判断安卓,ios,微信浏览器
  10. 高中数学基础02:反函数与基本初等函数