import random
import numpy as np
import matplotlib.pyplot as plt
'''读入数据'''
path = ' ' #文件路径
data=np.loadtxt(path,delimiter=',')
x0=data[:,[0,1]]
y0=data[:,2]
m=y0.size
x_0,x_1=np.hsplit(x0,[1])
ax=plt.subplot(projection='3d')
ax.scatter(x_0,x_1,y0)
temp=np.ones((m,1))
x,y=np.hsplit(data,[2])
x=np.column_stack((temp,x0))
'''略显随意的归一化'''
x/=2000
y/=500000
'''梯度下降'''
alp=0.001
theta=np.ones((1,3))
for i in range(100000):
theta=theta-alp*((theta@x.T-y.T)@x)/m
theta=theta/2000*500000
'''看一眼拟合情况'''
for i in range(50):
a=random.randint(0,4000)
b=random.randint(1,5)
ax.scatter(a,b,np.array([1,a,b])@theta.T,c='r')
plt.show()