sklearn之岭回归

‘‘‘
    岭回归:
            普通线性回归模型使用基于梯度下降的最小二乘法,在最小化损失函数的前提下,寻找最优模型参数,
            在此过程中,包括少数异常样本在内的全部训练数据都会对最终模型参数造成程度相等的影响,
            异常值对模型所带来影响无法在训练过程中被识别出来。为此,岭回归在模型迭代过程所依据的损失函数中增加了正则项,
            以限制模型参数对异常样本的匹配程度,进而提高模型面对多数正常样本的拟合精度。
    岭回归的目的:
            1>普通线性回归无法识别或者避免异常样本对模型参数的影响,导致在预测时效果查(预测结果偏向于异常样本),岭回归可以通过正则强度的设置
            来减少异常样本对模型参数的影响,从而使得预测结果更偏向于正常样本,提高了模型拟合精度。
            2>加入正则项后,其R2得分肯定会低于普通线性回归,原因:普通线性回归考虑的是全部样本损失函数最小值,而岭回归就是为了避免异常值对预测的影响
            从而刻意减少异常样本在计算中的权重,进而导致其损失函数最小值是大于普通线性回归的损失函数最小值。

  正则强度越大,泛化能力越强
    相关API:
        import sklearn.linear_model as lm
        # 创建模型
        model = lm.Ridge(正则强度,fit_intercept=是否训练截距, max_iter=最大迭代次数)
        # 训练模型
        # 输入:为一个二维数组表示的样本矩阵
        # 输出:为每个样本最终的结果
        model.fit(输入, 输出)
        # 预测输出
        # 输入array是一个二维数组,每一行是一个样本,每一列是一个特征。
        result = model.predict(array)

    示例:加载abnormal.txt文件中的数据,基于岭回归算法训练回归模型。
‘‘‘
import sklearn.linear_model as lm
import numpy as np
import matplotlib.pyplot as mp
import sklearn.metrics as sm

x, y = np.loadtxt(‘./ml_data/abnormal.txt‘, delimiter=‘,‘, unpack=True, usecols=(0, 1))
# 把输入变成二维数组,一行一样本,一列一特征
x = x.reshape(-1, 1)  # 变成n行1列
model = lm.Ridge(150, fit_intercept=True, max_iter=1000)
model.fit(x, y)
pred_y = model.predict(x)  # 把样本x带入模型求出预测y

# 输出模型的评估指标
print(‘平均绝对值误差:‘, sm.mean_absolute_error(y, pred_y))
print(‘平均平方误差:‘, sm.mean_squared_error(y, pred_y))
print(‘中位绝对值误差:‘, sm.median_absolute_error(y, pred_y))
print(‘R2得分:‘, sm.r2_score(y, pred_y))

# 绘制图像
mp.figure("Linear Regression", facecolor=‘lightgray‘)
mp.title(‘Linear Regression‘, fontsize=16)
mp.tick_params(labelsize=10)
mp.grid(linestyle=‘:‘)
mp.xlabel(‘x‘)
mp.ylabel(‘y‘)

mp.scatter(x, y, s=60, marker=‘o‘, c=‘dodgerblue‘, label=‘Points‘)
mp.plot(x, pred_y, c=‘orangered‘, label=‘LR Line‘)
mp.tight_layout()
mp.legend()
mp.show()

输出结果:平均绝对值误差: 1.0717908951634179平均平方误差: 3.7362971803503267中位绝对值误差: 0.696470799282414R2得分: 0.44530850891980656

  

原文地址:https://www.cnblogs.com/yuxiangyang/p/11183051.html

时间: 2024-10-19 16:44:35

sklearn之岭回归的相关文章

python Ridge 回归(岭回归)的原理及应用

岭回归的原理: 首先要了解最小二乘法的回归原理 设有多重线性回归模型   y=Xβ+ε  ,参数β的最小二乘估计为 当自变量间存在多重共线性,|X'X|≈0时,设想|X'X|给加上一个正常数矩阵(k>0) 那么|X'X|+kI 接近奇异的程度就会比接近奇异的程度小得多.考虑到变量的量纲问题, 先要对数据标准化,标准化后的设计矩阵仍用X表示,定义称为的岭回归估计,其中, k称为岭参数.由于假设X已经标准化,所以就是自变量样本相关阵.y可以标准化也可以未标准化, 如果y也经过标准化,那么计算的实际是

岭回归——减少过拟合问题

