数据分析:基于聚类的LASSO预测模型包----clustlasso

news2024/12/27 11:34:20

介绍

clustlasso是结合lasso和cluster-lasso策略的R包,并发表在Interpreting k-mer based signatures for antibiotic resistance prediction

标准交叉验证lasso分类或回归流程如下:

  1. 选择交叉验证数据集(数据分割);
  2. 选择最佳模型(训练参数);
  3. 测试集评估模型效能(确定最终模型);

通过看源代码发现相比标准的lasso聚类或回归它多了一个cluster的过程,通过比较自变量之间的相关系数大小进行聚类分析。

加载R包和数据

上gitlab下载该包的tar.gz文件,然后本地安装软件(可适用于windows和Linux)。

install.packages("NMF")
install.packages("D:/Downloads/clustlasso-master.tar.gz", repos = NULL, type = "source")

suppressWarnings(suppressMessages(library(clustlasso)))

加载所需要数据

# specify / set random seed
seed = 42
set.seed(seed)
# load example dataset
input.file = system.file("data", "NG-dataset.Rdata", package = "clustlasso")
load(input.file)

以及80%和20%切割数据集合

# pick 20% for test
test.frac = 0.2
# stratify by origin / population structure
ind.by.struct = split(seq(nrow(meta)), meta$pop_structure)
ind.sample = sapply(ind.by.struct, function(x) {
sample(x, round(test.frac * length(x)))
})
ind.test = unlist(ind.sample)
# split
X.test = X[ind.test, ]
y.test = y[ind.test]
meta.test = meta[ind.test, ]
X.train = X[-ind.test, ]
y.train = y[-ind.test]
meta.train = meta[-ind.test, ]

标准交叉验证lasso过程

该过程没有使用cluster方法。

  1. 选择交叉验证数据集(数据分割);
  2. 选择最佳模型(训练参数);
  3. 测试集评估模型效能(确定最终模型);

Cross-validattion process

交叉验证的目的是训练模型参数,调参的对象是lasso模型的lambda参数。可以设置n.folds和n.repeat参数。

# specify cross-validation parameters
n.folds = 10
n.lambda = 100
n.repeat = 3
# run cross-validation process
cv.res.lasso = lasso_cv(X.train, y.train, subgroup = meta.train$pop_structure, 
      n.lambda = n.lambda, n.folds = n.folds, n.repeat = n.repeat, 
      seed = seed, verbose = FALSE)

最佳参数展示show_cv_overall(modsel.criterion+best.eps)。模型标准和最佳特征均展示出来。

par(mfcol = c(1, 3))
show_cv_overall(cv.res.lasso, modsel.criterion = "balanced.accuracy.best", best.eps = 1)

Selecting the best model

最佳模型根据modsel.criterion参数确定,该参数可根据auc和balanced.accuracy.best确定。

layout(matrix(c(1, 2, 3), nrow = 1, byrow = TRUE), width = c(0.3, 0.3, 0.4), height = c(1))
perf.best.lasso = show_cv_best(cv.res.lasso, modsel.criterion = "balanced.accuracy.best", best.eps = 1, method = "lasso")

# print cross-validation performance of best model
print(perf.best.lasso)

提取最佳模型extract_best_model.

best.model.lasso = extract_best_model(cv.res.lasso, modsel.criterion = "balanced.accuracy.best", best.eps = 1)

Making predictions and measuring performance

根据上一步选择的最佳模型应用于测试集,进而评估模型的效能。

# make predictions
preds.lasso = predict_clustlasso(X.test, best.model.lasso)
# compute performance
perf.lasso = compute_perf(preds.lasso$preds, preds.lasso$probs, y.test)
# print
print(t(perf.lasso$perf))

可视化结果

par(mfcol = c(1, 2))
plot(perf.lasso$roc.curves[[1]], lwd = 2, main = "lasso - test set ROC curve")
grid()
plot(perf.lasso$pr.curves[[1]], lwd = 2, main = "lasso - test set precision / recall curve")
grid()

总结:调参后选择最佳参数确定最终模型对分类器构建至关重要,这里选择balanced.accuracy.best而没有选择auc(大家可以试试auc的结果如何)。

Cluster-lasso过程

与上面标准lasso流程类似,但增加了cluster过程。

Cross-validattion process

该过程多增加了screen.threshclust.thresh,该参数用于cluster过程。

# specify cross-validation parameters
n.folds = 10
n.lambda = 100
n.repeat = 3

# specify screening and clustering thresholds
screen.thresh = 0.95
clust.thresh = 0.95

