系统发育比较方法全解析,用R实现PGLS与性状演化建模

系统发育树 系统发育树构建的i型昂昂。aln文件格式 立即下载

第一章:R语言系统发育数据建模概述

R语言作为统计计算与数据分析的主流工具,在生物信息学领域展现出强大能力,尤其在系统发育数据建模方面具有广泛应用。其丰富的扩展包生态(如ape、phytools、geiger)支持从进化树构建、比较方法分析到性状演化模拟的全流程操作。

核心功能与应用场景

  • 系统发育树的读取、构建与可视化
  • 连续与离散性状的祖先状态重建
  • 基于模型的演化过程模拟(如布朗运动、 Ornstein-Uhlenbeck 模型)
  • 系统发育信号检测(如Blomberg's K统计量)

基础代码示例:读取与绘制进化树

# 加载必要的包
library(ape)

# 从Newick格式文件读取系统发育树
tree <- read.tree("tree.nwk")

# 绘制无根树
plot(tree, type = "unrooted", main = "Phylogenetic Tree")
axisPhylo() # 添加时间轴(若为有根树)
上述代码首先加载ape包,使用read.tree()函数解析Newick格式的树文件,并通过plot()函数实现树形结构的可视化。参数type控制展示形式,适用于不同研究需求。

常用R包对比

包名主要功能适用场景
ape基础系统发育分析树构建、读写、基本绘图
phytools高级系统发育推断祖先状态重建、性状演化
geiger演化模型拟合模型选择、速率分析
graph TD A[原始序列数据] --> B(多序列比对) B --> C[构建距离矩阵] C --> D[生成系统发育树] D --> E[模型拟合与评估] E --> F[生物学解释]

第二章:系统发育比较方法的理论基础

2.1 系统发育信号与演化模型简介

系统发育信号的基本概念
系统发育信号描述了物种性状在进化过程中保留祖先特征的程度。强信号意味着亲缘关系近的物种具有相似性状,通常由保守选择压力导致。
常用演化模型对比
  1. Brownian Motion (BM):假设性状随时间随机漂变,方差与分支长度成正比。
  2. Ornstein-Uhlenbeck (OU):引入稳定选择,性状趋向最优值,适用于适应性演化分析。
library(phytools)
fitBM <- fitContinuous(tree, trait, model="BM")
fitOU < -fitContinuous(tree, trait, model="OU")
上述 R 代码使用 phytools 包拟合两种模型,fitContinuous 函数评估不同演化模式对数据的适配度,通过 AIC 值比较模型优劣。
模型选择与解释力评估
模型AIC适用场景
BM125.3中性演化
OU118.7定向选择

2.2 Brownian运动模型与性状演化假设

在系统发育比较方法中,Brownian运动模型是描述连续性状演化的基本随机过程。该模型假设性状沿谱系以均值为零、方差与时间成正比的正态分布随机变化。
模型核心假设
  • 演化速率恒定:单位时间内性状变化的方差为常数 σ²
  • 独立增量:不同分支上的演化事件相互独立
  • 正态分布:任意时间段内的性状变化服从正态分布
协方差结构表示
在给定系统发育树下,物种间性状的协方差由其最近共同祖先的距离决定:
# R语言示例:计算BM模型下的协方差矩阵
library(ape)
phy <- read.tree("tree.nwk")
V <- vcv(phy)  # 得到基于分支长度的方差-协方差矩阵
sigma_squared <- 0.5
V_bm <- sigma_squared * V
上述代码利用系统发育树的分支长度构建协方差矩阵,其中vcv()函数输出的是各物种间共享的演化时间,乘以速率参数后即得性状协方差结构。

2.3 Pagel’s λ、K等系统发育相关性度量

在系统发育比较方法中,Pagel’s λ 和 Blomberg’s K 是衡量性状演化依赖于系统发育关系强度的核心统计量。它们量化了物种间相似性在多大程度上由共同祖先决定。
Pagel’s λ
λ 取值范围为 [0,1],λ=1 表示数据符合布朗运动演化模型,λ=0 则表明系统发育结构对性状无影响。

library(phytools)
phylosig(tree, trait, method = "lambda")
该 R 代码利用 phylosig 函数估计 λ 值,通过最大似然法拟合模型,并输出 AIC 用于模型比较。
Blomberg’s K
K > 1 表示近缘种性状更相似(强系统发育保守性),K < 1 则表示趋同演化占主导。
度量解释
λ ≈ 1强烈系统发育信号
K > 1性状保守性强

2.4 PGLS的统计原理与适用场景

统计原理概述
PGLS(Phylogenetic Generalized Least Squares)是一种考虑系统发育关系的回归分析方法,用于处理物种间因共同祖先而产生的非独立性数据。其核心在于构建反映进化关系的协方差矩阵 $V$,并通过广义最小二乘法估计参数。
适用场景与假设条件
  • 适用于连续型响应变量与预测变量间的关联分析
  • 要求数据具有明确的系统发育树结构
  • 假设残差服从多元正态分布且协方差结构由进化模型决定
代码实现示例

library(ape)
# 假设 tree 为已知系统发育树,data 为包含性状的数据框
bm_model <- pgls(trait ~ predictor, data = data, phy = tree, lambda = "ML")
summary(bm_model)
该代码使用 R 中的 `ape` 包执行 PGLS 分析,其中 `lambda = "ML"` 表示通过最大似然法估计 Pagel’s lambda 参数,用以调节系统发育信号强度。

2.5 模型选择与残差诊断理论

模型选择准则
在回归建模中,选择最优模型需权衡拟合优度与复杂度。常用准则包括 AIC 与 BIC:
  • AIC:偏向参数较多的模型,适用于预测场景;
  • BIC:对参数惩罚更重,倾向于简洁模型。
残差诊断方法
合格模型的残差应满足零均值、同方差、无自相关且服从正态分布。可通过绘制残差图进行检验:

import matplotlib.pyplot as plt
import statsmodels.api as sm

# 拟合模型
model = sm.OLS(y, X).fit()
residuals = model.resid

# 绘制残差图
plt.scatter(model.fittedvalues, residuals)
plt.xlabel('Fitted Values')
plt.ylabel('Residuals')
plt.title('Residual vs Fitted Plot')
plt.axhline(0, color='red', linestyle='--')
plt.show()
该代码生成残差-拟合值散点图,用于检测非线性模式或异方差性。若点呈随机散布,则满足假设;若出现趋势或漏斗形,则需模型修正。

第三章:R中系统发育树与性状数据的处理

3.1 读取与操作系统发育树(ape, phytools)

在系统发育分析中,准确读取和解析发育树结构是后续推断的基础。R语言中的ape和phytools包提供了强大的工具集,支持Newick、Nexus等格式的树文件读取。
常用读取函数
library(ape)
tree <- read.tree("tree.nwk")  # 读取Newick格式
该函数自动解析分支拓扑与分支长度。read.tree()返回phylo类对象,兼容多数下游分析。
数据结构与属性
  • edge:描述节点连接关系的矩阵
  • tip.label:叶节点名称向量
  • branch.length:各分支进化距离
结合phytools可实现可视化与模型拟合,为复杂演化假设提供支持。

3.2 整合性状数据与树结构的对齐处理

在系统发育分析中,确保性状数据与进化树拓扑结构精确对齐是关键步骤。若标签命名不一致或顺序错位,将导致后续模型推断失真。
数据同步机制
需建立物种名称的标准化映射表,消除拼写差异或同义名带来的干扰。常用策略包括正则匹配与模糊查找结合。
树节点标签性状数据标签匹配结果
Homo_sapiensHomo sapiens已对齐
Mus_musculusMus musculus已对齐
Rattus_norvRattus norvegicus需映射
代码实现示例

# 使用pandas与ete3库进行标签对齐
import pandas as pd
from ete3 import Tree

def align_traits_with_tree(tree: Tree, traits: pd.DataFrame):
    tree_labels = {node.name for node in tree.get_leaves()}
    data_labels = set(traits.index)
    common = tree_labels & data_labels
    return tree.prune(common), traits.loc[common]
该函数通过集合交集提取共有标签,并同步裁剪树结构与性状矩阵,确保二者在后续分析中完全对应。参数tree为解析后的Newick树对象,traits为以物种名为索引的性状数据框。

3.3 缺失数据处理与枝长校正技巧

在系统发育分析中,序列比对常出现缺失数据(gap或missing sites),若不妥善处理,可能扭曲进化距离与拓扑结构。对于缺失位点,推荐采用基于概率模型的隐含状态推断,而非简单剔除。
缺失数据插补策略
使用最大似然法估算缺失碱基,可结合RAxML或IQ-TREE实现:

iqtree2 -s alignment.fasta -m GTR+F+R4 --mfreq empirical --allow-missing-sites
该命令启用缺失数据建模,--allow-missing-sites 允许存在缺失,同时通过经验碱基频率优化似然计算。
枝长校正方法
当数据缺失比例较高时,需对枝长进行校正以避免低估进化距离。常用方法包括:
  • 使用ASRV(位点速率异质性)模型缓解偏差
  • 引入clock模型进行时间校准,如MCMCTree
结合上述策略,可显著提升树构建的准确性与稳健性。

第四章:PGLS与性状演化建模的R实现

4.1 使用caper包拟合PGLS模型

在系统发育比较分析中,PGLS(Phylogenetic Generalized Least Squares)模型能够有效控制物种间进化关系对性状关联的影响。`caper` 是 R 中用于执行 PGLS 分析的重要工具包,它将系统发育树与性状数据整合为“phylo4d”对象进行建模。
数据准备与模型构建
首先需将物种性状数据与系统发育树合并为 `comparative.data` 对象:
library(caper)
data <- comparative.data(phy = tree, data = trait_data, names.col = "species")
model <- pgls(log(SLA) ~ log(LMA), data = data)
summary(model)
上述代码中,`phy` 为系统发育树(需为 `phylo` 类),`trait_data` 是包含物种名称和连续性状的 `data.frame`,`names.col` 指定物种名列。`pgls()` 函数自动计算系统发育协方差矩阵并拟合线性模型。
关键参数说明
  • lambda:默认启用,估计系统发育信号强度;取值范围 [0,1],1 表示符合布朗运动模型
  • corStruct:可自定义相关结构,如 Ornstein-Uhlenbeck 过程

4.2 用phytools进行祖先性状重建

加载数据与构建系统发育树
在R中使用phytools包进行祖先性状重建前,需准备系统发育树和性状数据。假设已有连续性状数据和对应树结构:
library(phytools)
tree <- read.tree("tree.nwk")
data <- read.csv("traits.csv", row.names = 1)
上述代码加载系统发育树(Newick格式)和性状数据(CSV格式),行名需与树的tip labels一致。
最大似然法重建连续性状
使用anc.ML函数基于Brownian运动模型推断内部节点的性状值:
reconstruction <- anc.ML(tree, data$trait)
plot(reconstruction, tree, main = "Ancestral State Reconstruction")
anc.ML通过最大似然估计各节点最可能的性状值,适用于连续型变量,输出包含节点估计值及其标准误差。
结果可视化
plot函数将重建结果映射到树上,不同颜色深浅代表性状值大小,直观展示演化趋势。

4.3 不同演化模型(BM、OU、EB)拟合与比较

在系统演化分析中,布朗运动(BM)、Ornstein-Uhlenbeck(OU)和指数衰减(EB)模型常用于描述特征随时间的动态变化。每种模型对应不同的演化假设,需通过统计拟合进行选择。
模型定义与适用场景
  • BM模型:假设性状随机漂变,无趋向性,适用于中性演化。
  • OU模型:引入吸引点θ,模拟稳定选择,适合适应性收敛分析。
  • EB模型:性状方差呈指数衰减,反映演化速率下降过程。
拟合代码示例

fitBM <- fitContinuous(phy, data, model="BM")
fitOU <- fitContinuous(phy, data, model="OU")
fitEB <- fitContinuous(phy, data, model="EB")
上述代码使用geiger包对三种模型进行最大似然拟合。phy为系统发育树,data为连续性状数据。各模型返回AIC值,用于后续比较。
模型比较
模型AIC参数数
BM185.22
OU179.83
EB182.12
根据AIC最小原则,OU模型最优,表明存在显著的选择压力。

4.4 可视化系统发育回归结果与演化轨迹

在系统发育分析中,可视化回归结果有助于揭示性状演化模式与系统树之间的关联。借助R语言的`phytools`和`ggplot2`包,可高效绘制连续性状的演化轨迹。
回归残差的系统树映射
通过将回归模型的残差投影到系统发育树上,可以识别偏离预期演化的谱系分支。

library(phytools)
# 绘制带残差的系统树
phenogram(tree, residuals, fsize = 0.8, 
          label.offset = 0.1, 
          xlab = "Evolutionary Time", 
          ylab = "Standardized Residuals")
该代码生成性状演化图(phenogram),横轴表示进化时间,纵轴为标准化残差。偏离零线较大的分支提示可能存在适应性演化或模型假设偏差。
演化速率异质性热图
使用颜色梯度展示不同支上的速率变化,可直观识别加速或减速演化区域。
分支ID速率值颜色编码
Node120.85高
Node230.12低

第五章:总结与拓展方向

性能优化的持续实践
在高并发系统中,数据库连接池的调优是关键。以 Go 语言为例,合理设置最大连接数和空闲连接可显著提升响应速度:

db.SetMaxOpenConns(50)
db.SetMaxIdleConns(10)
db.SetConnMaxLifetime(time.Hour)
某电商平台通过上述配置,在秒杀场景下将数据库超时率从 12% 降至 0.3%。
微服务架构的演进路径
随着业务复杂度上升,单体架构逐渐暴露瓶颈。以下是某金融系统拆分前后的对比数据:
指标单体架构微服务架构
部署频率每周1次每日多次
平均故障恢复时间45分钟8分钟
服务耦合度高低
可观测性体系构建
现代系统必须具备完整的监控、日志与追踪能力。推荐以下技术栈组合:
  • Prometheus:用于指标采集与告警
  • Loki:轻量级日志聚合系统
  • Jaeger:分布式链路追踪工具
某物流平台接入 Jaeger 后,跨服务调用延迟定位时间从小时级缩短至5分钟内。
安全加固建议
API 网关应强制实施以下策略:
  1. JWT 鉴权机制
  2. IP 白名单限制
  3. 请求频率限流(如 1000 次/分钟)
  4. 敏感字段加密传输
某社交应用因未启用字段加密,导致用户邮箱批量泄露,后续通过引入 AES-256 加密修复漏洞。
产业园区如何高效对接企业技术需求与高校科研成果?.docx 科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。 立即下载

相关推荐

国央企创新负责人如何快速掌握本地科技资源分布与匹配情况?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

推荐项目:`phytools` - 比较生物学与更多领域的 phylogeny 工具

推荐项目:phytools - 比较生物学与更多领域的 phylogeny 工具 1、项目介绍 phytools 是一个用于比较生物学研究的强大开源工具包,主要针对基于进化树的分析。该项目提供源代码、详细文档和 R 数据,旨在帮助研究人员在处理复杂生物数据时,实现对进化关系的深入理解和可视化。通过 _phytools_,你可以轻松安装并利用一系列高级功能,探索生态学、演化生物学等领域的各种问题。 ...

gitblog_00024的博客 679

Sharding Sphere JDBC使用Mybatis的saveBatch无法返回主键的问题

Sharding Sphere JDBC使用Mybatis的saveBatch无法返回主键的问题

HHCS231的博客 1829

【进化生物学数据分析】:3步搞定R语言下的PGLS回归,解决相关性分析难题

掌握PGLS回归三步法,轻松解决进化数据中的相关性偏差问题。本文结合R语言与系统发育信息,详解如何在进化生物学研究中准确分析性状间关联,避免假阳性结果。涵盖模型构建、假设检验与结果解读,方法实用高效,值得收藏。

StepLens的博客 753

保姆级教程:手把手教你用CANoe/CANalyzer读取汽车故障码(UDS 0x19服务实战)

本文提供了一份详细的CANoe/CANalyzer使用教程,指导如何通过UDS 0x19服务读取汽车故障码。从硬件配置到报文构建,再到故障码解析,手把手教你完成汽车诊断全流程,特别适合汽车电子工程师和诊断开发人员。

weixin_42524945的博客 260

AMD MI50 Linux ROCm 6.4 手动编译与大模型推理实战

GPU加速计算是现代AI推理的核心基础,其性能依赖于硬件架构、驱动栈与运行时环境的深度协同。ROCm作为AMD开源GPU计算平台,采用‘自下而上’的Linux生态集成路径,强调对上游内核、编译器与固件的强耦合。MI50基于Vega 20(gfx900)架构,虽具备32GB HBM2高带宽显存与14.7 TFLOPS FP16算力,但因ROCm官方支持策略转向CDNA架构,自6.5版本起被移出支持列表,仅ROCm 6.4仍提供实验性兼容——这使其成为Linux下部署私有大模型的关键‘最后一班船’。本文围绕MI

weixin_32770423的博客 369

【权威指南】:基于R的系统发育广义最小二乘(PGLS)建模全流程详解

掌握R语言系统发育数据建模核心方法,详解PGLS在进化生物学中的应用。涵盖模型构建、残差检验与结果可视化,解决非独立数据难题。基于真实案例,步骤清晰,值得收藏。

ByteChat的博客 1445

基于Matlab生成并可视化多架飞机轨迹仿真(附源码)

这使我们可以轻松地对直线和恒定转弯进行建模,并具有额外的自由度,可以在直线段和曲线段之间平滑过渡。同样,空气中的物体会经历重力的影响,遵循抛物线(二次)路径。需要更多的航点来适应这些变化,但是轨迹的其余部分需要更少的点。第三个轨迹,如下所示,代表了一架速度更高的飞机。它由两个恒定的转弯组成,飞机在第二个转弯的中间减速。一旦知道(并设置了)物体穿过空间的物理路径,物体的速度作为行进距离的函数就通过三次埃尔米特插值来确定。在此示例中,学习了内部使用的插值符背后的概念,并展示了如何使用少量航点重现场景。

珞瑜的博客 5464

【R语言与统计】SEM结构方程、生物群落、多元统计分析、回归及混合效应模型、贝叶斯、极值统计学、meta分析、copula、分位数回归、文献计量学

(1) R及Rstudio介绍:背景、软件及程序包安装、基本设置等(2) R语言基本操作,包括向量、矩阵、数据框及数据列表等生成和数据提取等(3) R语言数据文件读取、整理(清洗)、结果存储等(含tidverse)(4) R语言基础绘图(含ggplot):基本绘图、排版、发表质量绘图输出存储。

weixin_xiao5kou4chang6kai4的博客 3171

【现代控制理论期末考点】

现代控制理论期末考点,适用于 SEU Automation

【人工智障 | 计算鸡视觉 | 机器孩】 1445

【学术情报智库】目录学的数字化蜕变:从古籍整理到AI知识图谱的跨越

我们既是浩瀚知识的守望者,也是数字智识的开拓者。目录学数字化不是技术替代传统,而是融合创新,让学术的系统性与多样性在新媒介下焕发新的生命。以AI为桥,既要智能链接,也要人文关照——这是对自我文明的深情回应,也是新知时代的庄严约定。

高校图书馆高级系统架构师/研究馆员,推动高校AI从概念演示到可评审、可交付、可运维:路线图与立项评审、PoC交付、评测回归与上线运维(Baseline/Eval/Ops)。 1421

生物生态学领域构建和分析进化树的常用R工具包介绍和使用

进化树揭示了物种之间的演化关系和共同祖先,帮助科学家理解不同物种是如何从共同的祖先分化出来的。这对于研究物种起源、分布和生物多样性至关重要。: 通过构建进化树,研究人员可以追踪生物类群的历史变迁和演化路径,包括物种形成、灭绝、迁移和适应性辐射等事件。: 进化树中的节点通常与时间尺度相关联,通过对分子数据(如DNA序列)进行分析,可以估算物种分化的年代和速率,以及关键的演化事件发生的时间。

zrc_xiaoguo的博客 4054

基于高斯两步移动搜寻法(2SFCA)的城市绿地可达性分析

第二步,对于每一个街道i,给定空间距离阈值d0,便形成另一个空间作用域,同样对于落在空间作用域内的每块绿地l的供给比率(Rl)利用高斯方程赋以权重,然后对这些加权后的供给比率(Rl)进行加和,便得到每个街道i的绿地可达性Ai。图3与图4是高斯两步移动搜索法的示例。在图3中,以d0为阈值,有1、2、3 三个街道中心点落在了绿地a的空间作用域内。同样在图4中,以d0为阈值,有a、c两个绿地中心点落在了街道2的空间作用域内,根据公式(3),对a、c高斯方程加权后的供需比率进行累加,便得到了街道2 的绿地可达性。

2301_77310370的博客 2404

【R语言系统发育分析核心技巧】:掌握物种进化关系与性状相关性的5大实战方法

掌握R语言系统发育分析核心方法,解决物种进化关系与性状相关性研究难题。涵盖PIC、PGLS、祖先状态重建等5大实战技巧,适用于生态学、演化生物学等领域,提升科研效率与分析深度,值得收藏。

CompiShoal的博客 703

mapbox 从入门到精通 - 目录

欢迎大家来到gis分享者的《mapbox 从入门到精通》专栏。博主列出学习大纲,如果有什么问题,欢迎留言。

我哎GIS博客 5847

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

R语言caper vs. nlme包大比拼:哪个更适合你的系统发育相关性研究?

解决系统发育相关性分析难题,本文对比R语言caper与nlme包在系统发育独立对比(PGLS)中的应用。涵盖模型构建、协方差结构处理及适用场景,助你选对工具提升分析效率。R语言系统发育相关性研究优选方案,值得收藏。

CompiGlow的博客 723

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

R语言构建贝叶斯系统发育树全流程(耗时缩短70%的高效策略)

掌握R语言系统发育相关性分析的高效方法,本文详解贝叶斯系统发育树构建全流程,涵盖数据准备、模型选择与MCMC优化,显著缩短70%运算时间,适用于进化生物学与物种关系研究,值得收藏。

LiteProceed的博客 1148

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

如何在7天内掌握R语言系统发育数据建模:一份私密学习路径曝光

7天掌握R语言系统发育数据建模核心技能,解决进化关系分析难题。涵盖phytools、ape等包的应用,结合最大似然法与贝叶斯建模,适用于微生物演化、物种分类研究。方法实用、代码可复用,科研效率显著提升,值得收藏。

InstrFun的博客 593

R语言phytools进阶应用(仅限专业人士掌握的核心秘技)

掌握R语言系统发育树构建的高级技巧,解决复杂进化关系推断难题。基于phytools包实现树形可视化、祖先状态重建与比较方法分析,适用于生物演化研究。整合多源数据建模,提升分析精度,专业人士进阶必备,值得收藏。

DevPath的博客 1084

【亲测免费】 开源项目 phytools 使用教程

开源项目 phytools 使用教程 项目介绍 phytools 是一个用于比较生物学(和其他领域)的广泛方法的 R 包。它专注于系统发育比较生物学,但也包括许多用于可视化、分析、操作、读取或写入系统发育树的技术,甚至推断系统发育树。phytools 包中包含的功能涵盖了祖先状态重建、模型拟合和系统发育树及特征数据的模拟等多个方面。此外,它还提供了一系列用于系统发育和比较数据的可视化方法,包括将特...

gitblog_00837的博客 1528

你真的会用R做系统发育信号检测吗:trait数据建模常见误区与纠正

掌握R语言系统发育数据建模关键技巧,避开trait信号检测常见误区。本文详解K值、D统计量等方法的应用场景与正确实现,提升进化生物学研究准确性。实用指南值得收藏

QuickDebug的博客 1102

生物生态学领域构建和分析进化树的常用R工具包介绍和使用_poppr介绍

最近很多小伙伴找我要Linux学习资料,于是我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等共享给大家!最近很多小伙伴找我要Linux学习资料,于是我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等共享给大家!

weixin_58134620的博客 1323

生物系统学中的进化树构建和分析R工具包V.PhyloMaker2的介绍和详细使用

V.PhyloMaker2是一个R语言的工具包,专门用于构建和分析生物系统学中的进化树(也称为系统发育树或phylogenetic tree)。以下是对V.PhyloMaker2的一些基本介绍和使用说明:

zrc_xiaoguo的博客 6792

微生物组数据系统发育分析的方法

微生物组数据系统发育分析的方法Methods for phylogenetic analysis of microbiome dataNature Microbiology, [14.1...

刘永鑫的博客——宏基因组公众号 1万+

Nature Microbiology: 微生物数据的系统发育分析方法

本文转载自美格基因,己获授权。佳作推荐推荐指数:★★★★★阅读时间:4分钟文本字数:1800字推荐理由:这篇文章总结了对微生物组数据的系统发育进行分析的几种方法,举例说明不同方法适用的...

刘永鑫的博客——宏基因组公众号 2640
上一篇: 从零开始解析物联网协议,PHP开发者必须掌握的3种数据解码技巧
下一篇: 你真的会用交叉验证吗?R语言k折应用中的9个关键细节(专家级避坑指南)
CodeVibe
博客等级 码龄1年 139粉丝 2123原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值