什么是过拟合?在训练假设函数模型h时,为了让假设函数总能很好的拟合样本特征对应的真实值y,从而使得我们所训练的假设函数缺乏泛化到新数据样本能力. 怎样解决过拟合 过拟合会在变量过多同时过少的训练时发生,我们有两个选择,一是减少特征的数量,二是正则化,今天我们来重点来讨论正则化,它通过设置惩罚项让参数θ足够小,要让我们的代价函数足够小,就要让θ足够小,由于θ是特征项前面的系数,这样就使特征项趋近于零.岭回归与Lasso就是通过在代价函数后增加正则化项. 多元线性回归损失函数: 岭回归回归代价函数:

Python之岭回归

实现:# -*- coding: UTF-8 -*- import numpy as npfrom sklearn.linear_model import Ridge __author__ = 'zhen' X = 2 * np.random.rand(100, 1)y = 4 + 3 * X + np.random.randn(100, 1)# 岭回归ridge_reg = Ridge(alpha=1, solver='sag')ridge_reg.fit(X, y)print("="

最小二乘回归,岭回归,Lasso回归,弹性网络

普通最小二乘法 理论: 损失函数: 权重计算: 1.对于普通最小二乘的系数估计问题,其依赖于模型各项的相互独立性. 2.当各项是相关的,且设计矩阵 X的各列近似线性相关,那么,设计矩阵会趋向于奇异矩阵,这会导致最小二乘估计对于随机误差非常敏感,产生很大的方差. 例如,在没有实验设计的情况下收集到的数据,这种多重共线性(multicollinearity)的情况可能真的会出现. 使用: from sklearn import datasets, linear_model regr = linear

吴裕雄 数据挖掘与分析案例实战(7)——岭回归与LASSO回归模型

# 导入第三方模块import pandas as pdimport numpy as npimport matplotlib.pyplot as pltfrom sklearn import model_selectionfrom sklearn.linear_model import Ridge,RidgeCV # 读取糖尿病数据集diabetes = pd.read_excel(r'F:\\python_Data_analysis_and_mining\\08\\diabetes.xlsx

通俗易懂--岭回归(L2)、lasso回归(L1)、ElasticNet讲解(算法+案例)

1.L2正则化(岭回归) 1.1问题 想要理解什么是正则化,首先我们先来了解上图的方程式.当训练的特征和数据很少时,往往会造成欠拟合的情况,对应的是左边的坐标:而我们想要达到的目的往往是中间的坐标,适当的特征和数据用来训练:但往往现实生活中影响结果的因素是很多的,也就是说会有很多个特征值,所以训练模型的时候往往会造成过拟合的情况,如右边的坐标所示. 1.2公式 以图中的公式为例,往往我们得到的模型是: 为了能够得到中间坐标的图形,肯定是希望θ3和θ4越小越好,因为这两项越小就越接近于0,就可以得

机器学习之线性回归、岭回归、Lasso回归

1.回归算法分类算法的目标值是标称型数据,而回归的目标变量是连续型数据,主要包括线性回归,岭回归,lasso回归,前向逐步回归. 2.线性回归线性回归主要用于处理线性数据,结果易于理解,计算复杂度不高,但是处理不了非线性数据.线性回归用最适直线(回归线)去建立因变量Y和一个或多个自变量X之间的关系.可以用公式来表示:Y = wX + b.其中w为权重,也称为回归系数,b为偏置顶. 3.理解线性回归线性回归从高中数学就接触过了,不过我们主要学习二维形式的线性回归,即y = kx + b.其中斜率k

用Python实现岭回归算法与Lasso回归算法并处理Iris数据集

在介绍岭回归算法与Lasso回归算法之前,先要回顾一下线性回归算法.根据线性回归模型的参数估计公式可知可知,得到的前提是矩阵可逆.换句话说就是样本各个特征(自变量)之间线性无关.然而在实际问题中,常常会出现特征之间出现多重共线性的情况,使得行列式的值接近于0,最终造成回归系数无解或者无意义. 为了解决这个问题,岭回归算法的方法是在线性回归模型的目标函数之上添加一个l2的正则项,进而使得模型的回归系数有解.具体的岭回归目标函数可表示为如下: 在Python中,岭回归算法的实现方法如下. 在Pyth

岭回归和lasso回归(转)

回归和分类是机器学习算法所要解决的两个主要问题.分类大家都知道,模型的输出值是离散值,对应着相应的类别,通常的简单分类问题模型输出值是二值的,也就是二分类问题.但是回归就稍微复杂一些,回归模型的输出值是连续的,也就是说,回归模型更像是一个函数,该函数通过不同的输入,得到不同的输出. 那么,什么是线性回归,什么是非线性回归呢? 线性回归与非线性回归 前面说了,我们的回归模型是一个函数是吧,那么线性回归就是模型函数是由若干个基本函数线性加权得到的函数.也就是每一个基本函数前面都有一个权值来调和自己对