首页 > 其他分享 >R:梯度提升器

R:梯度提升器

时间:2024-10-14 14:48:16浏览次数:5  
标签:Sample 梯度 gbm library filter 提升 samples test

# 清空环境变量
rm(list = ls())
setwd("C:\\Users\\Administrator\\Desktop\\machine learning\\LSTM")
library(magrittr)  # 提供 %>% 管道操作符
library(keras)     # 提供 Keras 接口
library(dplyr)
library(caret)

set.seed(123) # 确保结果可复现
# 读取数据
otu <- read.table("genus_otu.txt", sep = "\t", header = TRUE, row.names = 1)
group <- read.table("group.txt", sep = "\t", header = TRUE)
# 合并OTU表和分组数据
otu_transposed <- t(otu) # 转置OTU表,样本作为行,菌属作为列
otu_combined <- merge(group, otu_transposed, by.x = "Sample", by.y = "row.names") # 合并
# 将Gene和Time转为因子(分类变量)
otu_combined$Gene <- as.factor(otu_combined$Gene)
otu_combined$Time <- as.factor(otu_combined$Time)
# 手动选择测试集样本
test_samples <- c("B2W10_1", "B2W8_1", "B2W6_1", "B2W4_1", "M2W10_1", "M2W8_1", "M2W6_1", "M2W4_1")
# "B3W10_1", "B3W8_1", "B3W6_1", "B3W4_1", "M3W10_1", "M3W8_1", "M3W6_1", "M3W4_1",
# 划分训练集和测试集
test_data <- otu_combined %>% filter(Sample %in% test_samples)
train_data <- otu_combined %>% filter(!Sample %in% test_samples)

# 加载gbm包
library(gbm)
#移除无变异的特征
no_variation_cols <- which(apply(train_data[, -1], 2, function(col) length(unique(col)) == 1))
train_data_filtered <- train_data[, -c(1, no_variation_cols + 1)]
test_data_filtered <- test_data[, -c(1, no_variation_cols + 1)]

# 训练GBT模型,预测基因型
gbm_model_gene <- gbm(
  Gene ~ .,                          # 使用所有特征预测基因型
  data = train_data_filtered,           # 去掉样本名称列
  distribution = "multinomial",      # 多分类任务
  n.trees = 1000,                    # 树的数量
  interaction.depth = 3,             # 树的最大深度
  shrinkage = 0.01,                  # 学习率
  cv.folds = 5                       # 5折交叉验证
)

# 使用测试集进行预测
pred_gene <- predict(gbm_model_gene, newdata = test_data[, -1], n.trees = gbm_model_gene$n.trees, type = "response")
write.table(pred_gene, file = "pred_gene.txt", sep = "\t", row.names = TRUE, col.names = NA)

# 将预测结果转换为分类标签
pred_gene_class <- apply(pred_gene, 1, function(x) colnames(pred_gene)[which.max(x)])
write.table(pred_gene_class, file = "pred_gene_class.txt", sep = "\t", row.names = TRUE, col.names = NA)

# 计算准确率
confusionMatrix(as.factor(pred_gene_class), test_data$Gene)

# 特征重要性分析
importance_gene <- summary(gbm_model_gene)
write.table(importance_gene, file = "results.txt", sep = "\t", row.names = TRUE, col.names = NA)

# 训练GBT模型,预测时间点
gbm_model_time <- gbm(
  Time ~ .,                          # 使用所有特征预测时间点
  data = train_data[, -1],           # 去掉样本名称列
  distribution = "multinomial",      # 多分类任务
  n.trees = 1000,                    # 树的数量
  interaction.depth = 3,             # 树的最大深度
  shrinkage = 0.01,                  # 学习率
  cv.folds = 5                       # 5折交叉验证
)
# 查看模型输出
summary(gbm_model_time)

pred_time <- predict(gbm_model_time, newdata = test_data[, -1], n.trees = gbm_model_time$n.trees, type = "response")
pred_time_class <- apply(pred_time, 1, function(x) colnames(pred_time)[which.max(x)])
confusionMatrix(as.factor(pred_time_class), test_data$Time)

# 特征重要性分析
importance_time <- summary(gbm_model_time)
print(importance_time)

 

