1 #coding=utf-8 2 from numpy import * 3 import numpy as np 4 import matplotlib.pyplot as plt 5 6 plt.close() 7 fig=plt.figure() 8 plt.grid(True) 9 plt.axis([0,1,0,5]) 10 #plt.title("") 11 # 每个小的方括号是一列 12 point=[[0,0.9],[0.2,1.9],[0.4,2.8],[0.6,3.3],[0.8,4.2]] 13 plt.xlabel("X") 14 plt.ylabel("Y") 15 Xsum = 0.0; 16 Isum = 0.0; 17 Ysum = 0.0; 18 X2sum = 0.0; 19 XYsum = 0.0; 20 21 22 23 for i in range(0,5): 24 25 xi=point[i][0]; 26 yi=point[i][1]; 27 plt.scatter(xi,yi,color="red"); 28 show_point = "["+ str(xi) +","+ str(yi) + "]"; 29 plt.text(xi,yi,show_point); 30 31 Xsum = Xsum+xi; 32 Isum = Isum+1; 33 Ysum = Ysum+yi; 34 X2sum = X2sum+xi**2; 35 XYsum = XYsum+xi*yi; 36 print Xsum; 37 print Isum; 38 print Ysum; 39 print X2sum; 40 print XYsum; 41 42 # 将矩阵运算化为 mat1 * mat3 = mat2 43 # _mat1 设为 mat1 的逆矩阵 44 # 则有 mat3 = _mat1 * mat2 45 # 每个小的方括号是一行 46 m1=[[Isum,Xsum],[Xsum, X2sum]]; 47 mat1 = np.matrix(m1); 48 m2=[[Ysum], [XYsum]]; 49 mat2 = np.matrix(m2); 50 _mat1 =mat1.getI(); 51 mat3 = _mat1*mat2 52 53 # 将矩阵转化为list来提取数据 54 # y = a+bx 55 m3=mat3.tolist(); 56 a = m3[0][0]; 57 b = m3[1][0]; 58 59 # 绘制回归线 60 x = np.linspace(0,1) 61 y = a + b*x; 62 plt.plot(x,y) 63 show_line = "y="+str(a)+"+"+str(b)+"x"; 64 plt.text(0.1,4,show_line,); 65 plt.show()
来源:http://www.cnblogs.com/the-wang/p/8021519.html