机器学习——线性回归(sklearn)

 

目录

一、认识线性回归

1. 介绍

2. 多元线性回归的基本原理(LinearRegression)

二、多重共线性

1. 介绍

2. 多重共线性详细解释

三、岭回归(解决多重共线性问题)

1. 模型推导

2. 选取最佳的正则化参数取值

四、Lasso(解决多重共线性问题)

五、多项式回归(解决非线性问题)

六、回归类的模型评估指标

1. 是否预测到了正确的数值

(1)均方误差

(2)绝对均值误差

2. 是否拟合到了足够的信息

七、sklearn中的线性回归(自查)


一、认识线性回归

1. 介绍

        回归是一种 应用广泛的 预测建模技术,这种 技术的核心 在于 预测的结果 是连续型变量。理解线性回归可以有 两种角度:矩阵的角度和代数的角度

2. 多元线性回归的基本原理(LinearRegression)

        多元线性回归 指的 是一个样本 有多个特征的 线性回归问题。对于一个有 n 个特征的样本 i 而言,它的 回归结果可以 写作方程:

        w 被统称为 模型的 参数,其中 w0 被称为截距(intercept),w1~wn 被称为 回归系数(regression coefficient)。这个表达式和 y=az+b 是同样的性质。其中 y 是目标变量,也就是 标签。xi1~xin 是样本 i 上的特征 不同特征。如果考虑有 m 个样本,则回归结果 可以被写作:

        其中 ~{y} 是包含了 m 个全部的样本的回归结果的 列向量。

        注:通常 使用 粗体的 小写字母来 表示列向量,粗体的 大写字母 表示矩阵 或者 行列式。

        进一步的,可以 使用 矩阵来表示这个方程,其中 w 可以被看做是一个结构为(n+1, 1)的列矩阵,X 是一个结构为(m, n+1)的特征矩阵,则有:

        线性回归的任务,就是 构造一个 预测函数来 映射输入的 特征矩阵 X 和 标签值 y 的 线性关系。这个 预测函数的本质 就是需要 构建的模型,而 构造预测函数的 核心就是 找出模型的参数向量 w

        在逻辑回归 和 SVM 中,都是先定义了 损失函数,然后 通过 最小化损失函数 或 损失函数的某种变化 来将求解 参数向量,以此 将单纯的 求解问题转化为一个 最优化问题。在 多元线性回归中,损失函数如下定义:

        其中 ~{y_i} 是样本 i 对应的 真实标签,$\hat{y_i}$ 也就是 ~{X_iw} 是样本 i 在一组参数 w 下的 预测标签。

        现在 只实现了向量上 每个点对应相乘后的 平方和,开没有 开平方,所以 损失函数是 L2 范式,即 欧式距离的 平方结果。这个损失函数实在的 计算了 真实标签和预测值之间的距离。因此,我们认为这个损失函数衡量了构造的模型的预测结果和真实标签的差异,因此我们 希望预测结果 和 真实值差异 越小越好。经转换的 求解目标:

        其中右下角的 2 表示向量 y-Xw 的 L2 范式,也就是 损失函数 所代表的 含义。在 L2 范式上 开平方,就是 损失函数。我们往往 称呼这个式子为 SSE (Sum of Sqaured Error,误差平方和)或者RSS (Residual Sum of Squares 残差平方和)。在 sklearn 所有官方文档和网页上,都称之为 RSS残差平方和

        现在问题转换成了 求解让 RSS 最小化的 参数向量 w,这种 通过最小化 真实值 和 预测值之间的 RSS 来求解参数的方法叫做 最小二乘法。现在 残差平方 和 RSS 上对参数向量 w 求导。

        在这里,逆矩阵 存在的 充分必要条件是 特征矩阵 不存在多重共线性。假设矩阵的逆 是存在的,此时我们的 w 就是参数的 最优解。求解出 这个 参数向量,就解出了我们的 Xw,也就能够计算出我们的 预测值了。

