#线性回归实现 import numpy as np import matplotlib.pyplot as plt class Line: def __init__(self,x,y): #参数定义 self.x = x self.y = y self.k = 0.8 self.b = 0.0 self.lr = 0.01 self.dk = 0.0 self.lossss = 0 # def show_image(x,y): # plt.scatter(x,y) # plt.show() #定义损失函数 def loss(self): self.lossss = 0 for i in range(len(self.x)): # print(self.x[i]) # print(self.y[i]) # print(self.k) # print(self.lossss) self.lossss += 0.5*np.power((self.y[i] - self.k * self.x[i]),2) self.lossss = self.lossss / len(self.x) return self.lossss #print(self.lossss) #breakpoint() #breakpoint() #定义优化算法 def sgd(self): for i in range(len(self.x)): self.dk += -(self.y[i]-self.k*self.x[i])*self.x[i] print('self.dk = ',self.dk) self.k = self.k - self.lr*self.dk #print(self.k) x = [1,2,3,4,5,7,8,9,10] y = [1,2,3,4,5,6,8,8.9,10] line = Line(x,y) epoches = 100 #训练 for i in range(epoches): #print(line.loss()) #line.loss() if(np.abs(line.k - 1.0) < 0.05): break else: line.sgd() #line.sgd() # if i%200 == 0: # print(line.loss()) #训练结果输出 print('line.k = ', line.k) #show_image(x,y)
线性回归
最新推荐文章于 2024-07-21 12:40:56 发布