美文网首页
线性回归-最小二乘法

线性回归-最小二乘法

作者: SLClinchen | 来源:发表于2018-11-08 09:46 被阅读0次

    最小二乘法原理:
    https://baike.baidu.com/item/%E6%9C%80%E5%B0%8F%E4%BA%8C%E4%B9%98%E6%B3%95/2522346?fr=aladdin

    class LinearRegression:
        """使用Python实现的线性回归。(最小二乘法)"""
        
        def fit(self, X, y):
            """根据提供的训练数据X,对模型进行训练。
            
            Parameters
            -----
            X : 类数组类型。形状: [样本数量, 特征数量]
                特征矩阵,用来对模型进行训练。
                
            y : 类数组类型,形状: [样本数量]
            
            """
            # 说明:如果X是数组对象的一部分,而不是完整的对象数据(例如,X是由其他对象通过切片传递过来),
            # 则无法完成矩阵的转换。
            # 这里创建X的拷贝对象,避免转换矩阵的时候失败。
            X = np.asmatrix(X.copy())
            # y是一维结构(行向量或列向量),一维结构可以不用进行拷贝。
            # 注意:我们现在要进行矩阵的运算,因此需要是二维的结构,我们通过reshape方法进行转换。
            y = np.asmatrix(y).reshape(-1, 1)
            # 通过最小二乘公式,求解出最佳的权重值。
            self.w_ = (X.T * X).I * X.T * y
            
        def predict(self, X):
            """根据参数传递的样本X,对样本数据进行预测。
            
            Parameters
            -----
            X : 类数组类型。形状: [样本数量, 特征数量]
                待预测的样本特征(属性)。
                
            Returns
            -----
            result : 数组类型
                预测的结果。
            
            """
            # 将X转换成矩阵,注意,需要对X进行拷贝。
            X = np.asmatrix(X.copy())
            result = X * self.w_
            # 将矩阵转换成ndarray数组,进行扁平化处理,然后返回结果。
            # 使用ravel可以将数组进行扁平化处理。
            return np.array(result).ravel()
    

    相关文章

      网友评论

          本文标题:线性回归-最小二乘法

          本文链接:https://www.haomeiwen.com/subject/ltpixqtx.html