标签:Sample,梯度,gbm,library,filter,提升,samples,test
From: https://www.cnblogs.com/wzbzk/p/18464203

相关文章

  • 看不懂来打我!让性能提升56%的Vue3.5响应式重构
    前言在Vue3.5版本中最大的改动就是响应式重构,重构后性能竟然炸裂的提升了56%。之所以重构后的响应式性能提升幅度有这么大,主要还是归功于:双向链表和版本计数。这篇文章我们来讲讲使用双向链表后,Vue内部是如何实现依赖收集和依赖触发的。搞懂了这个之后你就能掌握Vue3.5重构后的响......
  • MES系统工单管理模块:提升生产效率与质量的关键组件
    MES系统中的工单管理模块是MES系统的关键组成部分,它主要负责生产任务的具体分配、执行情况的监控以及生产流程的优化。以下是对工单管理模块的详细介绍: 一、工单管理的主要功能生产任务分配:工单管理模块根据生产计划,将具体的生产任务分配给特定的工作站或设备。支持任务......
  • 02-偏导数、方向导数、梯度和微积分(转)
    一、偏导数对于一元函数y=f(x)只存在y随x的变化,但是二元函数z=f(x,y)存在z随x变化的变化率,随y变化的变化率,随x﹑y同时变化的变化率。如下图所示1、偏导数定义设函数z=f(x,y)z=f(x,y)在点(x0,y0)的某个邻域内有定义,定y=y0,一元函数f(x0,y0)f(x0,y0)在点x=x0处可导,即极限limΔ......
  • 2024最新网络安全自学路线,内容涵盖3-5年技能提升
     01什么是网络安全网络安全可以基于攻击和防御视角来分类,我们经常听到的“红队”、“渗透测试”等就是研究攻击技术,而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 无论网络、Web、移动、桌面、云等哪个领域,都有攻与防两面性,例如Web安全技术,既有Web渗透,也......
  • 未发表的原创模型!三类典型需求响应负荷的标准化建模+共享储能提升灵活性(Matlab代码实
      ......
  • 线性回归-随机梯度法下降算法预测波士顿房价
    机器学习基本步骤:​1.数据获取-导入外部数据集housing_price数据获取:听着高大上,实际上就是把内部/外部数据集加载进来2.数据基本处理-缺失值处理,分割数据集,数据基本处理:实际上就是对数据中缺失的数据和异常的数据进行处理,然后进行数据集分割3.特征工程-特征预......
  • Spring Boot知识管理:提升团队协作效率
    2相关技术2.1MYSQL数据库MySQL是一个真正的多用户、多线程SQL数据库服务器。是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常适用于Web站点或者其他......
  • 第106天:权限提升-WIN 系统&AD域控&NetLogon&ADCS&PAC&KDC&CVE 漏洞
    知识点1、WIN-域内用户到AD域控-CVE-2014-63242、WIN-域内用户到AD域控-CVE-2020-14723、WIN-域内用户到AD域控-CVE-2021-422874、WIN-域内用户到AD域控-CVE-2022-26923WIN-域控提权-CVE-2014-6324前提条件:1、需要域环境下一台主机普通用户账号密码2、一台主机的管理员权......
  • 第105天:权限提升-Linux系统&Docker挂载&Rsync未授权&Sudo-CVE&Polkit-CVE
    演示案例Linux-Rsync未授权访问覆盖-本地Linux-Docker组用户挂载目录-本地Linux-Sudo(CVE-2021-3156)-本地Linux-Polkit(CVE-2021-4034)-本地Rsync(未授权访问)Rsync是linux下一款数据备份工具,默认开启873端口https://vulhub.org/#/environments/rsync/common/借助Linux默认......
  • 第104天:权限提升-Linux系统&环境变量&定时任务&权限配置不当&MDUT自动化
    知识点总结#知识点:1、Linux提权-定时任务2、Linux提权-环境变量3、Linux提权-权限配置不当4、Linux提权-数据库自动化#系列内容:内核,数据库,第三方服务,SUID&GUID,定时任务,环境变量,SUDO,权限不当等脏牛漏洞(CVE-2016-5195)DirtyPipe(CVE-2022-0847)SUDO(CVE-2021-3156)Polki......