当前位置: 首页 > news >正文

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

基于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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • LabVIEW远程开发
  • 为什么要推荐R语言?欢迎订阅专栏《R 探索临床数据科学》
  • 240806-在Linux/RHEL开机中自动启动bash脚本
  • YARN 的介绍
  • Memcached的介绍与详解
  • 升级MacOS(Mojave)后使用git问题
  • 爬虫--模拟登录代理IP
  • Wordpress建站问题记录
  • 【C++】第一讲:入门概论
  • JavaScript 数组之flat和flatMap
  • Vue 3+Vite+Eectron从入门到实战系列之(四)一Electron热身运动(二)
  • mmsegmentation 自定义模型报错:KeyError: ‘EncoderDecoder is not in the model registry
  • 【HBZ分享】bean的生命周期 以及 各个阶段在spring的哪个类被调用
  • Leetcode75-8 递增的三元子序列
  • 在Windows MFC\C++编程中,如何使用OnCopyData函数
  • [数据结构]链表的实现在PHP中
  • [译] 理解数组在 PHP 内部的实现(给PHP开发者的PHP源码-第四部分)
  • 【跃迁之路】【641天】程序员高效学习方法论探索系列(实验阶段398-2018.11.14)...
  • golang中接口赋值与方法集
  • javascript从右向左截取指定位数字符的3种方法
  • MyEclipse 8.0 GA 搭建 Struts2 + Spring2 + Hibernate3 (测试)
  • REST架构的思考
  • Sublime Text 2/3 绑定Eclipse快捷键
  • Vue组件定义
  • yii2中session跨域名的问题
  • 基于阿里云移动推送的移动应用推送模式最佳实践
  • 容器化应用: 在阿里云搭建多节点 Openshift 集群
  • 如何使用 JavaScript 解析 URL
  • 使用SAX解析XML
  • 树莓派 - 使用须知
  • 因为阿里,他们成了“杭漂”
  • 仓管云——企业云erp功能有哪些?
  • 完善智慧办公建设,小熊U租获京东数千万元A+轮融资 ...
  • ​VRRP 虚拟路由冗余协议(华为)
  • ​低代码平台的核心价值与优势
  • # 20155222 2016-2017-2 《Java程序设计》第5周学习总结
  • #gStore-weekly | gStore最新版本1.0之三角形计数函数的使用
  • $.ajax,axios,fetch三种ajax请求的区别
  • (20)docke容器
  • (cljs/run-at (JSVM. :browser) 搭建刚好可用的开发环境!)
  • (C语言)字符分类函数
  • (TOJ2804)Even? Odd?
  • (层次遍历)104. 二叉树的最大深度
  • (二)PySpark3:SparkSQL编程
  • (二)WCF的Binding模型
  • (附源码)spring boot火车票售卖系统 毕业设计 211004
  • (附源码)ssm经济信息门户网站 毕业设计 141634
  • (附源码)计算机毕业设计SSM智能化管理的仓库管理
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (算法)N皇后问题
  • (贪心) LeetCode 45. 跳跃游戏 II
  • (一)【Jmeter】JDK及Jmeter的安装部署及简单配置
  • .L0CK3D来袭:如何保护您的数据免受致命攻击
  • .NET delegate 委托 、 Event 事件,接口回调
  • .NET DevOps 接入指南 | 1. GitLab 安装