class sklearn.linear_model.LinearRegression(fit_intercept=True, normalize=False, copy_X=True, n_jobs=None)
参数含义
fit_intercept
布尔值,可不填,默认为 True
是否计算此模型的截距。如果设置为 False ,则不会计算截距
normalize
布尔值,可不填,默认为 False
设置为 False 时,将忽略此参数。如果为 True ,则特征矩阵 X 在进入回归之前将
会被减去均值(中心化)并除以  L2 范式(缩放)。如果希望进行标准化,请在 fit 数据之前使用 preprocessing  模块中的 标准化专用类  StandardScaler
copy_X
布尔值,可不填,默认为 True
如果为真,将在 X.copy() 上进行操作,否则的话原本的特征矩阵 X 可能被线性回归影响并覆盖
n_jobs
整数或者 None ,可不填,默认为 None
用于计算的作业数。只在多标签的回归和数据量足够大的时候才生效。除非 None 在 joblib.parallel_backend上下文中,否则 None 统一表示为 1 。如果输入 -1 ,则表示使用全部 的CPU 来进行计算。
属性含义
coef_
数组,形状为 (n_features, )  或者  (n_targets, n_features) 线性回归方程中估计出的系数。
如果在fit 中传递多个标签(当 y 为二维或以上的时候),则返回 的系数是形状为(n_targets n_features )的二维数组,而如果仅传递一个标签,则返回的系
数是长度为 n_features 的一维数组。
intercept_
数组,线性回归中的截距项。

二、多重共线性

1. 介绍

        多重共线性 是一种 统计现象,是 指线性模型中的 特征(解释变量)之间 由于存在 精确相关关系 或 高度相关关系,多重共线性的 存在会使模型 无法建立,或者 估计失真。

2. 多重共线性详细解释

        在 最后一步中 需要左乘 X^TX 的逆矩阵,而 逆矩阵 存在的 充分必要条件 是特征矩阵 不存在多重共线性

        首先需要 先理解 逆矩阵存在 与否 的 意义 和 影响。逆矩阵的 计算公式:

        位于 分母的 变量不能 为 0,一旦 为 0 则 无法计算出 逆矩阵。因此 逆矩阵 存在的 充分必要条件是:矩阵的行 列式不能为 0,对于 线性回归而言,即是说  |X^TX|  不能为 0。这是使用 最小二乘法来 求解线性回归的 核心条件之一。

        假设 特征矩阵 X 结构为(m,n),则 X^TX 就是结构为(n,m)的矩阵乘以结构为(m,n)的矩阵,从而得到结果为(n,n)的方阵。

        在线性代数中,可以 通过 行列式的计算 将一个行列式 整合成一个梯形的 行列式:

        梯形的行列式 表现为,所有的数字 都被整合 到对角线的 上方 或 下方(通常是上方),虽然具体的 数字发生了变化,但是 行列式的 大小在 初等行变换 / 列变换 的过程中是 不变的。

    

        矩阵满秩(即 转换为 梯形矩阵后 对角线上没有 0)是矩阵的行列式不为 0 的充分必要条件。

   假设:

        对于上述矩阵 进行变换:

        矩阵 A 明显 不是满秩的,它 有全零行所以 行列式会 为 0。而 矩阵 B 和 C 没有 全零行 所以满秩。而 矩阵 A 和 矩阵 B 的区别在于,A 中存在 着完全 具有 线性关系的两行(1,1,2)和(2,2,4),而 B 和 C 中则 没有这样的 两行。而 矩阵 B 虽然 对角线上 每个元素都不 为 0,但具 有非常接近于 0 的 元素 0.02,而 矩阵 C 的对角线上 没有任何元素 特别接近于 0。

        矩阵 A 中 第一行 和 第三行的 关系,被称为 “精确相关关系”,即 完全相关,一行 可使另一行 为 0。在 这种精确 相关关系 下,矩阵 A 的行列式 为 0,则 矩阵 A 的逆 不可能存在。在 我们的 最小二乘法中,如果矩阵 X^TX 中存在这种 精确 相关关系,则逆 不存在,最小二乘法 完全无法使用,线性回归 会无法 求出结果。

        矩阵 B 中 第一行 和 第三行 的关系 不太一样,他们之间 非常接近于 “精确相关关系” ,但又 不是完全相关,一行 不能 使另一行 为 0,这种关系 被称为 “高度相关关系”。在这种 高度 相关关系下,矩阵的 行列式 不为 0,但 是一个 非常接近 0 的数,矩阵 A 的逆 存在,不过 接近于 无限大。在这种情况下,最小二乘法 可以使用,不过 得到的 逆会很大,直接 影响我们对参数向量 w 的求解:

        这样 求解出来的 参数向量 w 会很大,因此 会影响建模的 结果,造成模型 有偏差 或者 不可用。精确相关关系 和 高度相关关系 并称为 “多重共线性”。在 多重共线性下,模型 无法建立,或者 模型不可用。

        相对的,矩阵 C 的行之间 结果 相互独立,梯形矩阵 看起来 非常正常,它的对角线上 没有任何元素 特别接近于 0,因此 其行列式也就 不会接近 0 或者 为 0,因此 矩阵 C 得出的 参数向量 w就不会 有太大偏差,对于 我们拟合而言是 比较理想的。

        所以,一个矩阵 如果 要满秩,则要 求矩阵中 每个向量之间 不能存在 多重共线性,这也 构成了线性回归算法 对于 特征矩阵的要求。

