python-LASSO回归模型

article/2025/9/28 22:02:07

https://zhuanlan.zhihu.com/p/76055830

这里写图片描述

LASSO回归模型的应用

①可视化方法确定\lambda

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
from sklearn import model_selection
from sklearn.linear_model import Lasso, LassoCV
font = {'family': 'FangSong','weight': 'bold','size': 12
}
matplotlib.rc("font", **font)
# 读取糖尿病数据集
diabetes = pd.read_excel('./data/diabetes.xlsx')
# 构造自变量(剔除患者性别、年龄和因变量)
predictors = diabetes.iloc[:, 2: -1]
# 将数据集拆分成训练集和测试集
x_train, x_test, y_train, y_test = model_selection.train_test_split(predictors, diabetes['Y'], test_size=0.2, random_state=1234)
'''
可视化方法确定λ的值
'''
# 构造不同的Lambda值
Lambdas = np.logspace(-5, 2, 200)
# 构造空列表,用于存储模型的偏回归系数
lasso_cofficients = []
for Lambda in Lambdas:lasso = Lasso(alpha=Lambda, normalize=True, max_iter=10000)lasso.fit(x_train, y_train)lasso_cofficients.append(lasso.coef_)
'''
可视化方法确定λ的值
'''
# 绘制Lambda与回归线的折线图
plt.plot(Lambdas, lasso_cofficients)
# 对x轴做对数变换
plt.xscale('log')
# 设置折线图x轴和y轴标签
plt.xlabel('Lambda')
plt.ylabel('Cofficients')
# 显示图形
plt.show()

②交叉验证法确定λ的值

# LASSO回归模型的交叉验证
lasso_cv = LassoCV(alphas=Lambdas, normalize=True, cv=10, max_iter=10000)
lasso_cv.fit(x_train, y_train)
# 输出最佳的lambda值
lasso_best_alpha = lasso_cv.alpha_  # 0.06294988990221888
print(lasso_best_alpha)

③模型的预测


# 基于最佳的lambda值建模
lasso = Lasso(alpha=lasso_best_alpha, normalize=True, max_iter=10000)
# 对"类"加以数据实体,执行回归系数的运算
lasso.fit(x_train, y_train)
# 返回LASSO回归的系数
res = pd.Series(index=['Intercept'] + x_train.columns.tolist(), data=[lasso.intercept_] + lasso.coef_.tolist())
'''
Intercept   -278.560358
BMI            6.188602
BP             0.860826
S1            -0.127627
S2            -0.000000
S3            -0.488408
S4             0.000000
S5            44.487738
S6             0.324076
系数中含有两个0,分别是S2和S4,说明这两个变量对糖尿病指数Y没有显著意义
'''
print(res)
# 模型预测
lasso_predict = lasso.predict(x_test)
# 验证预测效果
from sklearn.metrics import mean_squared_error
RMSE = np.sqrt(mean_squared_error(y_test, lasso_predict))  # 53.061437258225745
print(RMSE)

用线性回归做比较

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
from sklearn import model_selection
from statsmodels import api as sms
from sklearn.metrics import mean_squared_error
font = {'family': 'FangSong','weight': 'bold','size': 12
}
matplotlib.rc("font", **font)
# 读取糖尿病数据集
diabetes = pd.read_excel('./data/diabetes.xlsx')
# 构造自变量(剔除患者性别、年龄和因变量)
predictors = diabetes.iloc[:, 2: -1]
# 将数据集拆分成训练集和测试集
x_train, x_test, y_train, y_test = model_selection.train_test_split(predictors, diabetes['Y'], test_size=0.2, random_state=1234)
# 为自变量x添加常数列1,用于拟合截距项
x_train2 = sms.add_constant(x_train)
x_test2 = sms.add_constant(x_test)
# 构建多元线性回归模型
liner = sms.formula.OLS(y_train, x_train2).fit()
# 返回线性回归模型的系数
params = liner.params
'''
const   -406.699716
BMI        6.217649
BP         0.948245
S1        -1.264772
S2         0.901368
S3         0.962373
S4         6.694215
S5        71.614661
S6         0.376004
dtype: float64
'''
print(params)
# 模型预测
linear_predict = liner.predict(x_test2)
# 预测效果验证
RMSE = np.sqrt(mean_squared_error(y_test, linear_predict))  # 53.42623939722992
print(RMSE)

 

 

 

 


http://chatgpt.dhexx.cn/article/0pEJjNQk.shtml

相关文章

Lasso模型

Lasso是一种数据降维方法,该方法不仅适用于线性情况,也适用于非线性情况。Lasso是基于惩罚方法对样本数据进行变量选择,通过对原本的系数进行压缩,将原本很小的系数直接压缩至0,从而将这部分系数所对应的变量视为非显著…

Lasso算法理论介绍

先看一波过拟合: 图中,红色的线存在明显的过拟合,绿色的线才是合理的拟合曲线,为了避免过拟合,我们可以引入正则化。 下面可以利用正则化来解决曲线拟合过程中的过拟合发生,存在均方根误差也叫标准误差&…

Lasso回归系列二:Lasso回归/岭回归的原理

Lasso回归/岭回归的原理 在学习L1,L2正则化的作用和区别时,我们总是会看到这样的一副图片: 这幅图片形象化地解释了L1,L2对线性模型产生的不同的约束效果。 我最开始其实是不太理解为什么要这么画的。比如 1、L1范数(L1-norm)等…

