机器学习-线性模型-线性回归

文章目录

  • 一.机器学习-线性模型-线性回归
    • 线性回归相关理论知识
      • 矩阵角度
      • 1.线性回归模型为:
      • 2.损失函数:
      • 3. 求解参数 W ^ = a r g m i n w ( L ( W ) ) \quad \widehat{W}=\underset{w}{argmin}(L(W)) W =wargmin(L(W))
        • 3.1直接求闭式解
        • 3.2 梯度下降(SGD)求解(α为学习率)
      • 4. 正则化(减小过拟合)
        • 4.1 Lasso
        • 4.2 Ridge
        • 4.3 ElasticNet
      • 5.概率角度理解
        • 5.1 从MLE(极大似然估计)求解 w
        • 5.2 概率角度理解岭回归Ridge
          • 5.2.1 MLE和MAP概念
          • 5.2.2 岭回归的MAP分析
    • 代码实现
      • 1.创造伪数据
      • 2.代码封装
      • 3. 测试,采用Lasso,Ridge,ElasticNet正则化处理
      • 4.使用机器学习库sklearn训练

一.机器学习-线性模型-线性回归

定义:线性回归是利用回归方程(函数)对一个或多个自变量(特征值)和因变量 (目标值)之间关系进行建模的一种分析方式。
线性回归分两种
	单变量回归:只有一个自变量的情况
	多元回归:多于一个自变量情况*
在这里仅介绍单变量回归。

线性回归相关理论知识

矩阵角度

1.线性回归模型为:

f ( x ) = w 1 x 1 + w 2 x 2 + . . . . + w N x N = W T X \begin{aligned} f(x)&=w_{1}x_{1}+w_{2}x_{2}+....+w_{N}x_{N} \\ &=W^{T} X \end{aligned} f(x)=w1x1+w2x2+....+wNxN=WTX

2.损失函数:

L ( W ) = ∑ i = 1 N ∥ f ( x i ) − y i ∥ 2 = ∑ i = 1 N ∥ W T X i − y i ∥ 2 = ( X W − Y ) T ( X W − Y ) = W T X T X W − 2 W T X T Y + Y T Y \begin{aligned} L(W) &=\sum_{i=1}^{N}\left\| f(x_{i})-y_{i}\right\|^{2} \\ &=\sum_{i=1}^{N}\left\| W^{T}X_{i}-y_{i}\right\|^{2} \\ &= \left ( XW-Y \right )^{T}\left ( XW-Y \right ) \\ &=W^{T}X^{T}XW-2W^{T}X^{T}Y+Y^{T}Y \\ \end{aligned} L(W)=i=1Nf(xi)yi2=i=1NWTXiyi2=(XWY)T(XWY)=WTXTXW2WTXTY+YTY

3. 求解参数 W ^ = a r g m i n w ( L ( W ) ) \quad \widehat{W}=\underset{w}{argmin}(L(W)) W =wargmin(L(W))

3.1直接求闭式解

∂ L ( w ) ∂ w = ∂ ( W T X T X W − 2 W T X T Y + Y T Y ) ∂ w = 2 X T X W − 2 X T Y + 0 = 2 X T X W − 2 X T Y = 2 X T ( X W − Y ) = 0 \begin{aligned} \frac{\partial L(w)}{\partial w}&= \frac{\partial \left ( W^{T}X^{T}XW-2W^{T}X^{T}Y+Y^{T}Y \right )}{\partial w}\\ &=2X^{T}XW-2X^{T}Y+0\\ &=2X^{T}XW-2X^{T}Y\\ &=2X^{T}\left ( XW-Y \right )\\ &=0 \end{aligned} wL(w)=w(WTXTXW2WTXTY+YTY)=2XTXW2XTY+0=2XTXW2XTY=2XT(XWY)=0

则可以求出 W ^ = a r g m i n w ( L ( W ) ) = ( X T X ) − 1 X T Y \qquad \widehat{W}=\underset{w}{argmin}(L(W))=\left ( X^{T}X \right )^{-1}X^{T}Y W =wargmin(L(W))=(XTX)1XTY

3.2 梯度下降(SGD)求解(α为学习率)

w = w − α ∂ L ( w ) ∂ w \begin{aligned} w=w-α\frac{\partial L(w)}{\partial w} \end{aligned} w=wαwL(w)

4. 正则化(减小过拟合)

λ 和 α 均为超参数,控制w的大小,如果 或 设置很大, 会被约束的很小,如果 或 设置为0,等价于原始的不带正则项的线性回归