三、岭回归(解决多重共线性问题)

1. 模型推导

        岭回归,又称为 吉洪诺夫正则化 (Tikhonov regularization)。岭回归 在多元线性回归的 损失函数上 加上了正则项,表达为 系数 w 的 L2范式(即系数w的平方项)乘以 正则化系数 a。

        依然使用 最小二乘法来求解。假设 特征矩阵结构为(m,n),系数 w 的结构是(1, n),则可以有:

         正则化系数 a 避免了 “精确相关关系” 带来的影响。当 a 越大,模型 越不容易受到 共线性的影响。

        最小二乘法 一定有解,并且 这个解可以通过 a 来进行调节,以 确保 不会偏离太多。当然 a 挤占了 w 中由原始的 特征矩阵 贡献的空间,因此 a 如果太大,也会导致 w 的估计 出现较大的 偏移,无法 正确拟合数据的 真实面貌。

# 在sklearn中,岭回归由线性模型库中的Ridge类来调用

class sklearn.Linear_model.Ridge(alpha=1.0, fit_intercept=True, normalize=False, copy_X=True, max_iter=None, tol=0.001, solver=‘auto’, random_ state=None)

2. 选取最佳的正则化参数取值

        这一个以 正则化参数 为 横坐标,线性模型求解的 系数 w 为纵坐标的图像,其中 每一条 彩色的线 都是一个 系数 w。其目标是 建立正则化参数 与 系数 w 之间的 直接关系,以此来 观察 正则化参数的 变化 如何影响了 系数 w 的拟合。

        岭迹图认为,线条 交叉 越多,则说明 特征之间的 多重共线性 越高。应该 选择系数较 为 平稳的 喇叭口 所对应的 a 取值 作为 最佳的 正则化参数的 取值。

# 使用交叉验证来选择最佳的正则化系数

class sklearn.linear_model.RidgeCV(alphas=(0.1, 1.0, 10.0), fit_intercept=True, normalize=False, scoring=None,cv=None, gcv_mode=None, store_cv_values=False)
重要参数含义
alphas
需要测试的正则化参数的取值的元祖
scoring
用来进行交叉验证的模型评估指标,默认是 R²,可自行调整
store_cv_values
是否保存每次交叉验证的结果,默认False
cv
交叉验证的模式,默认是 None ,表示默认进行  留一交叉验证
可以输入  Kfold  对象 和  StratifiedKFold  对象 来进行交叉验证
注:仅仅当为 None 时,每次交叉验证的结果才可以被保存下来
cv 有值存在(不是 None )时, store_cv_values 无法被设定为 True
重要属性含义
alpha_
查看交叉验证选中的alpha
cv_values_
调用所有交叉验证的结果,只有当 store_cv_values=True 的时候才能够调用,因此返回的 结构是(n_samples, n_alphas)
重要接口含义
score
调用Ridge类不进行交叉验证的情况下返回的R平方

