np.linalg.lstsq的数学原理

import numpy as np
import pandas as pd

x = np.array([0, 1, 2, 3])
y = np.array([-1, 0.2, 0.9, 2.1])
A = np.vstack([x, np.ones(len(x))]).T
print(A)
print(y)
m, c = np.linalg.lstsq(A, y, rcond = -1)[0]
print(m, c)
import matplotlib.pyplot as plt

plt.plot(x, y, 'o', label = 'Original data', markersize = 10)
plt.plot(x, m * x + c, 'r', label = 'Fitted line')
plt.legend()

运行结果如下:

[[0. 1.]
 [1. 1.]
 [2. 1.]
 [3. 1.]]
[-1.   0.2  0.9  2.1]
0.9999999999999999 -0.9499999999999997

我们在使用np.linalg.lstsq前,
会先将x在下与一行“1”矩阵合并,
然后使用的到转置得到的矩阵与y一同带入到np.linalg.lstsq函数中。
而这个预先处理的过程,事实上是为了迎合np处理矩阵的属性
矩阵乘法
等效于:
在这里插入图片描述
相当于后添加的1矩阵起到了工具人的作用,引入了C

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值