4.1 Lasso

线性回归中添加约束项L1,此时损失函数变为:
L ( W ) = ∑ i = 1 N ( f ( x i ) − y i ) 2 + λ ∥ w ∥ 1 \begin{aligned} L(W) =\sum_{i=1}^{N}\left ( f(x_{i})-y_{i} \right )^{2} +\lambda \left\| w\right\|_{1} \end{aligned} L(W)=i=1N(f(xi)yi)2+λw1

4.2 Ridge

线性回归中添加约束项L2,此时损失函数变为:
L ( W ) = ∑ i = 1 N ( f ( x i ) − y i ) 2 + α ∥ w ∥ 2 2 \begin{aligned} L(W) =\sum_{i=1}^{N}\left ( f(x_{i})-y_{i} \right )^{2} +α \left\| w\right\|^{2}_{2} \end{aligned} L(W)=i=1N(f(xi)yi)2+αw22

4.3 ElasticNet

线性回归中添加约束项L1和L2,此时损失函数变为:
L ( W ) = ∑ i = 1 N ( f ( x i ) − y i ) 2 + λ ∥ w ∥ 1 + α ∥ w ∥ 2 \begin{aligned} L(W) =\sum_{i=1}^{N}\left ( f(x_{i})-y_{i} \right )^{2} +\lambda \left\| w\right\|_{1} +α \left\| w\right\|_{2} \end{aligned} L(W)=i=1N(f(xi)yi)2+λw1+αw2

5.概率角度理解

5.1 从MLE(极大似然估计)求解 w

已知损失函数为: L ( W ) = ∑ i = 1 N ∥ f ( x i ) − y i ∥ 2 ( 其 中 x i 相 互 独 立 ) ⇒ W ^ = ( X T X ) − 1 X T Y \begin{aligned} L(W) &=\sum_{i=1}^{N}\left\| f(x_{i})-y_{i}\right\|^{2} \left (其中 x_{i} 相互独立\right )\quad \Rightarrow \quad \widehat{W}=\left ( X^{T}X \right )^{-1}X^{T}Y\end{aligned} L(W)=i=1Nf(xi)yi2(xi)W =(XTX)1XTY
1. 数 据 服 从 正 态 分 布 : f ( x ) ∼ ( w T x , 0 ) 2. 增 加 噪 声 并 服 从 正 态 分 布 : ε ∼ ( 0 , σ 2 ) 增 加 噪 声 后 数 据 变 为 : y = f ( x ) + ε 3. y ∣ x 服 从 正 态 分 布 : y ∣ x ∼ N ( w T x + 0 , 0 + σ 2 ) ∼ N ( w T x , σ 2 ) 1. 数据服从正态分布: \quad f(x)\sim \left ( w^{T}x,0\right )\\ 2.增加噪声并服从正态分布:\quad \varepsilon \sim \left ( 0,\sigma^{2}\right )\\ \quad增加噪声后数据变为:\quad y=f(x)+\varepsilon\\ 3. y | x 服从正态分布:y|x \sim N\left ( w^{T}x+0,0+\sigma^{2}\right )\sim N \left ( w^{T}x,\sigma^{2}\right ) 1.:f(x)(wTx,0)2.ε(0,σ2)y=f(x)+ε3.yxyxN(wTx+0,0+σ2)N(wTx,σ2)
已知 y | x 中的 w 和 x 值,目的求出使概率y最大的w值:利用极大似然估计MLE求解:
概率密度函数: p ( y ∣ x ; w ) = 1 2 π σ e x p ( − ( y − w T x ) 2 2 σ 2 ) p\left ( y|x;w \right )=\frac{1}{\sqrt{2\pi \sigma }}exp^{\left ( -\frac{\left ( y-w^{T}x \right )^{2}}{2\sigma^{2}} \right )} p(yx;w)=2πσ 1exp(2σ2(ywTx)2)
MLE:
L ( W ) = l n ∏ i = 1 N p ( y ∣ x ; w ) = ∑ i = 1 N l n ( p ( y ∣ x ; w ) ) = ∑ i = 1 N l n 1 2 π σ e x p ( − ( y − w T x ) 2 2 σ 2 ) = ∑ i = 1 N [ l n 1 2 π σ + l n e x p ( − ( y − w T x ) 2 2 σ 2 ) ] \begin{aligned} \qquad \qquad \qquad L(W)&=ln\prod_{i=1}^{N}p\left ( y|x;w \right ) \\ &=\sum_{i=1}^{N}ln\left ( p\left ( y|x;w \right )\right )\\ &=\sum_{i=1}^{N}ln\frac{1}{\sqrt{2\pi \sigma }}exp^{\left ( -\frac{\left ( y-w^{T}x \right )^{2}}{2\sigma^{2}} \right )}\\ &=\sum_{i=1}^{N}\left [ ln\frac{1}{\sqrt{2\pi \sigma }}+lnexp^{\left ( -\frac{\left ( y-w^{T}x \right )^{2}}{2\sigma^{2}} \right )} \right ] \end{aligned} L(W)=lni=1Np(yx;w)=i=1Nln(p(yx;w))=i=1Nln2πσ 1exp(2σ2(ywTx)2)=i=1Nln2πσ 1+lnexp(2σ2(ywTx)2)
求解w使目标L(W)最大,则 w ^ = a r g m a x w L ( W ) = a r g m a x w ∑ i = 1 N ( − ( y − w T x ) 2 2 σ 2 ) = a r g m i n w ∑ i = 1 N ( y − w T x ) 2 \begin{aligned} \widehat{w}&=\underset{w}{argmax}L(W)\\ &= \underset{w}{argmax}\sum_{i=1}^{N}{\left ( -\frac{\left ( y-w^{T}x \right )^{2}}{2\sigma^{2}} \right )}\\ &=\underset{w}{argmin}\sum_{i=1}^{N}\left ( y-w^{T}x\right )^{2} \end{aligned} w =wargmaxL(W)=wargmaxi=1N(2σ2(ywTx)2)=wargmini=1N(ywTx)2
此时利用极大似然求出的w和利用最小二乘法求出的一样
则LSE(最小二乘法)=MLE(极大似然估计,噪声服从高斯分布)