四、Lasso(解决多重共线性问题)

        Lasso 全称 最小绝对收缩 和 选择算子 (least absolute shrinkageand selection operator)。和 岭回归一样,Lasso 是 被创造来 作用于 多重共线性问题的 算法,Lasso 使用的是系数 w 的 L1范式(L1范式则是系数w的绝对值)乘以 正则化系数 a,所以 Lasso 的损失函数 表达式为:

        使用 最小二乘法来求解 Lasso 中的 参数 w,对损失函数 进行求导:

         Lasso 无法解决特征之间 “精确相关” 的问题。当使用 最小二乘法 求解线性回归 时,如果 线性回归 无解 或者 报除零错误,换 Lasso 不能解决任何问题。

        幸运的是,在现实中 会 比较少遇到 “精确相关” 的多重共线性问题,大部分 多重共线性 问题应该是 “高度相关”,而 如果我们假设方阵 X^TX 的逆是一定存在的,那可以有:

        通过 增大 a,可以为 w 的计算 增加一个 负项,从而 限制参数估计中 w 的大小,而 防止多重共线性 引起的 参数 w 被估计 过大导致 模型失准的 问题。Lasso 不是 从根本上 解决多重共线性问题,而是 限制多重共线性带来的影响。

class sklearn.linear_model.Lasso(alpha=1.0, fit_intercept=True, normalize=False, precompute=False, copy_X=True, max_iter=1000, tol=0.0001, warm_start=False, positive=False, random_ state=None, selection=‘cyclic’)

        比起岭回归,Lasso 所带的 L1 正则项 对于系数的 惩罚要 重得多,并且 它会 将系数 压缩至 0,因此 可以被用来 做特征选择。也因此,往往让 Lasso 的正则化 系数 a 在很小的 空间中变动,以此来 寻找最佳的正则化系数。

# 使用交叉验证的Lasso类

class sklearn.linear_model.LassoCV (eps=0.001, n_alphas=100, alphas=None,  fit_intercept=True, normalize=False, precompute=’auto’, max_iter=1000, tol=0.0001, copy_X=True, cv=’warn’, verbose=False, n_jobs=None, positive=False, random_state=None, selection=’cyclic’)
参数含义
eps
正则化路径的长度,默认0.001
n_alphas
正则化路径中 的个数,默认100
alphas
需要测试的正则化参数的取值的元祖,默认 None 。当不输入的时候,自动使用 eps n_alphas 来自动生成带入交叉验证的正则化参数
cv
交叉验证的次数
属性含义
alpha_
调用交叉验证选出来的最佳正则化参数
alphas_
使用正则化路径的长度和路径中 的个数来自动生成的,用来进行交叉验证的正则化参数
mse_path
返回所以交叉验证的结果细节
coef_
调用最佳正则化参数下建立的模型的系数

五、多项式回归(解决非线性问题)

        非线性模型能够 拟合 或 处理 线性数据。线性数据 对于非线性模型来说 太过简单,很容易就把训练集上的 R^2 训练得很高。

        线性模型若用来 拟合非线性数据 或者 对非线性可分的数据 进行分类,那通常都会 表现糟糕。改善线性 模型 在非线性数据上 的效果的方法之一 时进行分箱,并且从 下图来 看分箱的 效果非常好,甚至 高过一些非线性模型。

