python之numpy之伪逆numpy.linalg.pinv

article/2024/12/25 9:31:24

文章目录

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

解释及实现

X X X的伪逆为 p i n v ( X ) pinv(X) pinv(X),则有
p i n v ( X ) = ( X T X ) − 1 X T pinv(X)=(X^TX)^{-1}X^T pinv(X)=(XTX)1XT,容易发现 p i n v ( X ) X = I pinv(X)X=I pinv(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的线性代数方面的函数,可以看这个链接。

笔记

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

可以证明,如果 Q 1 Σ Q 2 T Q_1 \Sigma Q_2^T Q1ΣQ2T A A A 的奇异值分解,那么 A + = Q 2 Σ + Q 1 T A^+=Q_2 \Sigma^+ Q_1^T A+=Q2Σ+Q1T,其中, Q 1 , 2 Q_{1,2} Q1,2 是正交矩阵, Σ \Sigma Σ 是一个由 A A A 的奇异值构成的对角矩阵, Σ + \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 ↩︎


http://chatgpt.dhexx.cn/article/ldKpO0Gl.shtml

相关文章

【C++】Eigen介绍与使用 —— 4

一、Eigen介绍 Eigen是可以用来进行线性代数、矩阵、向量操作等运算的C库,它里面包含了很多算法。它的License是MPL2。它支持多平台。Eigen采用源码的方式提供给用户使用,在使用时只需要包含Eigen的头文件即可进行使用。之所以采用这种方式,…

图像增强(1-灰度级变换)—内涵MATLAB源码

起篇三连问: 第一问:何为数字图像的增强? 个人理解,就是通过对图像进行平滑去噪、改变灰度级或者增强边缘,将我们想要的某些图像特征更明显的显现出来。这就是图像的增强,该过程重在对比度的拉伸。 第二问…

(数字图像处理MATLAB+Python)第五章图像增强-第一节:图像增强概述和基于灰度级变换的图像增强

文章目录 一:图像增强概述二:基于灰度级变换的图像增强(1)线性灰度级变换A:基本线性灰度级变换B:分段线性灰度级变换①:定义②:截取式灰度变换③:窗切片 (2&a…

图像处理:灰度(级)和分辨率

1、像素点 ​像素点是最小的图像单元,一张图片由好多的像素点组成。如下图 可以看到上述图片尺寸是500 * 338 的,表示图片是由一个500 * 338的像素点矩阵构成的,这张图片的宽度是500个像素点的长度,高度是338个像素点的长度&…

数字图像处理——灰度级分层

灰度级分层的两种基本形式如下: 一:将感兴趣的范围内的灰度值显示为一个值,而其他灰度值显示为另一个值 二:将感兴趣的范围内的灰度值变亮或变暗,而其他灰度值保持不变 Python实现过程如下: 使用的图像…

灰度级形态学 - 顶帽变换和底帽变换

目录 1. 介绍 2. 代码实现 1. 介绍 顶帽变换和底帽变换就是图像的加减和开闭运算的结合 顶帽变换的公式为:原图 - 原图的开运算 这里结合开运算的几何图形解释来介绍顶帽变换。 因为开运算是结构元从下往上推动的过程,所以会删除图像灰度值相对周围高…

图像处理基础——灰度级形态学

文章目录 简介膨胀 腐蚀腐蚀膨胀 开运算 闭运算一些基本的灰度级形态学算法形态学平滑形态学梯度顶帽变换 底帽变换 灰度级形态学重建 简介 形态学只适用于Region操作 或者是二值化后的图片 需要延伸到灰度形态学才能广泛应用 拓展到灰度级形态学后 结构元的表达形式可以大致分…

灰度图像分辨率变换(灰度级)

目的:(1)对一帧8bits 128x128的灰度图像处理为1bits和3bits的128x128灰度图像。 (2)处理为8bits 64x64和32x32的灰度图像。 一、基本原理 一幅图像的x和y坐标及幅度可能都是连续的。为了把它转换为数字形式&#x…

matlab-图形采样及灰度级转换

目录 一、图像采样 1、实验内容 2、采样原理 3、实验程序 4.实验结果与分析 5.思考题 二、图像类型转换 1、实验内容 2.实验原理 3、程序 4.实验结果与分析 5. 思考题 一、图像采样 1、实验内容 试对任意一幅图像分…

灰度级形态学

灰度级形态学 灰度级形态学知识点:1、灰度化和二值化2、灰度图像是几通道图像3、灰度图和二值图的区别:4、像素点灰度形态学梯度 形态学只适用于区域操作 或者是二值化后的图片. 灰度级形态学知识点: 在图像处理中,用RGB三个分量&…

灰度、灰度级、分辨率、像素值相关概念

灰度、灰度级、分辨率、像素值; 2017年09月18日 20:01:04 以梦为马_不负韶华 阅读数:14346 版权声明:版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Strive_0902/article/details/78023…

转换为不同灰度级图像

将256级灰度图像转换为64级灰度图像、32级灰度图像等。 matlab代码: I imread(cameraman.tif); [m,n]size(I); Jzeros(m,n); for i1:mfor j1:nJ(i,j)floor(I(i,j)/32);end end Kuint8(J); subplot(131) imshow(I);title(原图);colorbar subplot(132) imshow(K,[0,7]);title(…

OpenCV黑白图像增强——灰度级切片

前言 在OpenCV中,在Mat中,表达图像的值是0到255,0为黑色,255为白色,而已灰度级切片对灰度图像做二值映射讲处理,给一个阈值,按这个阈值去分层,大于这个阈的赋一个值,小于…

数字图像处理学习笔记(二):图像灰度级的增加、减少

实验截图: 图像灰度级阶梯 实验代码: img1 imread(erciyuan.jpg); img2 rgb2gray(img1); for i0:7 img (uint8(img2/(2^i)))*(2^i); %灰度级逐渐递减的过程 subplot(2,4,i1), imshow(img,[]); title( [ ,num2str(2^(8-i)),级灰度图像]); %设置…

灰度级形态学 - 灰度膨胀和灰度腐蚀

目录 1. 介绍 2. code 1. 介绍 灰度级形态学将形态学在二值图像的处理中扩展到灰度图像 灰度腐蚀:得到kernel 处理子区域的最小值 因此:灰度腐蚀后的图像整体偏暗,并且亮特征减少 灰度膨胀:得到kernel 处理子区域的最大值 同…

图像处理名词解释之灰度、灰度级、分辨率、像素值总结

​ 1、像素点 ​像素点是最小的图像单元,一张图片由好多的像素点组成。如下图 可以看到上述图片尺寸是500 * 338 的,表示图片是由一个500 * 338的像素点矩阵构成的,这张图片的宽度是500个像素点的长度,高度是338个像素点的长度&am…

不同灰度级的图像

学习DIP第0天 更多细节参考:http://face2ai.com/DIP-1-1-不同灰度级的图像/ 结论一:对于细节较多的图像,当图像大小(N)不变的情况下,灰度级别对于感官质量相对独立; 解释:如果图像…

【OpenCV 例程200篇】41. 图像的灰度变换(灰度级分层)

『youcans 的 OpenCV 例程200篇 - 总目录』 【OpenCV 例程200篇】41. 图像的灰度变换(灰度级分层) 线性灰度变换将原始图像灰度值的动态范围按线性关系扩展到指定范围或整个动态范围。 分段线性变换函数可以增强图像各部分的反差,增强感兴趣…

图像灰度级压缩

遥感图像灰度级压缩 在使用灰度共生矩阵计算图像纹理的时候,考虑到计算效率,需要对图像先进行灰度级压缩的操作,比较简单的方法是直接除以前后灰度级的倍数,结果发现这样处理效果不好,原因是影像的直方图分布可能极其不均匀,导致压缩后的图像像素值都集中在最小值周围。…

RGB图像之灰度级和通道的理解(矩阵含义等)

一言以敝之:图像有R,G,B三个二维矩阵,矩阵数值在0-255之间,数值大小表示允许通过色彩多少,也称为灰度值,灰度越大,相应色彩越深(此处为光,故R,G&a…