5.2 概率角度理解岭回归Ridge

5.2.1 MLE和MAP概念
概率论相关概念:
	极大似然估计MLE:利用已知的样本结果信息,反推最具有可能(最大概率)导致这些样本结果出现的模型参数值,即:“模型已定,参数未知”。
	最大后验估计MAP:最大后验估计是根据经验数据获得对难以观察的量的点估计。
				与最大似然估计类似,但是最大的不同时,最大后验估计的融入了要估计量的先验分布在其中。故最大后验估计可以看做规则化的最大似然估计

MLE:极大似然估计求 θ \theta θ 使 P ( x ∣ θ ) P(x|\theta) P(xθ)最大,认为 θ \theta θ是非随机变量, P ( θ ) P\left ( \theta \right ) P(θ)均匀分布, P ( θ ) P\left ( \theta \right ) P(θ)=C常量,目标 θ ^ M L E = a r g m a x θ P ( X ∣ θ ) \widehat{\theta }_{MLE}=\underset{\theta }{argmax}P(X|\theta ) θ MLE=θargmaxP(Xθ)
     似然函数: L ( θ ) = P ( x ∣ θ ) = ∏ i = 1 N p ( x i ∣ θ ) \begin{aligned} L(\theta )=P(x|\theta ) =\prod_{i=1}^{N}p(x_{i}|\theta ) \end{aligned} L(θ)=P(xθ)=i=1Np(xiθ)
     似然估计: θ ^ = a r g m a x θ L ( θ ) = a r g m a x θ ∏ i = 1 N p ( x i ∣ θ ) \widehat{\theta }=\underset{\theta }{argmax}L(\theta )=\underset{\theta }{argmax} \prod_{i=1}^{N}p(x_{i}|\theta ) θ =θargmaxL(θ)=θargmaxi=1Np(xiθ)

MAP形式:最大后验估计求解 θ \theta θ 使 P ( x ∣ θ ) P ( θ ) P(x |\theta)P\left ( \theta \right ) P(xθ)P(θ) 最大,认为 θ \theta θ是随机变量,已知 P ( θ ) P(\theta) P(θ)后验概率密度,目标 θ ^ M A P = a r g m a x θ P ( X ∣ θ ) P ( θ ) \widehat{\theta }_{MAP}=\underset{\theta }{argmax}P(X|\theta )P(\theta) θ MAP=θargmaxP(Xθ)P(θ)
      P ( θ ∣ x ) = P ( x ∣ θ ) P ( θ ) P ( x ) 1. P ( θ ∣ x ) 为 后 验 估 计 2. P ( x ∣ θ ) 为 极 大 似 然 估 计 M L E 3. p ( x i ∣ θ ) 为 先 验 条 件 P(\theta|x )=\frac{P(x |\theta)P\left ( \theta \right )}{P\left ( x \right )}\\ \qquad \qquad 1.P(\theta|x )为后验估计\\ \qquad \qquad 2.P(x |\theta)为极大似然估计MLE\\ \qquad \qquad 3.p(x_{i}|\theta )为先验条件 P(θx)=P(x)P(xθ)P(θ)1.P(θx)2.P(xθ)MLE3.p(xiθ)
