本文共 1958 字,大约阅读时间需要 6 分钟。
这篇博客将介绍如何实现一个简单的线性回归算法。这一算法可以用来建立一条线性模型,用于对数据进行预测和拟合分析。
以下是一个简单线性回归的实现类代码:
import numpy as npclass SimpleLinearRegression: def __init__(self): """初始化 Simple Linear Regression 模型""" self.a_ = None self.b_ = None def fit(self, x_train, y_train): """根据训练数据集 x_train, y_train 训练模型""" assert x_train.ndim == 1, \ "Simple Linear Regression can only solve single feature training data" assert len(x_train) == len(y_train), \ "the size of x_train must be equal to the size of y_train" x_mean = np.mean(x_train) y_mean = np.mean(y_train) num = 0.0 d = 0.0 for x, y in zip(x_train, y_train): num += (x - x_mean) * (y - y_mean) d += (x - x_mean) ** 2 self.a_ = num / d self.b_ = y_mean - self.a_ * x_mean return self def predict(self, x_predict): """给定预测数据集 x_predict, 返回表示 x_predict 的结果向量""" assert x_predict.ndim == 1, \ "Simple Linear Regression can only solve single feature training data" assert self.a_ is not None and self.b_ is not None, \ "must fit before predict!" return np.array([self._predict(x) for x in x_predict]) def _predict(self, x_single): """给定单个预测数据 x_single, 返回 x_single 的预测结果值""" return self.a_ * x_single + self.b_ def __repr__(self): return "SimpleLinearRegression()"
在上述类中,fit 方法负责根据训练数据拟合线性回归模型,而 predict 方法则用于对新数据进行预测。
x_mean 和 y_mean。num = Σ((x - x_mean)(y - y_mean))d = Σ(x - x_mean)^2a = num / db = y_mean - a * x_mean计算出回归系数 a 和 b。a 和 b 保存到对象属性中。y = a * x + b 计算得出。在实际应用中,可以进一步优化计算过程。例如,通过向量化操作来避免循环计算,使得算法更加高效。这种优化可以显著提升计算速度,尤其在处理大规模数据时。
通过以上实现,我们可以轻松地对数据进行线性回归分析和预测。在实际应用中,可以根据具体需求选择是否使用向量化优化,以达到最佳性能。
转载地址:http://ctoi.baihongyu.com/