第100+20步 ChatGPT学习:R实现Lasso回归

news2024/12/23 18:26:25

基于R 4.2.2版本演示

一、写在前面

花了好几期分享了使用R语言实现机器学习分类,基本把常见模型都讲完了。

最后就以Lasso回归收尾得了。

Lasso回归应该很出名了,做特征变量筛选的,因此,不过多介绍。

二、R代码实现Lasso回归

(1)导入数据

我习惯用RStudio自带的导入功能:

(2)建立Lasso回归模型(默认参数)

# 安装并加载 glmnet 库(如果尚未加载)
# install.packages("glmnet")
library(glmnet)
library(ggplot2)

# 准备数据
x_train <- model.matrix(~ . -X, data = trainData)
y_train <- as.numeric(trainData$X) - 1

# 训练 LASSO 回归模型
lassoModel <- glmnet(x_train, y_train, family = "binomial", alpha = 1)

# 使用交叉验证找到最优 lambda 值
cv_lasso <- cv.glmnet(x_train, y_train, family = "binomial", type.measure = "mse", alpha = 1)

# 选择一个 lambda 值
lambda_min <- cv_lasso$lambda.min
lambda_1se <- cv_lasso$lambda.1se

# 输出最优 lambda 值
cat("Lambda.min:", lambda_min, "\n")
cat("Lambda.1se:", lambda_1se, "\n")

# 提取系数(使用 lambda.min)
coef_lasso <- coef(cv_lasso, s = "lambda.min")

# 转换为数据框并过滤非零系数
coef_lasso_matrix <- as.matrix(coef_lasso)

# 提取非零系数(忽略截距)
important_features <- coef_lasso_matrix[coef_lasso_matrix[, 1] != 0, , drop = FALSE]

# 显示重要特征
print("Important Features from LASSO Regression:")
print(important_features)

结果输出:

把每一个特征的重要性进行了量化输出。

三、Lasso回归结果可视化

下一步,就是如何把Lasso回归模型的输出可视化,这里有几种方式:

(1)柱状图

# 创建一个数据框用于图形展示
important_features_df <- data.frame(
  Feature = rownames(important_features),
  Coefficient = important_features[, 1]
)
# 绘制重要特征的系数图
ggplot(important_features_df, aes(x = reorder(Feature, Coefficient), y = Coefficient)) +
  geom_col(fill = "steelblue") +
  labs(title = "Important Features in LASSO Model",
       x = "Feature",
       y = "Coefficient") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 65, hjust = 1))

输出:

(2)棒棒糖图

# 绘制棒棒糖图展示系数
ggplot(important_features_df, aes(x = reorder(Feature, Coefficient), y = Coefficient)) +
  geom_segment(aes(x = Feature, xend = Feature, y = 0, yend = Coefficient), color = "grey") +
  geom_point(size = 3, color = "blue") +
  labs(title = "Lollipop Chart of LASSO Coefficients",
       x = "Feature",
       y = "Coefficient") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 65, hjust = 1))

输出:

(3)Coefficient Path

library(glmnet)

# 准备数据
# 确保 data$X 已被转换为因子
x_train <- model.matrix(~ . - X, data = trainData)
y_train <- as.numeric(trainData$X) - 1

# 训练 LASSO 回归模型,允许 glmnet 自动生成 lambda 序列
lassoModel <- glmnet(x_train, y_train, family = "binomial", alpha = 1)

# 绘制系数路径图,确保使用变量名称作为标签
plot(lassoModel, xvar = "lambda", label = TRUE, xlab = "Log(Lambda)", ylab = "Coefficients")

# 添加图表标题
title("Coefficient Path for LASSO Model")

输出:

至于上述结果怎么看,自行GPT啦。

四、最后

至于怎么安装,自学了哈。

数据嘛:

链接:https://pan.baidu.com/s/1rEf6JZyzA1ia5exoq5OF7g?pwd=x8xm

提取码:x8xm

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1990934.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

OceanBase V4.2特性解析:MySQL模式下GIS空间表达式的场景及能力解析

1. 背景 1.1. OceanBase Mysql gis空间表达式的应用场景及能力 在OceanBase 4.1版本中&#xff0c;mysql模式下支持了gis数据类型以及部分空间对象相关的表达式&#xff0c;随着客户使用空间数据的需求日益增长&#xff0c;需要快速地补齐空间数据存储和计算分析的能力&#…

简单分享下Python进程

1. 单进程与多进程 理论讲解&#xff1a; 进程是操作系统中资源分配的基本单位&#xff0c;每个进程都有独立的内存空间。 多进程允许同时运行多个进程&#xff0c;提高CPU利用率和程序响应速度。 示例代码&#xff1a; import os print("当前进程ID:", os.getp…

【适配器模式】设计模式: 穿越接口的时空隧道(架起接口间的桥梁)

文章目录 Java 设计模式之适配器模式&#xff1a;理论与实践1. 引言1.1 结构型模式介绍1.2 为什么需要适配器模式&#xff1f; 2. 适配器模式概述2.1 定义2.2 关键概念2.3 适配器模式的类型 3. 适配器模式的参与者4. 适配器模式的工作原理4.1 类适配器模式的工作流程4.2 对象适…

CSS基础 - CSS3

目录 A. 简介 B. 基础用法 C. 总结 A. 简介 CSS3 是 CSS&#xff08;层叠样式表&#xff09;技术的升级版本。 一、新特性概述 选择器增强 CSS3 引入了更多强大的选择器&#xff0c;使得开发者能够更精确地选择和样式化网页元素。例如&#xff0c;属性选择器可以根据元素…

Golang | Leetcode Golang题解之第329题矩阵中的最长递增路径