MAP加入模型参数本身的概率分布,MLE中模型参数本身的概率是均匀的,认定为常量。

5.2.2 岭回归的MAP分析

第 一 步 : R i d g e 矩 阵 表 达 式 为 L ( W ) = ∑ i = 1 N ( f ( x i ) − y i ) 2 + α ∥ w ∥ 2 2 \begin{aligned} 第一步:Ridge矩阵表达式为 L(W) =\sum_{i=1}^{N}\left ( f(x_{i})-y_{i} \right )^{2} +α \left\| w\right\|^{2}_{2} \end{aligned} RidgeL(W)=i=1N(f(xi)yi)2+αw22
第 二 步 : 求 后 验 函 数 增 加 噪 声 且 服 从 正 态 分 布 : ε ∼ ( 0 , σ 2 ) , Y = W T X + ε 第二步:求后验函数\\ \qquad \qquad \quad 增加噪声且服从正态分布:\varepsilon \sim \left ( 0,\sigma^{2}\right ) ,\quad Y=W^{T}X+\varepsilon ε(0,σ2),Y=WTX+ε
故 Y 服 从 均 值 为 W T X , 方 差 为 σ 2 的 分 布 \qquad \qquad \quad 故Y服从均值为W^{T}X,方差为\sigma^{2}的分布 YWTXσ2

      贝叶斯公式: P ( W ∣ Y ) = P ( Y ∣ W ) P ( W ) P ( Y ) \qquad P(W|Y )=\frac{P(Y |W)P\left ( W \right )}{P\left ( Y \right )} P(WY)=P(Y)P(YW)P(W)
      似然函数为: P ( Y ∣ W ) = 1 2 π σ e x p ( − ( y − w T x ) 2 2 σ 2 ) \qquad P(Y|W)=\frac{1}{\sqrt{2\pi \sigma }}exp^{\left ( -\frac{\left ( y-w^{T}x \right )^{2}}{2\sigma^{2}} \right )} P(YW)=2πσ 1exp(2σ2(ywTx)2)
      先验函数为: P ( W ) = 1 2 π σ 0 e x p ( − ( ∥ w ∥ ) 2 2 σ 0 2 ) 将 似 然 函 数 和 先 验 函 数 带 入 到 贝 叶 斯 公 式 中 得 到 后 验 函 数 ( 其 中 P ( Y ) 已 知 ) 。 \qquad P(W)=\frac{1}{\sqrt{2\pi \sigma_{0} }}exp^{\left ( -\frac{\left ( \left\| w\right\| \right )^{2}}{2\sigma^{2}_{0}} \right )}\\ \qquad \qquad \quad将似然函数和先验函数带入到贝叶斯公式中得到后验函数(其中 P(Y) 已知)。 P(W)=2πσ0 1exp(2σ02(w)2)P(Y))
