一元线性回归模型与多元线性回归模型

"""
《深度学习与图像识别原理实践》
"""
import numpy as np
class SimpleLinearRegressionSelf:
    def __init__(self):
        """
        初始化Simple Linear regression 模型
        """
        self.a_=None
        self.b_=None

    def fit(self,x_train,y_train):
        assert x_train.ndim==1,"一元线性回归模型仅仅处理向量,而不能处理矩阵"
        x_mean=np.mean(x_train)
        y_mean=np.mean(y_train)
        denominator=0.0
        numerator=0.0
        for x_i,y_i in zip(x_train,y_train):
            numerator+=(x_i-x_mean)*(y_i-y_mean)
            denominator+=(x_i-x_mean)**2
        self.a_=numerator/denominator
        self.b_=y_mean-self.a_*x_mean
        return self

    def predicit(self,x_test_group):
        return np.array([self._predict(x_test) for x_test in x_test_group])

    def _predict(self,x_test):
        return self.a_*x_test+self.b_

    def mean_squared_error(self,y_true,y_predict):
        return np.sum((y_true-y_predict)**2)/len(y_true)

    def r_square(self,y_true,y_predict):
        return 1-(self.mean_squared_error(y_true,y_predict))/np.var(y_true)


if __name__ == '__main__':
    x=np.array([1,2,4,6,8])
    y=np.array([2,5,7,8,9])

    lr=SimpleLinearRegressionSelf()
    lr.fit(x,y)
    print(lr.predicit([7]))
    print(lr.r_square([8,9],lr.predicit([6,8])))

多元线性回归模型

import numpy as np
from numpy import linalg

class MLinearRegression:
    def __init__(self):
        self.coef_=None
        self.interception_=None
        self._theta=None

    def fit(self,X_train,y_train):
        """
        :param X_train: 矩阵X大写
        :param y_train: 向量y小写
        :return: self
        """
        assert X_train.shape[0]==y_train.shape[0],"训练集的矩阵行数与标签的函数保持一致"
        ones=np.ones((X_train.shape[0],1))
        #将X矩阵转为X_b矩阵,其中第一列为1,其余不变
        X_b=np.hstack((ones,X_train))
        self._theta=linalg.inv(X_b.T.dot(X_b)).dot(X_b.T).dot(y_train)
        self.interception_=self._theta[0]
        self.coef_=self._theta[1:]

        return self
    def predict(self,X_predict):
        ones=np.ones((X_predict.shape[0],1))
        X_b=np.hstack((ones,X_predict))
        return X_b.dot(self._theta)

    def mean_squared_error(self,y_true,y_predict):
        return np.sum((y_true-y_predict)**2)/len(y_true)

    def score(self,X_test,y_test):
        y_predict=self.predict(X_test)
        return 1-(self.mean_squared_error(y_test,y_predict)/(np.var(y_test)))



 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一元线性回归多元线性回归是统计学中常用的回归分析方法。 一元线性回归是指只有一个自变量和一个因变量的线性关系。其数学模型可以表示为 y = β0 + β1x + ε,其中 y 表示因变量,x 表示自变量,β0 和 β1 表示回归方程的截距和斜率,ε 表示误差项。一元线性回归的目标是通过最小化误差项来拟合出最优的回归方程,进而进行预测和分析。常见的一元线性回归方法有最小二乘法和梯度下降法。 多元线性回归是指有多个自变量和一个因变量之间的线性关系。其数学模型可以表示为 y = β0 + β1x1 + β2x2 + ... + βnxn + ε,其中 y 表示因变量,x1、x2、...、xn 表示自变量,β0、β1、β2、...、βn 表示回归方程的截距和各个自变量的系数,ε 表示误差项。多元线性回归的目标是通过最小化误差项来拟合出最优的回归方程,进而进行预测和分析。常见的多元线性回归方法有最小二乘法和梯度下降法。 相比一元线性回归多元线性回归可以考虑多个自变量对因变量的影响,更加适用于实际问题的建模和预测。然而,多元线性回归也面临变量选择、多重共线性等问题,需要注意解释和优化模型的复杂性。 综上所述,一元线性回归多元线性回归是常用的回归分析方法,用于建立自变量和因变量之间的线性关系模型,以进行预测和分析。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值