Zy= β1Z*1 + β2Z*2 + … + βkZ*k
多元线性方程,一般采用矩阵来表示,因此在求多元线性方程的最小化函数时,就需要对矩阵进行求导,这个求导过程,NG已经给出了,如下:
最终求出来的公式如下:
这个公式也叫正规方程,它需要求解矩阵,所以数据比较多时,就比较慢。下面来给出一个计算简单线性回归的矩阵求法,假如数据:
(1,6), (2,5),(3,7)和(4, 10)
计算代码如下:
import numpy as npimport matplotlib.pyplot as pltinput = np.array([ [1, 6], [2, 5], [3, 7], [4, 10]])m = len(input)X = np.array([np.ones(m), input[:, 0]]).Ty = np.array(input[:, 1]).reshape(-1, 1)betaHat = np.linalg.inv(X.T.dot(X)).dot(X.T).dot(y)PRint(betaHat)plt.figure(1)xx = np.linspace(0, 5, 2)yy = np.array(betaHat[0] + betaHat[1] * xx)plt.plot(xx, yy.T, color='b')plt.scatter(input[:, 0], input[:, 1], color='r')plt.show()输出结果:
可见矩阵计算方法比较快,不需要迭代,一步就可以计算出来。
1. C++标准模板库从入门到精通
http://edu.csdn.net/course/detail/3324
2.跟老菜鸟学C++
http://edu.csdn.net/course/detail/29013. 跟老菜鸟学python
http://edu.csdn.net/course/detail/25924. 在VC2015里学会使用tinyxml库
http://edu.csdn.net/course/detail/25905. 在Windows下SVN的版本管理与实战
http://edu.csdn.net/course/detail/2579
6.Visual Studio 2015开发C++程序的基本使用
http://edu.csdn.net/course/detail/2570
7.在VC2015里使用protobuf协议
http://edu.csdn.net/course/detail/25828.在VC2015里学会使用MySQL数据库
http://edu.csdn.net/course/detail/2672
新闻热点
疑难解答