# run cross-validation process
cv.res.cluster = clusterlasso_cv(X.train, y.train, subgroup = meta.train$pop_structure,
        n.lambda = n.lambda, n.folds = n.folds, n.repeat = n.repeat,
        seed = seed, screen.thresh = screen.thresh, clust.thresh = clust.thresh,
verbose = FALSE)

par(mfcol = c(1, 3))
show_cv_overall(cv.res.cluster, modsel.criterion = "balanced.accuracy.best",
best.eps = 1)

Selecting the best model

layout(matrix(c(1, 2, 3, 4, 4, 4), nrow = 2, byrow = TRUE), width = c(0.3,0.3, 0.4), height = c(0.6, 0.4))
perf.best.cluster = show_cv_best(cv.res.cluster, modsel.criterion = "balanced.accuracy.best",
          best.eps = 1, method = "clusterlasso")

# print cross-validation performance of best model
print(perf.best.cluster)

best.model.cluster = extract_best_model(cv.res.cluster, modsel.criterion = "balanced.accuracy.best",
best.eps = 1, method = "clusterlasso")

Making predictions and measuring performance

# make predictions
preds.cluster = predict_clustlasso(X.test, best.model.cluster,
method = "clusterlasso")
# compute performance
perf.cluster = compute_perf(preds.cluster$preds, preds.cluster$probs, y.test)
# print
print(t(perf.cluster$perf))

比较两类方法的结果

比较standard lasso和cluster-lasso 方法在测试集上的预测效能以及特征的区别。

ROC曲线

plot(perf.lasso$roc.curves[[1]], lwd = 2, main = "test set ROC curves")
points(1 - (perf.lasso$perf$speci)/100, perf.lasso$perf$sensi/100, pch = 19, col = 1, cex = 1.25)
plot(perf.cluster$roc.curves[[1]], lwd = 2, col = 2, add = TRUE)
points(1 - (perf.cluster$perf$speci)/100, perf.cluster$perf$sensi/100,
pch = 17, col = 2, cex = 1.25)
grid()
abline(0, 1, lty = 2)
legend("bottomright", c("lasso", "cluster-lasso"), col = c(1, 2), lwd = 2)

特征

heatmap_correlation_signatures(X, best.model.lasso, best.model.cluster,
              clust.min = 5, plot.title = "features correlation matrix")

Note: 最上面橘色和蓝色分布表示lasso和cluster-lasso选择出来的特征,两者重叠部分较多。从热图聚类结果看,聚类效果和cluster-lasso分类结果类似。

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

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

相关文章

【计算机网络】网络层(作业)

【一】 1、某主机的 IP 地址为 166.199.99.96/19。若该主机向其所在网络发送广播 IP 数据报, 则目的地址可以是(D)。 A. 166.199.99.255B. 166.199.96.255C. 166.199.96.0D. 166.199.127.255 解析: 166.199.99.96/19166.199.0…

YOLOv5初学者问题——用自己的模型预测图片不画框

如题,我在用自己的数据集训练权重模型的时候,在训练完成输出的yolov5-v5.0\runs\train\exp2目录下可以看到,在训练测试的时候是有输出描框的。 但是当我引用训练好的best.fangpt去进行预测的时候, 程序输出的图片并没有描框。根据…

nginx转发的问题