第四步:求参数W
W ^ = a r g m a x w P ( W ∣ Y ) = a r g m a x w P ( Y ∣ W ) P ( W ) = 1 2 π σ e x p ( − ( y − w T x ) 2 2 σ 2 ) 1 2 π σ 0 e x p ( − ( ∥ w ∥ ) 2 2 σ 0 2 ) = a r g m i n w ( ( w T x i − y i ) 2 + σ 2 σ 0 2 w 2 ) = a r g m i n w ( ( w T x i − y i ) 2 + λ w 2 ) \begin{aligned} \qquad \quad \quad \widehat{W }&=\underset{w }{argmax}P(W|Y )=\underset{w}{argmax}P(Y|W )P(W)\\ &=\frac{1}{\sqrt{2\pi \sigma }}exp^{\left ( -\frac{\left ( y-w^{T}x \right )^{2}}{2\sigma^{2}} \right )}\frac{1}{\sqrt{2\pi \sigma_{0} }}exp^{\left ( -\frac{\left ( \left\| w\right\| \right )^{2}}{2\sigma^{2}_{0}} \right )}\\ &=\underset{w }{argmin}(\left ( w^{T}x_{i}-y_{i} \right )^{2} + \frac{\sigma^{2}}{\sigma_{0}^{2}}w^{2})\\ &=\underset{w }{argmin}(\left ( w^{T}x_{i}-y_{i} \right )^{2} +\lambda w^{2}) \end{aligned} W =wargmaxP(WY)=wargmaxP(YW)P(W)=2πσ 1exp(2σ2(ywTx)2)2πσ0 1exp(2σ02(w)2)=wargmin((wTxiyi)2+σ02σ2w2)=wargmin((wTxiyi)2+λw2)
总 结 : 1. L S E 最 小 二 乘 法 ⇔ M L E 极 大 似 然 估 计 ( 噪 声 为 高 斯 分 布 ) g 2. R e g u l a r i z e d L S E 有 正 则 项 的 最 小 二 乘 法 ⇔ M A P ( 噪 声 和 先 验 均 为 高 斯 噪 声 ) 总结:1.LSE 最小二乘法 \Leftrightarrow MLE极大似然估计(噪声为高斯分布)g\\ \qquad \quad 2.Regularized\quad LSE 有正则项的最小二乘法 \Leftrightarrow MAP(噪声和先验均为高斯噪声) 1.LSEMLEg2.RegularizedLSEMAP

代码实现

1.创造伪数据

import numpy as np
#造伪样本
X=np.linspace(0,100,100)# 前两个变量为在0到100间创造值,第三个为创造100个元素
X=np.c_[X,np.ones(100)]# 将X和100个一维向量拼接,行数不变,列数相叠
w=np.asarray([3,2]) # 创造2x1的矩阵,值为【3,2】
Y=X.dot(w)# 矩阵相乘
X=X.astype('float')# 转换为float类型
Y=Y.astype('float')
X[:,0]+=np.random.normal(size=(X[:,0].shape))*3#添加噪声

添加一些异常点
X=np.concatenate([X,np.asanyarray([[100,1],[101,1],[102,1],[103,1],[104,1]])]) # np.concatenate对矩阵进行行拼接,列数不变
Y=np.concatenate([Y,np.asanyarray([[3000],[3300],[3600],[3800],[3900]])])# np.asanyarray创建矩阵
lr=LinearRegression() # 创建线性回归的类
lr.fit(X[:,:-1],Y) # 进行训练
lr.plot_fit_boundary(X[:,:-1],Y) # 画出图形

机器学习-线性模型-线性回归_第1张图片

2.代码封装

初始化参数,定义一些变量

def __init__(self, fit_intercept=True, solver='sgd', if_standard=True, epochs=10, eta=1e-2, batch_size=1,
             	l1_ratio=None, l2_ratio=None):
    	"""
   	 :param fit_intercept: 是否训练bias
    :param solver:
    :param if_standard:
    """
    self.w = None
    self.fit_intercept = fit_intercept
    self.solver = solver
    self.if_standard = if_standard
    if if_standard:
        self.feature_mean = None
        self.feature_std = None
    self.epochs = epochs
    self.eta = eta
    self.batch_size = batch_size
    self.l1_ratio = l1_ratio # 定义Lasso 正则化
    self.l2_ratio = l2_ratio # 定义Ridge 正则化
    # 注册sign函数
    self.sign_func = np.vectorize(utils.sign)# 将函数进行向量化,向量化后的并行运算速度要比普通的执行速度快很多
    
def init_params(self, n_features):
    """
    初始化参数
    :return:
    """
    self.w = np.random.random(size=(n_features, 1))

采用闭式和梯度下降求解w参数

def _fit_closed_form_solution(self, x, y):
    """
    直接求闭式解
    :param x:
    :param y:
    :return:
    """
    if self.l1_ratio is None and self.l2_ratio is None:# 不使用L1和L2正则化,和原来一样
        self.w = np.linalg.pinv(x).dot(y)
    elif self.l1_ratio is None and self.l2_ratio is not None: # 使用Ridge L2正则化
        self.w = np.linalg.inv(x.T.dot(x) + self.l2_ratio * np.eye(x.shape[1])).dot(x.T).dot(y) # 利用显式解公式求
    else:
        self._fit_sgd(x, y) # 使用SGD梯度下降法求(单独用L1 或者 L1和L2同时使用)

