随机梯度下降

该博客介绍了一段使用Python进行三维数据拟合和可视化的代码。通过随机生成的数据,运用matplotlib库和mpl_toolkits.mplot3d模块创建了3D坐标系,并展示了如何绘制3D曲面。在迭代过程中,博主调整了多项式函数的系数以拟合实际数据,最终实现了误差低于指定阈值的效果。
摘要由CSDN通过智能技术生成
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D   #绘制3D坐标的函数  
import numpy as np
import random
Q0=random.random()
Q1=random.random()
Q2=random.random()
a=0.01
E=1e-04

x=np.array([[2104,3],
           [1600,3],
           [2400,3],
           [1416,2],
           [3000,4]])
t=np.array([[400],
           [330],
           [269],
           [232],
           [540]])
e0=1
e1=1
e2=1
h=1

while e0>=E or e1>=E or e2>=E:
    b=random.randint(0,4) #随机选取0到4中的一组数据
    i=b
    h=Q0+Q1*x[i,0]+Q2*x[i,1]
    e0=h-t[i]
    e1=((h-t[i])+e0)*x[i,0]
    ey=h-t[i]+e0
    e2=((h-t[i])+e0+ey)*x[i,1]
else:
    Q0=Q0-a*e0
    Q1=Q1-a*e1
    Q2=Q2-a*e2
print(Q0,Q1,Q2)

fig1=plt.figure()#创建一个绘图对象  
ax=Axes3D(fig1)#用这个绘图对象创建一个Axes对象(有3D坐标)  

X1,X2=np.mgrid[0:10000:500j, 0:50:500j]  # 从0到10000生成500个房间平米数X1,从0到50生成500个房间数X2
h=Q0+(Q1*X1+Q2*X2)
plt.title("tu xiang") #图像标题
ax.plot_surface(X1, X2, h , rstride=1, cstride=1, cmap=plt.cm.coolwarm, alpha=0.5) #用取样点(x,y,z)去构建曲面
ax.set_xlabel('X1', color='r')
ax.set_ylabel('X2', color='g')
ax.set_zlabel('h', color='b')
plt.show()#显示模块中的所有绘图对象  
[2.58278175] [8448.67392082] [21.12753069]

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值