上节对于a的计算,使用循环的方式依次计算分子分母的m项然后进行相加。使用for循环性能效率较低,若能变成向量间的运算则性能会有较大提升。
(1)仔细观察分子分母,发现都对应于这种模式的向量相乘:
(2)转换成向量化运算:
(3)函数改进:只需要在fit函数中把循环去掉,分子分母变成对应的点乘即可。
numerator = (x_train - x_mean).dot(y_train - y_mean)
denominator = (x_train - x_mean).dot(x_train - x_mean)
(4)修改完的fit函数实现:
# 根据训练数据集x_train,y_train训练简单线性回归模型
def fit(self, x_train, y_train):
assert x_train.ndim == 1, \
"简单线性回归仅能解决单特征训练数据ÿ