import numpy as np
import matplotlib.pyplot as plt
def least_square(X,Y):
'''
最小二乘法
:param X:矩阵,样本特征矩阵
:param Y: 矩阵,标签向量
:return: 矩阵,回归系数
'''
W = (X * X.T).I * X * Y.T#教材公式
return W
temperatures = [15,20,25,30,35,40]
flowers = [136,140,155,160,157,175]
X = np.mat([[1,1,1,1,1,1],temperatures])
print("X",X)
Y = np.mat(flowers)
print("Y",Y)
W =least_square(X,Y)
print("W",W)
plt.rcParams['font.sans-serif']=['SimHei'] #显示中文标签
plt.rcParams['axes.unicode_minus']=False ##运行配置参数总的轴(axes)正常显示正负号(minus)
plt.scatter(temperatures, flowers, color="green", label="花朵数量", linewidth=2)#散点图
plt.plot(temperatures,flowers,linewidth=1)#折线图
x1=np.linspace(15, 40, 100)#来创建等差数列,x横坐标
y1 = W[1,0]*x1 + W[0,0] #创建x对应的纵坐标,W中存放权重和偏置,
plt.plot(x1, y1, color="red", label="拟合直线", linewidth=2,linestyle=':')
plt.legend(loc='lower right')#调整图例位置,右下
plt.show()
new_tempera = [18,22,33]
new_tempera = (np.mat(new_tempera)).T#矩阵转置
pro_num = W[1,0]*new_tempera+W[0,0]
print("pro_num",pro_num)#回归拟合
运行图像
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)