线性模型非线性模型
代表模型
线性回归,逻辑回归,弹性网,感知机决策树,树的集成模型,使用高斯核的SVM
模型特点
模型简单,运行速度快模型复杂,效果好,但速度慢
数学特征:回归
自变量是一次项自变量不都是一次项
分类
决策边界上的自变量都是一次项决策边界上的自变量不都是一次项
可视化: 回归
拟合出的图像是一条直线拟合出的图像不是一条直线
分类
决策边界在二维平面是一条直线决策边界在二维平面不是一条直线
擅长数据类型
主要是线性数据,线性可分数据所有数据

    补充:

        当获 得数据 时,往往 希望 使用线性 模型 来 对数据进行 最初的拟合( 线性回归用于回归,逻辑回归 用于分类 ),如果线性 模型 表现良好,则 说明数据 本身很 可能是 线性的或者 线性可分 的,如果 线性模型 表现糟糕,那毫无疑问 我们 会投入 决策树,随机森林 这些模型的 怀抱,就 不必浪费时间 在线性模型 上了。

        除了 分箱 之外,另一种更普遍 的 用于解决 “线性回归只能处理线性数据” 问题的手段,就是使用多项式回归对线性回归进行改进。这样的手法 是 机器学习研究者们 从支持向量机 中 获得的:支持向量机 通过升维 可以 将非线性可 分数据转 化为 线性可分,然后 使用核函数 在低维空间中 进行计算,这是一种 “高维呈现,低维解释” 的思维。我们也 可以让 线性回归 使用 类似于 升维的 转换,将数据 由非线性转换 为线性,从而 为线性 回归赋予处理 非线性数据 的能力。

        多项式变化:这是一种 通过 增加 自变量上的 次数,而 将数据 映射到 高维空间的 方法,只要 设定一个 自变量上的 次数(大于 1),就可以 相应地 获得数据投影 在高次方的 空间中的 结果。

        当原始特征为 二维 的时候,多项式 的 二次变化 突然 将特征 增加到了 六维,其中 一维是常量(截距)。当继续 适用 线性回归去拟合的时候,我们会 得到的方程如下:

         当进行多项式转换的时候,多项式会 产出到 最高次数 为止的 所有低 高次项。如果 太过分的 共线性还是会 影响到模型 的拟合。因此 sklearn 中存在着 控制是否要 生成平方 和 立方项的 参数 interaction_only,默认为 False,以减少共线性(只生成交互项)

        随着 原特征矩阵的 维度上升,随着 我们规定的 最高次数的 上升,数据 会变得 越来越复杂,维度 越来越多,并且 这种维度的 增加 并不能用太简单的 数学公式表达出来。因此,多项式回归 没有固定的模型表达式,多项式回归的 模型最终长什么 样子是 由数据 和 最高次数决定的。

class sklearn.preprocessing.PolynomialFeatures(degree=2, interaction_only=False, include_ bias=True)
参数
含义
degree
多项式中的次数,默认为 2
interaction_only
布尔值是否只产生交互项,默认为 False
include_bias
布尔值,是否产出与截距项相乘的 ,默认 True

     补充:多项式回归是线性还是非线性模型?

            来看 原始特征 为二维,多项式 次数 为 二次的 多项式回归 表达式:

            

        经过变化后的 数据有 六个特征,分别是:

        从 第四个特征 开始,都是 高次特征,而这些 高次特征 与 y 之间的 关系 必然 不是线性的。但也 可以换—种方式 来思考 这个问题:假设 我们不知道 这些特征 是由多项式变化 改变来的,只是 拿到了 含有 六个特征的 任意数据,于是 现在对于 我们来说这 六个特征就是:

         通过检验发现,z1 和 z4、z5 之间存 在一定的 共线性,z2 也是如此,但是 现实中的数据 不太可能 完全不相关,因此 一部分的 共线性是 合理的。所以 使用 线性回归 来对 数据进行拟合,然后得到了方程:

        多项式正是 利用线性回归的这种 “扭曲”,为线性模型赋予了 处理非线性数 据的能力。