回归问题-Lasso回归

Lasso(Least absolute shrinkage and selection operator)方法是以缩小变量集(降阶)为思想的压缩估计方法。它通过构造一个惩罚函数,可以将变量的系数进行压缩并使某些回归系数变为0,进而达到变量选择的目的。 正则化 正则化&am…

Lasso回归

维数灾难 高维数据 何谓高维数据?高维数据指数据的维度很高,甚至远大于样本量的个数。高维数据的明显的表现是:在空间中数据是非常稀疏的,与空间的维数相比样本量总是显得非常少。 在分析高维数据过程中碰到最大的问题就是维数…

1.1.3. Lasso(套索回归)

1.1.3. Lasso 一、简介 首先,Lasso同样是线性回归的一种变体。而文档中指出,它是一种能让参数 ω \omega ω稀疏的模型(作用)。它是压缩感知领域的基础(地位),在特定情况下,它可以“…

【机器学习】Lasso模型

一、引言 1.1 高维数据 何谓高维数据?高维数据指数据的维度很高,甚至远大于样本量的个数。高维数据的明显的表现是:在空间中数据是非常稀疏的,与空间的维数相比样本量总是显得非常少。 在分析高维数据过程中碰到最大的问题就是维…

多元线性回归-Lasso

目录 1.Lasso与多重共线性 2. Lasso的核心作用:特征选择 3. 选取最佳的正则化参数取值 1.Lasso与多重共线性 Lasso全称最小绝对收缩和选择算子(Least absolute shrinkage and selection operator),由于这个名称过于复杂所以简称为Lasso,和…

Lasso线性回归学习笔记(公式与代码实现)

目录 Lasso线性回归学习笔记(公式与代码实现)1 为什么要在线性回归中引入正则化项(简介)2 常见正则化项3 损失函数图像与正则化之后的图像3.1损失函数图像3.2 加了 L~1~ 正则项之后的损失函数图像 4 L~1~ 范数正则化的解中有更多零…

机器学习算法系列(五)- Lasso回归算法(Lasso Regression Algorithm)

阅读本文需要的背景知识点:线性回归算法、一丢丢编程知识 最近笔者做了一个基于人工智能实现音乐转谱和人声分离功能的在线应用——反谱(Serocs),感兴趣的读者欢迎试用与分享,感谢您的支持!serocs.cn 一、…

学习机器学习和深度学习的方法和步骤

学习机器学习和深度学习的方法和步骤 相信很多人都在找学习机器学习和深度学习的步骤和教程。作为过来人和大家一起交流一下。 我自己制作的一个思维导图希望对大家有帮助。

机器学习算法介绍

前言 谷歌董事长施密特曾说过:虽然谷歌的无人驾驶汽车和机器人受到了许多媒体关注,但是这家公司真正的未来在于机器学习,一种让计算机更聪明、更个性化的技术。 也许我们生活在人类历史上最关键的时期:从使用大型计算机&#xf…

机器学习之【提升方法】

机器学习【提升方法】 一、Adaboost的起源1.强可学习与弱可学习 二、怎样实现弱学习转为强学习1.怎样获得不同的弱分类器?BaggingBagging的弊端 2.怎样组合弱分类器? 三、Adaboost的提出四、Adaboost的基本概念五、Adaboost算法六、示例七、Boosting illustration 一、Adaboo…

(四)机器学习方法的分类

文章目录 一、监督学习二、非监督学习三、半监督学习四、增强学习五、机器学习的其他分类1. 批量学习(Batch Learning)2. 在线学习(Online Learning)3. 参数学习(Parametric Learning)4. 非参数学习 在上一…

【机器学习】之机器学习方法的分类

1,监督学习 给机器的训练数据拥有标记和答案 例如: 图像已经积累了标定信息银行已经积累了客户的信息和信用卡的信息 2,非监督学习 给机器的训练数据没有标记或答案 对没有标记的数据进行分类 – 聚类分析 对数据进行降维处理 特征提取…

机器学习常用方法

在本篇文章中,我将对机器学习做个概要的介绍。本文的目的是能让即便完全不了解机器学习的人也能了解机器学习,并且上手相关的实践。这篇文档也算是EasyPR开发的番外篇,从这里开始,必须对机器学习了解才能进一步介绍EasyPR的内核。…

机器学习的几种学习方式

根据数据类型的不同,对一个问题的建模有不同的方式,人们首先会考虑算法的学习方式。将算法按照学习方式分类可以让人们在建模和算法选择时,根据输入数据来选择最合适的算法,从而获得最好的结果。 在机器学习领域,有以…

机器学习--机器学习的基本方法

文章目录 1.1统计分析1.1.1 统计基础1.1.2 常见的概率分布2.1.3参数估计1.1.4 假设与检验1.1.5线性回归1.1.6逻辑回归1.1.7判别分析1.1.8 非线性判决 1.1统计分析 统计学是研究如何收集资料,整理资料和进行量化分析,判断的一门学科。在科学计算&#xf…

机器学习的四种学习方法

文章目录 监督学习(Supervised Learning)无监督学习(Unsupervised Learning)半监督学习(Semi-supervised Learning)强化学习(Reinforcement Learning)应用 监督学习(Supervised Learning&#x…

机器学习方法的基本分类

目录 1、监督学习(supervised learning) 2、无监督学习(unsupervised learning) 3、强化学习(reinforcement learning) 4、半监督学习(semi-supervised learning)与主动学习&…