我在项目配置的时候遇到一个问题: 配置了域名转发,且配置了https nginx配置如下: server {listen 443 ssl;server_name yourdomain.com;ssl_certificate /path/to/your/certificate.crt;ssl_certificate_key /path/to/your/private.key;loca…

【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【17】认证服务01

持续学习&持续更新中… 守破离 【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【17】认证服务01 环境搭建验证码倒计时短信服务邮件服务验证码短信形式:邮件形式: 异常机制MD5参考 环境搭建 C:\Windows\System32\drivers\etc\hosts 192.168.…

2024年软件测试面试题,精选100道,内附文档。。。

测试技术面试题 1、我现在有个程序,发现在 Windows 上运行得很慢,怎么判别是程序存在问题还是软硬件系统存在问题? 2、什么是兼容性测试?兼容性测试侧重哪些方面? 3、测试的策略有哪些? 4、正交表测试用…

lua中判断2个表是否相等

当我们获取 table 长度的时候无论是使用 # 还是 table.getn 其都会在索引中断的地方停止计数,而导致无法正确取得 table 的长度,而且还会出现奇怪的现象。例如:t里面有3个元素,但是因为最后一个下表是5和4,却表现出不一…

mac M2芯片系统版本macOS Sonoma14.4.1 Navicat Premium意外退出问题,报错:Translated Report (Full Report Below)

前言 Mac电脑正在使用的navicat客户端突然闪退了!!!! 之前用的好好的。做了可能影响navicat客户端闪退的事情就是把电脑系统升级到了macOS Sonoma14.4.1。后悔莫及~ 现象:navicat能正常创建连接&#xff0…

大数据处理引擎选型之 Hadoop vs Spark vs Flink

随着大数据时代的到来,处理海量数据成为了各个领域的关键挑战之一。为了应对这一挑战,多个大数据处理框架被开发出来,其中最知名的包括Hadoop、Spark和Flink。本文将对这三个大数据处理框架进行比较,以及在不同场景下的选择考虑。…

【AI是在帮助开发者还是取代他们?】AI与开发者:合作与创新的未来

目录 前言一、AI工具现状(一)GitHub Copilot(二)TabNine 二、AI对开发者的影响(一)影响和优势(二)新技能和适应策略(三)保持竞争力的策略 三、AI开发的未来&a…

CAS操作

CAS 全称:Compare and swap,能够比较和交换某个寄存器中的值和内存中的值,看是否相等,如果相等,则把另外一个寄存器中的值和内存进行交换. (这是一个伪代码,所以这里的&address实际上是想要表示取出address中的值) 那么我们可以看到,CAS就是这样一个简单的交换操作,那么…

为什么网上商店需要翻译成其他语言

网上商店不仅仅是一个可以买到商品的网站。它是一个完整的电子商务平台,为来自世界各地的用户提供购买所需物品的机会。但是,为了让这些用户舒适地使用网站,需要高质量的翻译和本地化。 本地化是指产品或服务适应特定文化或市场的过程。它包…

app单页下载页源码带管理后台

新版带后台管理APP应用下载页,自动识别安卓苹果下载页,带管理后台,内置带3套App下载模板带中文模板/英文模板随时切换。 app单页下载页源码带管理后台

从头开始构建 RAG 的 LLM 代理:综合指南

GPT-3、GPT-4 等 LLM 及其开源版本经常难以检索最新信息,有时会产生幻觉或不正确的信息。 检索增强生成 (RAG)是一种将 LLM 的强大功能与外部知识检索相结合的技术。RAG 使我们能够将 LLM 响应建立在事实、最新的信息之上,从而显著提高 AI 生成内容的准…

java基础:流程控制

一、用户交互Scanner (一)基础 1、概念:基本语法中我们并没有实现程序和人的交互,但是Java给我们提供了这样一个工具类,我们可以获取用户的输入。java.util.Scanner 是 Java5的新特征,我们可以通过Scanne…

MySQL安装与环境配置

1.打开安装程序 2.默认配置,如下二三图 3.配置密码 4.等待安装完毕 5.检查 6.配置环境变量 7.从控制台登录检测

Let‘s Encrypt 申请免费 SSL 证书(每隔60天自动更新证书)

文章目录 官网文档简介安装 Nginxacme.sh生成证书智能化生成证书 安装证书查看已安装证书更新证书 官网 https://letsencrypt.org/zh-cn/ 文档 https://letsencrypt.org/zh-cn/docs/ 简介 Let’s Encrypt 是一个非营利组织提供的免费SSL/TLS证书颁发机构,旨在促…

Vue2和Vue3的区别Vue3的组合式API

一、Vue2和Vue3的区别 1、创建方式的不同: (1)、vue2:是一个构造函数,通过该构造函数创建一个Vue实例 new Vue({})(2)、Vue3:是一个对象。并通过该对象的createApp()方法,创建一个vue实例。 Vue…

X86 +PC104+支持WinCE5.0,WinCE6.0,DOS,Win2000,WinXP, Linux,QNX等操作系统,工业控制板卡定制

Celeron N2807 PC104模块 规格产品类型PC/104 主板芯片组SOCCPUIntel Celeron N2807 1.58 GHz内存板载2GB DDR3L双通道内存BIOSAMI 显示 L V D S 18/24-bit,VGA L V D S 支持最大分辨率为 1366768,VGA 支持最大分辨率为20481024 支持双独立显示存储 1Min…

软考《信息系统运行管理员》-2.3信息系统运维的外包

2.3信息系统运维的外包 信息系统运维外包的概念/模式 也称为信息系统代维。是指信息系统使用单位将全部或一部分的信息系统维护服务工作,按照规定的维护服务要求,外包委托给专业公司管理。 完全外包运维模式部分外包模式 信息系统运维外包的好处 有利…

告别PS修图,设计师都在用的AI抠图工具

引言 大家好!如果你是美工或设计师,肯定深知Photoshop修图的繁琐和耗时。现在有一款超方便的工具,让你摆脱这些问题——千鹿设计助手。它不仅是个抠图工具,还能通过先进的AI技术,让抠图变得简单快速,让你专…