六、回归类的模型评估指标

        在回归类算法中,有 两种不同的 角度来 看待回归的效果:① 是否预测到了正确的数值。② 是否拟合到了足够的信息。这两种角度,分别 对应着不同的 模型评估指标。

1. 是否预测到了正确的数值

(1)均方误差

        均方误差,本质是在 RSS 的基础上 除以了 样本总量,得到了 每个样本量上的 平均误差。有了 平均误差,就可以 将平均误差 和 我们的标签的 取值范围 在一起比较,以此 获得—个较为可靠的评估依据。

        在 sklearn 当中,有两种方式 调用 这个评估指标,一种是使用 sklearn 专用的模型评估模块 metrics 里的类 mean_squared_error,另一种是 调用 交叉验证的类 cross_val_score 并使用里面的 scoring 参数来设置使用均方误差

        我们 在决策树 和 随机森林中 都提到过,虽然 均方误差永远 为正,但是 sklearn 中的 参数scorin g下,均方误差 作为评判标准时,却是计算 “负均方误差”(neg_mean_squared_error)。这是因为 sklearn 在 计算模型评估指标的 时候,会 考虑指标本身的 性质,均方误差 本身是一种 误差,所以被 sklearn 划分为模型的 一种损失(loss)。在 sklearn 当中,所有的损失都使用负数表示,因此 均方误差也 被显示为 负数了。真正的 均方误差 MSE 的数值,其实就是 neg_mean_squared_error 去掉负号的 数字。

(2)绝对均值误差

        MAE(Mean_absolute_error,绝对均值误差)。其表达的 概念与均方误差 完全一致,在 真实标签 和 预测值之间的差异外 使用的是 L1 范式(绝对值)。

        在 sklearn 中,使用 命令 from sklearn.metrics import mean_absolute_error 来调用 MAE,同时,也可以使用交叉验证中的 scoring="neg_mean_absolute _error",以此在 交叉验证时调用 MAE。

2. 是否拟合到了足够的信息

        这张图,其中 红色线 是真实标签,而 蓝色线 是拟合模型。对于 这样的一个 拟合模型,如果使用 MSE 来对它 进行判断,它的 MSE 会很小,因为 大部分 样本其实都 被完美拟合了,少数样本的 真实值 和 预测值 的巨大 差异在 被均分到 每个样本上之后,MSE 就会很小。但 这样的 拟合结果 必然不是一个 好结果,因为 一旦新样本 是处于 拟合曲线的 后半段的,预测结果 必然会有巨大的偏差。

        我们定义了 R^2 来帮助我们:

         其中 y 是真实标签,\hat{y_i} 是预测结果,\overline{y} 是均值,y_i-\overline{y} 如果除以 样本量 m 就是方差。方差的 本质 是 任意一个 y 值和样本均值的 差异,差异越大,这些值所带的 信息越多。在 R^2 中,分子 是真实值 和 预测值之差的 差值,也就是 模型没有捕获到的 信息总量,分母 是真实标签 所带的 信息量,所以其衡量的是 1 - 我们的模型没有捕获到的信息量占真实标签中所带的信息量的比例,所以,R^2 越接近 1 越好

        R^2 可以使用三种方式来调用:① 直接从 metrics 中导入 r2_score,输入 预测值和真实值 后打分。② 直接 从线性回归 LinearRegression 的的接口 score 来进行调用。③ 是在交叉验证中,输入 “r2” 来调用。

七、sklearn中的线性回归(自查)

        涉及模块:linear_model