题目&#xff1a; 题解&#xff1a; var (dirs [][]int{[]int{-1, 0}, []int{1, 0}, []int{0, -1}, []int{0, 1}}rows, columns int )func longestIncreasingPath(matrix [][]int) int {if len(matrix) 0 || len(matrix[0]) 0 {return 0}rows, columns len(matrix), len(m…

仓颉编程入门 -- 循环语句详解

仓颉编程入门 – 循环语句 一 . while 表达式 while 表达式的基本形式为&#xff1a; while (条件) {循环体 }注意事项 : 其中“条件”是布尔类型表达式&#xff0c;“循环体”是一个代码块。while 表达式将按如下规则执行&#xff1a; 计算“条件”表达式&#xff0c;如果…

计算机毕业设计选题推荐-电缆行业生产管理系统-Java/Python项目实战

✨作者主页&#xff1a;IT研究室✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

LabVIEW软件开发的未来是什么?

LabVIEW软件开发的未来展望可以从以下几个方面进行分析&#xff1a; 1. 与硬件集成的进一步增强 LabVIEW一贯以其与硬件的紧密集成而著称&#xff0c;未来这一优势将进一步得到强化。随着物联网&#xff08;IoT&#xff09;设备、工业4.0和智能制造的发展&#xff0c;LabVIEW将…

Mipi SoundWire Spec 详解4.2~4.3

目录 4.2 低层特性 4.2.1 物理接口 4.2.1.1 信号拓扑 4.2.1.2 多数据通道 4.2.1.3 高性能PHY 4.2.2 数据编码 4.2.3 物理信号值和逻辑信号值的术语 4.2.4 对开发和测试低级功能的支持 4.3 控制特性 4.3.1 比特流与帧结构 4.3.1.1 控制字与带宽权衡 4.3.2 同步 4.3.…

今日早报 每日精选15条新闻简报 每天一分钟 知晓天下事 8月8日,星期四

每天一分钟&#xff0c;知晓天下事&#xff01; 2024年8月8日 星期四 农历七月初五 1、 财政部预拨4.65亿元资金支持辽宁、吉林等7省&#xff08;市&#xff09;开展应急抢险救灾工作。 2、 2024年“三区”人才支持计划发布&#xff1a;全国将选派15952名教师赴“三区”。 3…

什么是三维坐标系?

在研究向量和高级微积分主题时&#xff0c;了解 3D 坐标系非常重要。过去&#xff0c;我们一直在处理平面和矩形坐标。这一次&#xff0c;我们将研究三维坐标系的组成部分和约定。 3D 坐标系使我们能够表示包含三个相互垂直轴的空间中的一个量。通过 3D 坐标系统&#xff0c;我…

计算机网络——网络层(多协议标签交换MPLS、软件定义网络SDN)

多协议标签交换MPLS 多协议标签交换MPLS&#xff08;multiProtocal Label Switching&#xff09;&#xff1a;“多协议”表示在MPLS的上层可以采用多种协议。 MPLS利用面向连接技术&#xff0c;使每个分组携带一个叫作标签的小整数&#xff08;这叫作打上标签&#xff09;。当分…

Linux下终极下载管理器:uGet and aria2

你是否曾在火狐浏览器中点击过下载链接&#xff0c;然后连接中断&#xff0c;不得不从头开始重新下载文件&#xff1f; 这就是 uGet 下载管理器的用武之地。 1&#xff09;uGet 是一款开源的轻量级下载管理器&#xff0c;适用于 Linux、BSD、Android 和 Windows。有了 uGet&a…

Github 2024-08-08 开源项目日报Top10

根据Github Trendings的统计,今日(2024-08-08统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量TypeScript项目5JavaScript项目3Python项目2C#项目1C++项目1Go项目1免费编程学习平台:freeCodeCamp.org 创建周期:3302 天开发语言:TypeScri…

Linux-入门-02

上节我们讲了如何安装虚拟机,本节课讲一些linux的常用命令,首先我们需要做一些配置,我们的centos的镜像是最小版安装,里面什么也没有,所以我们的linux是不能进行联网的,接下来我们就来一步一步联网 1、配置网络 首先我们需要先使用命令查看ip地址,linux中一切皆文件,只能使用命…

opencascade TopoDS_TShape源码学习

opencascade TopoDS_TShape 前言 TShape 是描述二维或三维空间中一组点的拓扑结构。 拓扑形状是由其他形状组成的结构。这是一个延迟类&#xff0c;用于支持拓扑对象。 TShape 由其可选的域&#xff08;几何&#xff09;和组件&#xff08;带有位置和方向的其他 TShape&#…

德国EKKIF高定五金——不断探索全球新材料、新技术和新生活方式

Ekkif Concept品牌理念 “New life” We have always advocated the new concept and lifestyle of "New life". Our design team adheres to the concept of innovation and originality, constantly exploring new materials, technologies, and lifestyles a…

详细分析Linux中的ss命令基本知识(附Demo)

目录 1. 基本知识2. 基本命令2.1 查套接字2.2 查端口 1. 基本知识 ss 用于在 Linux 系统中显示网络套接字统计信息的命令 是 netstat 命令的现代替代品&#xff0c;提供了更快、更详细的输出是 iproute2 套件的一部分&#xff0c;支持许多高级网络功能 基本的功能如下&#…

html+css 实现hover选择按钮

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享htmlcss 绚丽效果&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目…

WEB应用(十四)---文件上传

什么是文件上传漏洞 文件上传是Web应用的常见功能&#xff0c;允许用户上传图片、视频及其他文件类型文件。如果用户上传的是木马文件&#xff0c;则服务器就会收到攻击。 对于这个漏洞的练习有一个专门的靶场&#xff0c;即upload-labs&#xff0c;这个的安装可以在windows中使…