numpy基础(part15)--线性模型

Posted GoatGui

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了numpy基础(part15)--线性模型相关的知识,希望对你有一定的参考价值。

学习笔记,这个笔记以例子为主。
开发工具:Spyder


线性模型

若有一组观测值:

[x11, x12, y1], [x21, x22, y2], [x31, x32, y3], 
...
[xn1, xn2, yn]

则总体回归模型为:
numpy基础(part15)--线性模型_python

列成矩阵形式:

numpy基础(part15)--线性模型_数据分析_02

在给出总体中的一组样本,则估计的样本回归函数为:
numpy基础(part15)--线性模型_点集_03

若要求出偏回归系数????1, ????2,和截距项 ????0,则有相关函数:

B = np.linalg.lstsq(X, Y)
b1 = B[0][0]
b2 = B[0][1]
b0 = B[0][2]

若有k个自变量,则相关函数的写法以此类推。

举个例子(对模拟的数据进行多元回归分析)

代码:

import numpy as np

X = np.array([range(1, 11),
np.random.randint(1, 20, 10),
np.ones(10)]).T

Y = 2*X[:, 0] - X[:, 1] + 5*X[:, 2] + \\
np.array(np.random.normal(0, 1, 10))

B = np.linalg.lstsq(X, Y)

print(B)
b1 = B[0][0]
b2 = B[0][1]
b0 = B[0][2]
print(b1:, b1, b2:, b2, b0:, b0)

结果:

(array([ 1.91143292, -1.13716838,  6.97656854]), array([ 5.11734472]), 3, array([ 47.9682451 ,  11.92711516,   0.88959877]))
b1: 1.91143292471 b2: -1.13716837881 b0: 6.97656854129

则由该样本估计的回归方程为:
numpy基础(part15)--线性模型_线性模型_04

若有点集[[1, 2], [3, 4], [5, 6]]则带入回归方程中,求出预测值:

import numpy as np

X = np.array([range(1, 11),
np.random.randint(1, 20, 10),
np.ones(10)]).T

Y = 2*X[:, 0] - X[:, 1] + 5*X[:, 2] + \\
np.array(np.random.normal(0, 1, 10))

B = np.linalg.lstsq(X, Y)

Xpre = np.array([[1, 2, 1], [3, 4, 1], [5, 6, 1]])
Ypre = Xpre.dot(B[0])
print(Ypre)

结果:

[ 4.00497056  6.18824332  8.37151608]


以上是关于numpy基础(part15)--线性模型的主要内容,如果未能解决你的问题,请参考以下文章

机器学习基础——推导线性回归公式

DataStructure part1 基础概念

python pytorch numpy DNN 线性回归模型

线性模型: numpy.ndarray 大小已更改,可能表示二进制不兼容。预期来自 C 标头的 88,从 PyObject 得到 80”

Part I/ Chapter 2 线性代数基础1

numpy移动平均线 布林带 线性模型 趋势线