类 / 函数含义
普通线性回归
linear_model.LinearRegression
使用普通最小二乘法的线性回归
岭回归
linear_model.Ridg
一种将 L2 作为正则化工具的线性最小二乘回归
linear_model.RidgeCV
带交叉验证的岭回归
linear_model.RidgeClassifier
岭回归的分类器
linear_model.RidgeClassifierCV
带交叉验证的岭回归的分类器
linear_model.ridge_regression
【函数】用正太方程法求解岭回归
LASSO
linear_model.Lasso
使用 L1 作为正则化工具来训练的线性回归模型
linear_model.LassoCV
带交叉验证和正则化迭代路径的 Lasso
linear_model.LassoLars
使用最小角度回归求解的 Lasso
linear_model.LassoLarsCV
带交叉验证的使用最小角度回归求解的 Lasso
linear_model.LassoLarsIC
使用 BIC 或 AIC 进行模型选择的,使用最小角度回归求解的Lasso
linear_model.MultiTaskLasso
使用 L1 / L2 混合范数作为正则化工具训练的多标签Lasso
linear_model.MultiTaskLassoCV
使用 L1 / L2 混合范数作为正则化工具训练的,带交叉验证的多标签 Lasso
linear_model.lasso_path
【函数】用坐标下降计算 Lasso 路径
弹性网
linear_model.ElasticNet
一种将 L1 和 L2 组合作为正则化工具的线性回归
linear_model.ElasticNetCV
带交叉验证和正则化迭代路径的弹性网
linear_model.MultiTaskElasticNet
多标签弹性网
linear_model.MultiTaskElasticNetCV
带交叉验证的多标签弹性网
linear_model.enet_path
【函数】用坐标下降法计算弹性网的路径
最小角度回归
linear_model.Lars
最小角度回归(Least Angle RegressionLAR
linear_model.LarsCV
带交叉验证的最小角度回归模型
linear_model.lars_path
【函数】使用 LARS 算法计算最小角度回归路径或 Lasso 的路径
正交匹配追踪
linear_model.OrthogonalMatchingPursuit
正交匹配追踪模型(OMP
linear_model.OrthogonalMatchingPursuitCV
交叉验证的正交匹配追踪模型(OMP
linear_model.orthogonal_mp
【函数】正交匹配追踪(OMP
linear_model.orthogonal_mp_gram
【函数】Gram正交匹配追踪(OMP
贝叶斯回归
linear_model.ARDRegression
贝叶斯  ARD  回归。 ARD  是自动相关性确定回归( Automatic Relevance Determination
Regression ),是一种类似于最小二乘的,用来计算参数向量的数学方法。
linear_model.BayesianRidge
贝叶斯岭回归
其他回归
linear_model.PassiveAggressiveClassifier
被动攻击性分类器
linear_model.PassiveAggressiveRegressor
被动攻击性回归
linear_model.Perceptron
感知机
linear_model.RANSACRegressor
RANSACRANdom SAmple Consensus)算法。
linear_model.HuberRegressor
胡博回归,对异常值具有鲁棒性的一种线性回归模型
linear_model.SGDRegressor
通过最小化 SGD 的正则化损失函数来拟合线性模型
linear_model.TheilSenRegressor
Theil-Sen 估计器,一种鲁棒的多元回归模型

  • 14
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用sklearn进行线性回归的代码示例: ```python import numpy as np import matplotlib.pyplot as plt from sklearn.linear_model import LinearRegression # 生成数据 x_data = np.linspace(-0.5, 0.5, 200) noise = np.random.normal(0, 0.02, x_data.shape) y_data = np.square(x_data) + noise # 创建线性回归模型 model = LinearRegression() # 拟合数据 model.fit(x_data.reshape(-1, 1), y_data) # 预测 y_pred = model.predict(x_data.reshape(-1, 1)) # 绘制散点图和回归线 plt.scatter(x_data, y_data) plt.plot(x_data, y_pred, color='red') plt.show() ``` 这段代码首先导入了必要的库,然后生成了一组带有噪声的数据。接下来,创建了一个线性回归模型,并使用`fit`方法拟合数据。最后,使用模型进行预测,并绘制出散点图和回归线。 #### 引用[.reference_title] - *1* [线性回归sklearn代码实现](https://blog.csdn.net/LOLUN9/article/details/105718425)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [机器学习之Python Sklearn——线性回归](https://blog.csdn.net/ljinddlj/article/details/125087428)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值