失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > python实现最小二乘法求解线性回归问题

python实现最小二乘法求解线性回归问题

时间:2023-06-18 16:47:29

相关推荐

python实现最小二乘法求解线性回归问题

本次实验样本集(x)及标签列表如下:

'''para X:矩阵,样本特征矩阵Para Y:矩阵,标签向量return:矩阵,回归系数'''times = [30,45,60,75,90,105] #测量时间列表(样本)gravity = [150,141,130,119,108,100]#重力数据列表(标签)import numpy as npdef least_square(X,Y): #定义最小二乘拟合函数W=(X*X.T).I*X*Y.T #python提供了方便的转置与逆运算(.T/.I)return W X=np.mat([[1,1,1,1,1,1],times]) #测量时间矩阵(样本)Y=np.mat(gravity) #重力数据矩阵(标签)W=least_square(X,Y) import matplotlib.pyplot as plt #导入画图库函数plt.rcParams['font.sans-serif']=['SimHei']#画图准备plt.rcParams['axes.unicode_minus']=Falseplt.scatter(times,gravity,color="green",label="重力值实际值",linewidth=2)plt.plot(times,gravity,linewidth=1) #画实际重力测量数据x1=np.linspace(20,110,5) #拟合直线x范围y1=W[1,0]*x1+W[0,0] #拟合直线纵坐标取值plt.plot(x1,y1,color="red",label="拟合直线",linewidth=2,linestyle=':')plt.legend(loc='lower right') #画拟合直线plt.show() #展示图像new_times=[120,140,180] new_times=(np.mat(new_times)).T #需要预测的时间(新样本)forecast_gravity=W[1,0]*new_times+W[0,0] #预测结果(预测值即标签)print(forecast_gravity) #打印loss_value1=0for i in range(6):loss_value1 +=(W[1,0]*times[i]+W[0,0]-gravity[i])**2print(W[1,0]*times[i]+W[0,0])print(gravity[i]) #输出拟合数据与实际数据print(loss_value1) #计算损失值

如果觉得《python实现最小二乘法求解线性回归问题》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。