def _fit_sgd(self, x, y):
    """
    随机梯度下降求解
    :param x:
    :param y:
    :param epochs:
    :param eta:
    :param batch_size:
    :return:
    """
    x_y = np.c_[x, y]
    # 按batch_size更新w,b
    for _ in range(self.epochs):
        np.random.shuffle(x_y)
        for index in range(x_y.shape[0] // self.batch_size):
            batch_x_y = x_y[self.batch_size * index:self.batch_size * (index + 1)]
            batch_x = batch_x_y[:, :-1]
            batch_y = batch_x_y[:, -1:]

            dw = -2 * batch_x.T.dot(batch_y - batch_x.dot(self.w)) / self.batch_size

            # 添加l1和l2的部分
            dw_reg = np.zeros(shape=(x.shape[1] - 1, 1))
            if self.l1_ratio is not None:# 使用L1正则化
                dw_reg += self.l1_ratio * self.sign_func(self.w[:-1]) / self.batch_size
            if self.l2_ratio is not None: # 使用L2,采用梯度回归的方法进行求解w
                dw_reg += 2 * self.l2_ratio * self.w[:-1] / self.batch_size
            dw_reg = np.concatenate([dw_reg, np.asarray([[0]])], axis=0)
            dw += dw_reg
            self.w = self.w - self.eta * dw

归一化预测训练

def fit(self, x, y):
    # 是否归一化feature
    if self.if_standard:
        self.feature_mean = np.mean(x, axis=0) # 求均值
        self.feature_std = np.std(x, axis=0) + 1e-8 # 求方差
        x = (x - self.feature_mean) / self.feature_std # 归一化操作
    # 是否训练bias
    if self.fit_intercept:
        x = np.c_[x, np.ones_like(y)] # 含有截距的情况
    # 初始化参数
    self.init_params(x.shape[1]) # 初始化模型
    # 训练模型
    if self.solver == 'closed_form': # 使用显式求解
        self._fit_closed_form_solution(x, y)
    elif self.solver == 'sgd': # 使用SGD梯度下降求解
        self._fit_sgd(x, y)

def get_params(self):
    """
    输出原始的系数
    :return: w,b
    """
    if self.fit_intercept: # 有截距情况
        w = self.w[:-1]
        b = self.w[-1]
    else:
        w = self.w
        b = 0
    if self.if_standard: # 进行标准化
        w = w / self.feature_std.reshape(-1, 1)
        b = b - w.T.dot(self.feature_mean.reshape(-1, 1))
    return w.reshape(-1), b

def predict(self, x):
    """
    :param x:ndarray格式数据: m x n
    :return: m x 1
    """
    if self.if_standard: # 归一化操作
        x = (x - self.feature_mean) / self.feature_std
    if self.fit_intercept: # 有截距
        x = np.c_[x, np.ones(shape=x.shape[0])]
    return x.dot(self.w)

def plot_fit_boundary(self, x, y): # 绘制图形
    """
    绘制拟合结果
    :param x:
    :param y:
    :return:
    """
    plt.scatter(x[:, 0], y) 
    plt.plot(x[:, 0], self.predict(x), 'r')

3. 测试,采用Lasso,Ridge,ElasticNet正则化处理

1. Lasso方法
lasso=LinearRegression(l1_ratio=100) # 使用L1正则化,参数100
lasso.fit(X[:,:-1],Y) # 训练模型
lasso.plot_fit_boundary(X[:,:-1],Y) # 画出图形

机器学习-线性模型-线性回归_第2张图片
2. Ridge方法

ridge=LinearRegression(l2_ratio=10)# 使用L2 参数为10
ridge.fit(X[:,:-1],Y)
ridge.plot_fit_boundary(X[:,:-1],Y)

机器学习-线性模型-线性回归_第3张图片

3. ElasticNet方法
elastic=LinearRegression(l1_ratio=100,l2_ratio=10) # 同时使用L1=100和L2=10
elastic.fit(X[:,:-1],Y)
elastic.plot_fit_boundary(X[:,:-1],Y)

机器学习-线性模型-线性回归_第4张图片

4.使用机器学习库sklearn训练

#与sklearn对比
from sklearn.linear_model import LinearRegression
lr=LinearRegression()
lr.fit(X[:,:-1],Y)
predict=lr.predict(X[:,:-1])
#查看w,b
print('w:',lr.coef_,'b:',lr.intercept_)
#查看标准差
np.std(Y-predict)

你可能感兴趣的:(机器学习,机器学习,线性回归,矩阵)