# -*- coding: UTF-8 -*- ''' 此脚本用于定义线性回归模型 ''' from utils import Scalar def mse(errors): ''' 计算均方误差 ''' n = len(errors) wrt = {} value = 0.0 requires_grad = False for item in errors: value += item.value ** 2 / n wrt[item] = 2 / n * item.value requires_grad = requires_grad or item.requires_grad output = Scalar(value, errors, 'mse') output.requires_grad=requires_grad output.grad_wrt = wrt return output class Linear: def __init__(self): ''' 定义线性回归模型的参数:a, b ''' self.a = Scalar(0.0, label='a') self.b = Scalar(0.0, label='b') def forward(self, x): ''' 根据当前的参数估计值,得到模型的预测结果 ''' return self.a * x + self.b def error(self, x, y): ''' 当前数据的模型误差 ''' return y - self.forward(x) def string(self): ''' 输出当前模型的结果 ''' return f'y = {self.a.value:.2f} * x + {self.b.value:.2f}'