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

知识的领域是无限的,我们的学习也是无限期的。这篇文章主要讲述numpy基础(part15)--线性模型相关的知识,希望能为你提供帮助。
学习笔记,这个笔记以例子为主。
开发工具:Spyder
线性模型若有一组观测值:

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

则总体回归模型为:

列成矩阵形式:
【numpy基础(part15)--线性模型】
在给出总体中的一组样本,则估计的样本回归函数为:

若要求出偏回归系数????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

则由该样本估计的回归方程为:

若有点集[[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.004970566.188243328.37151608]




    推荐阅读