本文将详细讲解如何在 VSCode + PlantUML 插件(本地高性能渲染)和 PlantText 在线工具(免安装快速渲染)中,完整渲染上文的机器学习 199 + 算法体系 PlantUML 代码,包含环境配置、操作步骤、常见问题解决等全流程。
一、前置知识
PlantUML 是一种通过文本描述生成 UML 图(流程图、架构图、时序图等)的工具,支持多种输出格式(PNG/SVG/PDF),上文的算法全景图基于 PlantUML 语法编写,需借助渲染工具将文本转为可视化图表。
二、方案 1:VSCode + PlantUML 插件(推荐,本地渲染)
2.1 环境准备
2.1.1 安装 VSCode
- 下载地址:VSCode 官方下载
- 安装:根据操作系统(Windows/macOS/Linux)选择对应版本,默认安装即可(建议勾选 “添加到 PATH”)。
2.1.2 安装 Graphviz(核心依赖)
PlantUML 渲染图表依赖 Graphviz(图形可视化工具),必须先安装:
-
Windows:
- 下载地址:Graphviz 官方下载(选择 Windows 版本,如
graphviz-10.0.1-win64.exe); - 安装:勾选 “Add Graphviz to the system PATH for all users”(添加到系统环境变量),默认安装路径
C:\Program Files\Graphviz\; - 验证:打开 CMD,输入
dot -version,若显示版本信息则安装成功。
- 下载地址:Graphviz 官方下载(选择 Windows 版本,如
-
macOS:
终端执行brew install graphviz(需先安装 Homebrew,若未安装:/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)")。 -
Linux:
终端执行sudo apt-get install graphviz(Debian/Ubuntu)或sudo yum install graphviz(CentOS)。
2.1.3 安装 PlantUML 插件
- 打开 VSCode,点击左侧「扩展」图标(快捷键
Ctrl+Shift+X); - 在搜索框输入
PlantUML,选择由jebbs开发的插件(下载量最高、官方推荐); - 点击「安装」,安装完成后 VSCode 会提示 “重启以生效”(可选,一般无需重启)。
2.2 渲染步骤
2.2.1 创建 PlantUML 文件
- 打开 VSCode,新建文件夹(如
ML-Algorithm-Chart); - 在文件夹内右键 → 「新建文件」,命名为
ML-Algorithms.puml(后缀必须为.puml/.plantuml/.pu,插件仅识别这些后缀)。
2.2.2 粘贴代码
- 打开
ML-Algorithms.puml文件; - 全选删除默认内容,粘贴上文修正后的完整 PlantUML 代码;
- 保存文件(快捷键
Ctrl+S)。
' 全局样式优化:适配大量算法的可视化
skinparam componentStyle rectangle
skinparam defaultTextAlignment center
skinparam shadowing false
skinparam package {
BackgroundColor #f5f5f5
BorderColor #2f4f4f
FontSize 10
}
skinparam component {
FontSize 9
BorderColor #4682b4
}
skinparam note {
BackgroundColor #e0f7fa
BorderColor #006064
FontSize 9
}
skinparam arrow {
LineThickness 1
Color #333333
}
title 机器学习199+算法体系全景图(含衍生/改进关系)
' ===================== 第一层:数据预处理(基础层) =====================
package "数据预处理层【18类】" {
[缺失值处理\n(均值/中位数/众数填充)] as Miss_Fill
[缺失值处理\n(插值法/KNN填充)] as Miss_Interp
[缺失值处理\n(MICE/EM填充)] as Miss_MICE
[异常值处理\n(IQR/3σ法则)] as Outlier_IQR
[异常值处理\n(DBSCAN/孤立森林)] as Outlier_Detect
[重复值处理\n(完全重复/近重复)] as Duplicate
[数据变换\n(对数/指数/Box-Cox)] as Transform_Basic
[数据变换\n(Yeojohnson/Power)] as Transform_Power
[归一化\n(Min-Max)] as Norm_MinMax
[标准化\n(Z-Score)] as Norm_Zscore
[正则化\n(L1/L2)] as Norm_L1L2
[类别编码\n(标签编码)] as Encode_Label
[类别编码\n(独热编码)] as Encode_Onehot
[类别编码\n(目标编码)] as Encode_Target
[类别编码\n(WOE编码)] as Encode_WOE
[特征选择\n(过滤法:卡方/互信息)] as FS_Filter
[特征选择\n(包裹法:RFE)] as FS_Wrapper
[特征选择\n(嵌入法:L1正则)] as FS_Embed
[降维\n(PCA/核PCA)] as Dim_PCA
[降维\n(TSNE/UMAP)] as Dim_TSNE
[降维\n(LDA/NMF)] as Dim_LDA
[数据划分\n(hold-out/分层抽样)] as Split_Holdout
[数据划分\n(交叉验证:K折/留一)] as Split_CV
[数据增强\n(SMOTE/ADASYN)] as Aug_SMOTE
[数据增强\n(随机翻转/裁剪)] as Aug_Image
[数据增强\n(文本分词/替换)] as Aug_Text
}
' ===================== 第二层:传统统计学习算法【25类】 =====================
package "传统统计学习【25类】" {
[线性回归\n(普通最小二乘)] as Reg_OLS
[线性回归\n(加权最小二乘)] as Reg_WLS
[岭回归] as Reg_Ridge
[Lasso回归] as Reg_Lasso
[ElasticNet回归] as Reg_ElasticNet
[逻辑回归\n(二分类)] as Clf_Logistic_Bin
[逻辑回归\n(多分类)] as Clf_Logistic_Multi
[线性判别分析\n(LDA)] as Clf_LDA
[二次判别分析\n(QDA)] as Clf_QDA
[朴素贝叶斯\n(高斯)] as Clf_NB_Gauss
[朴素贝叶斯\n(多项式)] as Clf_NB_Multi
[朴素贝叶斯\n(伯努利)] as Clf_NB_Bernoulli
[泊松回归] as Reg_Poisson
[负二项回归] as Reg_NegBin
[Cox比例风险回归] as Reg_Cox
[时间序列AR] as TS_AR
[时间序列MA] as TS_MA
[时间序列ARMA] as TS_ARMA
[时间序列ARIMA] as TS_ARIMA
[时间序列SARIMA] as TS_SARIMA
[时间序列VAR] as TS_VAR
[格兰杰因果检验] as Stat_Granger
[卡方检验] as Stat_Chi2
[t检验/ANOVA] as Stat_T_ANOVA
[皮尔逊/斯皮尔曼相关] as Stat_Corr
}
' ===================== 第三层:监督学习-树模型/集成学习【42类】 =====================
package "监督学习-树模型/集成学习【42类】" {
' 基础树模型
[决策树\n(ID3)] as Tree_ID3
[决策树\n(C4.5)] as Tree_C45
[决策树\n(CART)] as Tree_CART
[决策树\n(CHAID)] as Tree_CHAID
[决策树\n(M5)] as Tree_M5
[随机森林\n(基础版)] as Ensemble_RF_Base
[随机森林\n(ExtraTrees)] as Ensemble_ExtraTrees
[随机森林\n(RF-PCA)] as Ensemble_RF_PCA
' 提升树
[GBDT\n(基础版)] as Ensemble_GBDT_Base
[XGBoost\n(基础版)] as Ensemble_XGB_Base
[XGBoost\n(带缺失值处理)] as Ensemble_XGB_Miss
[XGBoost\n(列采样版)] as Ensemble_XGB_Col
[LightGBM\n(基础版)] as Ensemble_LGB_Base
[LightGBM\n(直方图优化)] as Ensemble_LGB_Hist
[LightGBM\n(互斥特征捆绑)] as Ensemble_LGB_EFB
[CatBoost\n(基础版)] as Ensemble_CatB_Base
[CatBoost\n(类别特征优化)] as Ensemble_CatB_Cat
[CatBoost\n(有序提升)] as Ensemble_CatB_Ord
[AdaBoost\n(基础版)] as Ensemble_Ada_Base
[AdaBoost\n(RealAdaBoost)] as Ensemble_Ada_Real
[AdaBoost\n(MultiAdaBoost)] as Ensemble_Ada_Multi
[GradientBoost\n(基础版)] as Ensemble_GB_Base
[StochasticGB\n(随机梯度提升)] as Ensemble_SGB
[HistogramGB\n(直方图梯度提升)] as Ensemble_HGB
' 堆叠/混合集成
[Stacking\n(单层)] as Ensemble_Stack_Single
[Stacking\n(多层)] as Ensemble_Stack_Multi
[Blending\n(基础版)] as Ensemble_Blend_Base
[Blending\n(加权融合)] as Ensemble_Blend_Weight
[Voting\n(硬投票)] as Ensemble_Vote_Hard
[Voting\n(软投票)] as Ensemble_Vote_Soft
[Bagging\n(基础版)] as Ensemble_Bag_Base
[Bagging\n(Pasting)] as Ensemble_Bag_Paste
[Bagging\n(RandomPatches)] as Ensemble_Bag_Patch
[Bagging\n(RandomSubspace)] as Ensemble_Bag_Subspace
' 工程化变体
[XGBoost-LR混合] as Ensemble_XGB_LR
[LightGBM-CatBoost混合] as Ensemble_LGB_CatB
[RF-GBDT堆叠] as Ensemble_RF_GBDT
[AdaBoost-SVM混合] as Ensemble_Ada_SVM
[GBDT+特征衍生] as Ensemble_GBDT_Feat
[XGBoost+早停] as Ensemble_XGB_EarlyStop
[LightGBM+正则化] as Ensemble_LGB_Reg
[CatBoost+交叉验证] as Ensemble_CatB_CV
[集成学习+网格搜索] as Ensemble_GridSearch
[集成学习+贝叶斯优化] as Ensemble_BayesOpt
}
' ===================== 第四层:监督学习-核方法/近邻【18类】 =====================
package "监督学习-核方法/近邻【18类】" {
[KNN\n(基础版)] as KNN_Base
[KNN\n(加权KNN)] as KNN_Weight
[KNN\n(KD树优化)] as KNN_KDTree
[KNN\n(球树优化)] as KNN_BallTree
[KNN\n(余弦距离)] as KNN_Cosine
[KNN\n(曼哈顿距离)] as KNN_Manhattan
[SVM\n(线性核)] as SVM_Linear
[SVM\n(多项式核)] as SVM_Poly
[SVM\n(高斯核/RBF)] as SVM_RBF
[SVM\n(拉普拉斯核)] as SVM_Laplace
[SVM\n(Sigmoid核)] as SVM_Sigmoid
[SVM\n(线性软间隔)] as SVM_SoftLinear
[SVM\n(多分类OVA)] as SVM_Multi_OVA
[SVM\n(多分类OVO)] as SVM_Multi_OVO
[LS-SVM\n(最小二乘SVM)] as SVM_LS
[Nu-SVM\n(ν-SVM)] as SVM_Nu
[C-SVM\n(C-SVM)] as SVM_C
[OneClass-SVM\n(单类SVM)] as SVM_OneClass
}
' ===================== 第五层:无监督学习-聚类【24类】 =====================
package "无监督学习-聚类【24类】" {
' 划分式聚类
[K-Means\n(基础版)] as Clust_KMeans_Base
[K-Means++\n(初始化优化)] as Clust_KMeans_Plus
[MiniBatch-KMeans] as Clust_MiniKMeans
[K-Medoids\n(PAM)] as Clust_KMedoids_PAM
[K-Medians] as Clust_KMedians
[Fuzzy C-Means\n(模糊C均值)] as Clust_FCM
[Hard C-Means] as Clust_HCM
' 层次聚类
[层次聚类\n(凝聚式)] as Clust_Hier_Agg
[层次聚类\n(分裂式)] as Clust_Hier_Div
[层次聚类\n(单链接)] as Clust_Hier_Single
[层次聚类\n(全链接)] as Clust_Hier_Complete
[层次聚类\n(平均链接)] as Clust_Hier_Avg
[层次聚类\n(沃德法)] as Clust_Hier_Ward
' 密度聚类
[DBSCAN\n(基础版)] as Clust_DBSCAN_Base
[OPTICS\n(基础版)] as Clust_OPTICS_Base
[OPTICS\n(改进版)] as Clust_OPTICS_Imp
[HDBSCAN\n(层次DBSCAN)] as Clust_HDBSCAN
[MeanShift\n(均值漂移)] as Clust_MeanShift
[MeanShift\n(带宽优化)] as Clust_MeanShift_Band
' 概率聚类
[GMM\n(高斯混合)] as Clust_GMM_Base
[GMM\n(EM优化)] as Clust_GMM_EM
[GMM\n(贝叶斯GMM)] as Clust_BayesGMM
' 其他聚类
[SpectralClustering\n(谱聚类)] as Clust_Spectral
[AffinityPropagation\n(亲和传播)] as Clust_Affinity
[Birch\n(层次平衡迭代)] as Clust_Birch
}
' ===================== 第六层:无监督学习-关联规则/降维【16类】 =====================
package "无监督学习-关联规则/降维【16类】" {
' 关联规则
[Apriori\n(基础版)] as AR_Apriori_Base
[Apriori\n(剪枝优化)] as AR_Apriori_Prune
[FP-Growth\n(基础版)] as AR_FPG_Base
[FP-Growth\n(并行版)] as AR_FPG_Parallel
[Eclat\n(基础版)] as AR_Eclat_Base
[Eclat\n(垂直数据优化)] as AR_Eclat_Vert
[PrefixSpan\n(序列模式)] as AR_PrefixSpan
[SPADE\n(序列模式挖掘)] as AR_SPADE
[GSP\n(广义序列模式)] as AR_GSP
' 降维
[PCA\n(基础版)] as Dim_PCA_Base
[PCA\n(增量PCA)] as Dim_PCA_Incremental
[KernelPCA\n(核PCA)] as Dim_KernelPCA
[LDA\n(线性判别降维)] as Dim_LDA_Base
[t-SNE\n(基础版)] as Dim_TSNE_Base
[UMAP\n(基础版)] as Dim_UMAP_Base
[NMF\n(非负矩阵分解)] as Dim_NMF_Base
}
' ===================== 第七层:半监督学习【12类】 =====================
package "半监督学习【12类】" {
[伪标签法\n(基础版)] as SSL_Pseudo_Base
[伪标签法\n(置信度过滤)] as SSL_Pseudo_Conf
[自训练\n(基础版)] as SSL_SelfTrain_Base
[自训练\n(多模型自训练)] as SSL_SelfTrain_Multi
[协同训练\n(基础版)] as SSL_CoTrain_Base
[协同训练\n(Co-Training+)] as SSL_CoTrain_Plus
[Tri-Training] as SSL_TriTrain
[LabelPropagation\n(标签传播)] as SSL_LabelProp
[LabelSpreading\n(标签扩散)] as SSL_LabelSpread
[半监督SVM\n(S3VM)] as SSL_S3VM
[半监督KMeans] as SSL_KMeans
[半监督GMM] as SSL_GMM
}
' ===================== 第八层:强化学习【18类】 =====================
package "强化学习【18类】" {
' 值迭代
[Q-Learning\n(基础版)] as RL_Q_Base
[SARSA\n(基础版)] as RL_SARSA_Base
[SARSA(λ)] as RL_SARSA_Lambda
[DQN\n(深度Q网络)] as RL_DQN_Base
[Double DQN] as RL_DDQN
[Dueling DQN] as RL_DuelDQN
[Prioritized DQN] as RL_PDQN
[Rainbow DQN] as RL_RainbowDQN
' 策略迭代
[Policy Gradient\n(PG)] as RL_PG_Base
[REINFORCE\n(基础版)] as RL_REINFORCE
[Actor-Critic\n(基础版)] as RL_AC_Base
[A2C\n(同步AC)] as RL_A2C
[A3C\n(异步AC)] as RL_A3C
[PPO\n(近端策略优化)] as RL_PPO_Base
[TRPO\n(信任域策略优化)] as RL_TRPO
[DDPG\n(深度确定性策略)] as RL_DDPG
[TD3\n(双延迟DDPG)] as RL_TD3
[SAC\n(软演员评论员)] as RL_SAC
' 多智能体
[MADDPG\n(多智能体DDPG)] as RL_MADDPG
[MAPPO\n(多智能体PPO)] as RL_MAPPO
}
' ===================== 第九层:深度学习【23类】 =====================
package "深度学习【23类】" {
' 基础网络
[MLP\n(多层感知机)] as DL_MLP_Base
[MLP\n(带Dropout)] as DL_MLP_Dropout
[CNN\n(基础LeNet)] as DL_CNN_LeNet
[CNN\n(AlexNet)] as DL_CNN_AlexNet
[CNN\n(VGG)] as DL_CNN_VGG
[CNN\n(ResNet)] as DL_CNN_ResNet
[CNN\n(ResNeXt)] as DL_CNN_ResNeXt
[CNN\n(DenseNet)] as DL_CNN_DenseNet
[CNN\n(EfficientNet)] as DL_CNN_EffNet
' 序列模型
[RNN\n(基础版)] as DL_RNN_Base
[LSTM\n(基础版)] as DL_LSTM_Base
[GRU\n(基础版)] as DL_GRU_Base
[Bi-LSTM\n(双向LSTM)] as DL_BiLSTM
[Bi-GRU\n(双向GRU)] as DL_BiGRU
[Transformer\n(基础版)] as DL_Transformer_Base
[BERT\n(基础版)] as DL_BERT_Base
[GPT\n(基础版)] as DL_GPT_Base
' 生成模型
[GAN\n(基础版)] as DL_GAN_Base
[DCGAN\n(深度卷积GAN)] as DL_DCGAN
[WGAN\n(Wasserstein GAN)] as DL_WGAN
[VAE\n(变分自编码器)] as DL_VAE_Base
[CVAE\n(条件VAE)] as DL_CVAE
' 迁移学习
[Fine-tuning\n(微调)] as DL_Finetune
[Feature Extraction\n(特征提取)] as DL_FeatExtract
[Domain Adaptation\n(域适配)] as DL_DomainAdapt
}
' ===================== 第十层:异常检测【9类】 =====================
package "异常检测【9类】" {
[孤立森林\n(IsolationForest)] as AD_IForest
[局部异常因子\n(LOF)] as AD_LOF
[OC-SVM\n(单类SVM)] as AD_OCSVM
[AutoEncoder\n(自编码器)] as AD_AE
[RobustPCA\n(鲁棒PCA)] as AD_RPCA
[OneClassRF\n(单类随机森林)] as AD_OneClassRF
[KNN异常检测] as AD_KNN
[GMM异常检测] as AD_GMM
[时间序列异常\n(MA/EWMA)] as AD_TS_EWMA
}
' ===================== 第十一层:应用场景 & 评估指标 =====================
package "典型应用场景【10类】" {
[数值预测\n(回归)] as Scene_Reg
[二分类\n(如欺诈检测)] as Scene_Clf_Bin
[多分类\n(如图像识别)] as Scene_Clf_Multi
[多标签分类] as Scene_Clf_MultiLabel
[用户分群\n(聚类)] as Scene_Clust_User
[异常检测\n(风控/故障)] as Scene_AD
[序列预测\n(时间序列)] as Scene_TS
[推荐系统\n(关联/协同)] as Scene_Rec
[强化决策\n(游戏/调度)] as Scene_RL
[生成任务\n(图像/文本)] as Scene_Generate
}
package "模型评估指标【16类】" {
' 回归指标
[MSE] as Metric_MSE
[RMSE] as Metric_RMSE
[MAE] as Metric_MAE
[MAPE] as Metric_MAPE
[R²] as Metric_R2
' 分类指标
[Accuracy] as Metric_ACC
[Precision] as Metric_Prec
[Recall] as Metric_Recall
[F1-Score] as Metric_F1
[AUC-ROC] as Metric_AUC
[AUC-PR] as Metric_AUCPR
' 聚类指标
[轮廓系数] as Metric_Silhouette
[CH指数] as Metric_CH
[DB指数] as Metric_DB
' 强化学习指标
[累计奖励] as Metric_RL_Reward
[胜率] as Metric_RL_Win
' 生成模型指标
[Inception Score] as Metric_Gen_IS
[FID] as Metric_Gen_FID
}
' ===================== 核心流程关系(算法间继承/改进/衍生) =====================
' 1. 数据预处理 → 所有算法层
Miss_Fill --> Miss_Interp : 基础填充→高级填充
Miss_Interp --> Miss_MICE : 插值→模型填充
Outlier_IQR --> Outlier_Detect : 统计法→检测法
Transform_Basic --> Transform_Power : 基础变换→幂变换
Encode_Label --> Encode_Onehot : 标签→独热
Encode_Onehot --> Encode_Target : 独热→目标编码
Norm_MinMax --> Norm_Zscore : 归一化→标准化
FS_Filter --> FS_Wrapper : 过滤→包裹法
FS_Wrapper --> FS_Embed : 包裹→嵌入法
Dim_PCA --> Dim_KernelPCA : 线性PCA→核PCA
Dim_TSNE --> Dim_UMAP_Base : TSNE→UMAP(高效版)
Split_Holdout --> Split_CV : 简单划分→交叉验证
Aug_SMOTE --> Aug_Image : 数值增强→图像增强
' 2. 传统统计学习 → 监督学习(基础→进阶)
Reg_OLS --> Reg_Ridge : 无正则→L2正则
Reg_Ridge --> Reg_ElasticNet : L2→L1+L2
Clf_Logistic_Bin --> Clf_Logistic_Multi : 二分类→多分类
Clf_LDA --> Clf_QDA : 线性判别→二次判别
TS_AR --> TS_MA : AR→MA
TS_MA --> TS_ARMA : MA→ARMA
TS_ARMA --> TS_ARIMA : ARMA→ARIMA
TS_ARIMA --> TS_SARIMA : ARIMA→季节性ARIMA
' 3. 树模型 → 集成学习(基础→改进)
Tree_ID3 --> Tree_C45 : ID3→C4.5(信息增益率)
Tree_C45 --> Tree_CART : C4.5→CART(基尼系数)
Tree_CART --> Ensemble_RF_Base : 单树→随机森林
Ensemble_RF_Base --> Ensemble_ExtraTrees : RF→极端随机树
Tree_CART --> Ensemble_GBDT_Base : 单树→GBDT
Ensemble_GBDT_Base --> Ensemble_XGB_Base : GBDT→XGBoost
Ensemble_XGB_Base --> Ensemble_XGB_Miss : 基础XGB→缺失值优化
Ensemble_XGB_Base --> Ensemble_XGB_Col : 基础XGB→列采样
Ensemble_XGB_Base --> Ensemble_XGB_EarlyStop : 基础XGB→早停
Ensemble_XGB_Base --> Ensemble_XGB_LR : XGB→XGB+LR
Ensemble_GBDT_Base --> Ensemble_LGB_Base : GBDT→LightGBM
Ensemble_LGB_Base --> Ensemble_LGB_Hist : 基础LGB→直方图优化
Ensemble_LGB_Base --> Ensemble_LGB_EFB : LGB→互斥特征捆绑
Ensemble_LGB_Base --> Ensemble_LGB_Reg : LGB→正则化
Ensemble_LGB_Base --> Ensemble_LGB_CatB : LGB→LGB+CatBoost
Ensemble_Ada_Base --> Ensemble_Ada_Real : 基础Ada→RealAda
Ensemble_Ada_Base --> Ensemble_Ada_Multi : 基础Ada→多分类Ada
Ensemble_GB_Base --> Ensemble_SGB : GB→随机GB
Ensemble_SGB --> Ensemble_HGB : 随机GB→直方图GB
Ensemble_Vote_Hard --> Ensemble_Vote_Soft : 硬投票→软投票
Ensemble_Bag_Base --> Ensemble_Bag_Paste : Bagging→Pasting
Ensemble_Bag_Base --> Ensemble_Bag_Patch : Bagging→RandomPatches
Ensemble_Stack_Single --> Ensemble_Stack_Multi : 单层Stack→多层Stack
Ensemble_Blend_Base --> Ensemble_Blend_Weight : 基础Blend→加权Blend
Ensemble_RF_Base --> Ensemble_RF_GBDT : RF→RF+GBDT堆叠
Ensemble_Ada_Base --> Ensemble_Ada_SVM : Ada→Ada+SVM
' 4. 核方法/近邻 → 改进关系
KNN_Base --> KNN_Weight : 基础KNN→加权KNN
KNN_Base --> KNN_KDTree : 基础KNN→KD树优化
KNN_KDTree --> KNN_BallTree : KD树→球树(高维)
KNN_Base --> KNN_Cosine : 欧氏距离→余弦距离
SVM_Linear --> SVM_Poly : 线性核→多项式核
SVM_Poly --> SVM_RBF : 多项式核→高斯核
SVM_RBF --> SVM_Laplace : 高斯核→拉普拉斯核
SVM_Linear --> SVM_SoftLinear : 硬间隔→软间隔
SVM_Linear --> SVM_Multi_OVA : 二分类→OVA多分类
SVM_Multi_OVA --> SVM_Multi_OVO : OVA→OVO多分类
SVM_Linear --> SVM_LS : 标准SVM→最小二乘SVM
SVM_C --> SVM_Nu : C-SVM→Nu-SVM
SVM_Linear --> SVM_OneClass : 监督SVM→单类SVM
' 5. 无监督聚类 → 改进关系
Clust_KMeans_Base --> Clust_KMeans_Plus : 基础KMeans→KMeans++
Clust_KMeans_Plus --> Clust_MiniKMeans : KMeans++→迷你批处理
Clust_KMeans_Base --> Clust_KMedoids_PAM : KMeans→KMedoids
Clust_KMedoids_PAM --> Clust_KMedians : KMedoids→KMedians
Clust_Hier_Agg --> Clust_Hier_Single : 凝聚聚类→单链接
Clust_Hier_Single --> Clust_Hier_Complete : 单链接→全链接
Clust_Hier_Complete --> Clust_Hier_Avg : 全链接→平均链接
Clust_Hier_Avg --> Clust_Hier_Ward : 平均链接→沃德法
Clust_DBSCAN_Base --> Clust_OPTICS_Base : DBSCAN→OPTICS
Clust_OPTICS_Base --> Clust_OPTICS_Imp : OPTICS→改进版
Clust_DBSCAN_Base --> Clust_HDBSCAN : DBSCAN→层次DBSCAN
Clust_MeanShift --> Clust_MeanShift_Band : 均值漂移→带宽优化
Clust_GMM_Base --> Clust_GMM_EM : 基础GMM→EM优化
Clust_GMM_EM --> Clust_BayesGMM : GMM→贝叶斯GMM
' 6. 关联规则 → 改进关系
AR_Apriori_Base --> AR_Apriori_Prune : 基础Apriori→剪枝优化
AR_Apriori_Base --> AR_FPG_Base : Apriori→FP-Growth
AR_FPG_Base --> AR_FPG_Parallel : FP-Growth→并行版
AR_Eclat_Base --> AR_Eclat_Vert : 基础Eclat→垂直数据优化
AR_PrefixSpan --> AR_SPADE : PrefixSpan→SPADE
AR_SPADE --> AR_GSP : SPADE→GSP
' 7. 半监督学习 → 改进关系
SSL_Pseudo_Base --> SSL_Pseudo_Conf : 基础伪标签→置信度过滤
SSL_SelfTrain_Base --> SSL_SelfTrain_Multi : 基础自训练→多模型
SSL_CoTrain_Base --> SSL_CoTrain_Plus : 基础协同训练→Co-Training+
SSL_CoTrain_Plus --> SSL_TriTrain : Co-Training+→Tri-Training
SSL_LabelProp --> SSL_LabelSpread : 标签传播→标签扩散
SSL_S3VM --> SSL_KMeans : 半监督SVM→半监督KMeans
' 8. 强化学习 → 改进关系
RL_Q_Base --> RL_SARSA_Base : Q-Learning→SARSA
RL_SARSA_Base --> RL_SARSA_Lambda : SARSA→SARSA(λ)
RL_Q_Base --> RL_DQN_Base : Q-Learning→DQN
RL_DQN_Base --> RL_DDQN : DQN→Double DQN
RL_DDQN --> RL_DuelDQN : Double DQN→Dueling DQN
RL_DuelDQN --> RL_PDQN : Dueling DQN→优先经验回放DQN
RL_PDQN --> RL_RainbowDQN : 优先DQN→Rainbow DQN
RL_PG_Base --> RL_REINFORCE : PG→REINFORCE
RL_REINFORCE --> RL_AC_Base : REINFORCE→Actor-Critic
RL_AC_Base --> RL_A2C : AC→同步AC
RL_A2C --> RL_A3C : A2C→异步AC
RL_AC_Base --> RL_PPO_Base : AC→PPO
RL_PPO_Base --> RL_TRPO : PPO→TRPO
RL_DDPG --> RL_TD3 : DDPG→TD3
RL_TD3 --> RL_SAC : TD3→SAC
RL_DDPG --> RL_MADDPG : DDPG→多智能体DDPG
RL_PPO_Base --> RL_MAPPO : PPO→多智能体PPO
' 9. 深度学习 → 改进关系
DL_MLP_Base --> DL_MLP_Dropout : 基础MLP→带Dropout
DL_CNN_LeNet --> DL_CNN_AlexNet : LeNet→AlexNet
DL_CNN_AlexNet --> DL_CNN_VGG : AlexNet→VGG
DL_CNN_VGG --> DL_CNN_ResNet : VGG→ResNet(残差)
DL_CNN_ResNet --> DL_CNN_ResNeXt : ResNet→ResNeXt
DL_CNN_ResNeXt --> DL_CNN_DenseNet : ResNeXt→DenseNet
DL_CNN_DenseNet --> DL_CNN_EffNet : DenseNet→EfficientNet
DL_RNN_Base --> DL_LSTM_Base : RNN→LSTM
DL_LSTM_Base --> DL_GRU_Base : LSTM→GRU
DL_LSTM_Base --> DL_BiLSTM : LSTM→双向LSTM
DL_GRU_Base --> DL_BiGRU : GRU→双向GRU
DL_Transformer_Base --> DL_BERT_Base : Transformer→BERT
DL_Transformer_Base --> DL_GPT_Base : Transformer→GPT
DL_GAN_Base --> DL_DCGAN : GAN→DCGAN
DL_DCGAN --> DL_WGAN : DCGAN→WGAN
DL_VAE_Base --> DL_CVAE : VAE→条件VAE
DL_Finetune --> DL_FeatExtract : 微调→特征提取
DL_FeatExtract --> DL_DomainAdapt : 特征提取→域适配
' 10. 异常检测 → 算法关联
AD_IForest --> AD_LOF : 孤立森林→LOF
AD_OCSVM --> AD_AE : 单类SVM→自编码器
AD_RPCA --> AD_IForest : 鲁棒PCA→孤立森林
AD_KNN --> AD_GMM : KNN异常→GMM异常
AD_TS_EWMA --> AD_AE : 时间序列统计→自编码器
' 11. 算法 → 应用场景
Reg_OLS --> Scene_Reg : 线性回归→数值预测
Ensemble_XGB_Base --> Scene_Reg : XGB→数值预测
Clf_Logistic_Bin --> Scene_Clf_Bin : 逻辑回归→二分类
Ensemble_LGB_Base --> Scene_Clf_Multi : LGB→多分类
SVM_Multi_OVA --> Scene_Clf_MultiLabel : SVM→多标签分类
Clust_KMeans_Plus --> Scene_Clust_User : KMeans++→用户分群
AD_IForest --> Scene_AD : 孤立森林→异常检测
TS_ARIMA --> Scene_TS : ARIMA→序列预测
AR_FPG_Base --> Scene_Rec : FP-Growth→推荐系统
RL_PPO_Base --> Scene_RL : PPO→强化决策
DL_GAN_Base --> Scene_Generate : GAN→生成任务
' 12. 应用场景 → 评估指标
Scene_Reg --> Metric_MSE : 回归→MSE
Scene_Reg --> Metric_RMSE : 回归→RMSE
Scene_Reg --> Metric_MAE : 回归→MAE
Scene_Reg --> Metric_R2 : 回归→R²
Scene_Clf_Bin --> Metric_ACC : 二分类→ACC
Scene_Clf_Bin --> Metric_Prec : 二分类→Precision
Scene_Clf_Bin --> Metric_Recall : 二分类→Recall
Scene_Clf_Bin --> Metric_F1 : 二分类→F1
Scene_Clf_Bin --> Metric_AUC : 二分类→AUC
Scene_Clust_User --> Metric_Silhouette : 聚类→轮廓系数
Scene_Clust_User --> Metric_CH : 聚类→CH指数
Scene_RL --> Metric_RL_Reward : 强化学习→累计奖励
Scene_Generate --> Metric_Gen_IS : 生成模型→Inception Score
Scene_Generate --> Metric_Gen_FID : 生成模型→FID
' ===================== 补充注释(关键算法分支) =====================
note right of Ensemble_XGB_Base
<b>树模型衍生链:</b>
ID3 → C4.5 → CART → GBDT → XGBoost → LightGBM → CatBoost
核心改进:正则化、缺失值处理、直方图优化、类别特征适配
end note
note bottom of RL_DQN_Base
<b>值迭代RL衍生链:</b>
Q-Learning → SARSA → DQN → Double DQN → Dueling DQN → Rainbow DQN
核心改进:经验回放、目标网络、优先采样、多分支融合
end note
note left of Clust_KMeans_Base
<b>聚类算法选型逻辑:</b>
• 球形簇→K-Means++
• 任意形状簇→DBSCAN/HDBSCAN
• 概率软聚类→GMM
• 高维数据→谱聚类/AffinityPropagation
end note
' ===================== 全局图例 =====================
legend right
<b>图例说明:</b>
• 实线箭头:算法继承/改进/衍生关系(左→右:基础→进阶)
• 算法分层:预处理→统计学习→监督/无监督→半监督/强化/深度学习→异常检测
• 覆盖规模:199+算法(含基础版/改进版/工程化变体)
• 评估逻辑:按任务类型(回归/分类/聚类/RL/生成)匹配专属指标
end legend
@enduml
2.2.3 渲染图表
方式 1:快捷键渲染(推荐)
- 将光标定位到代码文件内,按下
Alt+D(Windows/Linux)或Option+D(macOS),插件会自动渲染并在右侧打开预览窗口。
方式 2:右键菜单渲染
- 在代码编辑区右键 → 选择「PlantUML: Preview Current Diagram」,即可打开预览窗口。
方式 3:实时预览
-
插件默认开启 “实时预览”,修改代码后预览窗口会自动刷新,无需手动重新渲染。
image.png
2.3 导出高清图表
- 在预览窗口右上角,点击「导出」图标(下载样式);
- 选择输出格式:
- PNG:推荐,高清位图,适合嵌入 PPT/Word;
- SVG:矢量图,无限缩放不失真,适合大屏展示 / 网页嵌入;
- PDF:文档格式,适合打印 / 存档;
- 选择保存路径,点击「保存」即可。
2.4 常见问题解决
问题 1:预览窗口空白 / 提示 “Graphviz not found”
- 原因:Graphviz 未安装或环境变量未生效;
- 解决:
- 确认 Graphviz 已安装(
dot -version验证); - 重启 VSCode(环境变量生效需要重启);
- 若仍报错,手动配置 Graphviz 路径:
- VSCode 设置 → 搜索
PlantUML: Dot Path; - 填写 Graphviz 的
dot.exe路径(如 Windows:C:\Program Files\Graphviz\bin\dot.exe)。
- VSCode 设置 → 搜索
- 确认 Graphviz 已安装(
问题 2:渲染速度慢 / 图表显示不全
- 原因:算法全景图组件多(199 + 算法),渲染负载高;
- 解决:
- 关闭 VSCode 其他无关插件;
- 降低渲染分辨率(临时):设置 → 搜索
PlantUML: Preview Scale,调整为 0.8; - 导出时选择 SVG 格式(渲染更快,且无分辨率问题)。
问题 3:中文乱码
- 原因:VSCode 默认字体不支持中文;
- 解决:
- VSCode 设置 → 搜索
Font Family; - 添加中文字体(如
"Microsoft YaHei, Consolas, 'Courier New', monospace"); - 重启 VSCode。
- VSCode 设置 → 搜索
三、方案 2:PlantText 在线工具(免安装,快速渲染)
3.1 工具介绍
PlantText 是 PlantUML 官方推荐的在线渲染工具,无需安装任何软件,仅需浏览器即可完成代码编辑、渲染、导出,适合临时使用或无本地环境的场景。
- 官网地址:PlantText Online
3.2 渲染步骤
3.2.1 打开工具并清空默认代码
- 打开浏览器,访问
https://www.planttext.com/; - 页面左侧是代码编辑区,默认有示例代码,全选(
Ctrl+A)并删除。
3.2.2 粘贴代码并渲染
- 将上文修正后的完整 PlantUML 代码粘贴到左侧编辑区;
- 点击编辑区上方的「Refresh」按钮(或按
Ctrl+R),右侧会自动渲染图表;- 首次渲染可能需要 3-5 秒(加载 Graphviz 依赖),耐心等待。
3.2.3 导出图表
- 渲染完成后,点击右侧预览区下方的「Export」按钮;
- 选择输出格式:
- PNG:高清位图;
- SVG:矢量图(推荐);
- PDF:文档格式;
- TXT:仅导出代码(无意义);
- 点击对应格式,浏览器会自动下载文件。
3.3 优势与局限
优势
- 免安装:无需配置 Graphviz/VSCode,开箱即用;
- 跨平台:支持所有浏览器(Chrome/Firefox/Edge);
- 自动保存:代码编辑区会自动保存(基于浏览器缓存)。
局限
- 渲染速度:比本地插件慢(尤其复杂图表);
- 代码长度限制:免费版支持最大 1000 行代码(上文代码约 800 行,可正常使用);
- 隐私问题:代码会临时存储在服务器,敏感场景建议用本地方案。
3.4 常见问题解决
问题 1:渲染后图表排版错乱
- 原因:在线工具的 Graphviz 版本与本地不一致;
- 解决:
- 点击编辑区上方的「Settings」按钮;
- 在「Graphviz Engine」中切换引擎(如
dot/neato/fdp),推荐dot(与本地一致); - 重新点击「Refresh」渲染。
问题 2:导出的 PNG 模糊
- 原因:在线工具默认 PNG 分辨率较低;
- 解决:优先导出 SVG 格式,再用矢量图工具(如 Inkscape/Illustrator)转为高清 PNG。
四、渲染效果优化建议
无论使用哪种方案,针对上文的 “机器学习 199 + 算法体系全景图”,可通过以下方式优化渲染效果:
-
调整布局:若图表过宽 / 过长,可在代码开头添加
scale 0.8(缩小整体比例); -
颜色适配:若导出后颜色偏淡,可在代码中调整
skinparam的颜色值(如BorderColor #000000加深边框); -
字体优化:确保代码中指定中文字体(如
FontName "Microsoft YaHei"),避免中文显示异常; - 分模块渲染:若整体渲染卡顿,可将代码拆分为 “数据预处理层”“监督学习层” 等子模块,单独渲染后拼接。
五、总结
| 方案 | 优势 | 劣势 | 适用场景 |
|---|---|---|---|
| VSCode + PlantUML | 渲染快、高清、支持实时编辑 | 需要安装配置环境 | 日常开发 / 高频使用 / 复杂图表 |
| PlantText 在线工具 | 免安装、跨平台、操作简单 | 速度慢、分辨率有限、隐私风险 | 临时使用 / 快速预览 / 简单图表 |
对于上文的 “机器学习 199 + 算法体系全景图”,优先推荐 VSCode + PlantUML 插件,可获得最佳的渲染效果和操作体验;若仅需快速预览,可选择 PlantText 在线工具。
分享
详细介绍一下Graphviz的安装过程
如何在PlantText在线工具中渲染机器学习算法全景图?
机器学习算法全景图有哪些应用场景?
