本文將詳細(xì)講解如何在 VSCode + PlantUML 插件(本地高性能渲染)和 PlantText 在線工具(免安裝快速渲染)中,完整渲染上文的機(jī)器學(xué)習(xí) 199 + 算法體系 PlantUML 代碼,包含環(huán)境配置、操作步驟、常見問題解決等全流程。
一、前置知識(shí)
PlantUML 是一種通過文本描述生成 UML 圖(流程圖、架構(gòu)圖、時(shí)序圖等)的工具,支持多種輸出格式(PNG/SVG/PDF),上文的算法全景圖基于 PlantUML 語(yǔ)法編寫,需借助渲染工具將文本轉(zhuǎn)為可視化圖表。
二、方案 1:VSCode + PlantUML 插件(推薦,本地渲染)
2.1 環(huán)境準(zhǔn)備
2.1.1 安裝 VSCode
- 下載地址:VSCode 官方下載
- 安裝:根據(jù)操作系統(tǒng)(Windows/macOS/Linux)選擇對(duì)應(yīng)版本,默認(rèn)安裝即可(建議勾選 “添加到 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”(添加到系統(tǒng)環(huán)境變量),默認(rèn)安裝路徑
C:\Program Files\Graphviz\; - 驗(yàn)證:打開 CMD,輸入
dot -version,若顯示版本信息則安裝成功。
- 下載地址:Graphviz 官方下載(選擇 Windows 版本,如
-
macOS:
終端執(zhí)行brew install graphviz(需先安裝 Homebrew,若未安裝:/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)")。 -
Linux:
終端執(zhí)行sudo apt-get install graphviz(Debian/Ubuntu)或sudo yum install graphviz(CentOS)。
2.1.3 安裝 PlantUML 插件
- 打開 VSCode,點(diǎn)擊左側(cè)「擴(kuò)展」圖標(biāo)(快捷鍵
Ctrl+Shift+X); - 在搜索框輸入
PlantUML,選擇由jebbs開發(fā)的插件(下載量最高、官方推薦); - 點(diǎn)擊「安裝」,安裝完成后 VSCode 會(huì)提示 “重啟以生效”(可選,一般無需重啟)。
2.2 渲染步驟
2.2.1 創(chuàng)建 PlantUML 文件
- 打開 VSCode,新建文件夾(如
ML-Algorithm-Chart); - 在文件夾內(nèi)右鍵 → 「新建文件」,命名為
ML-Algorithms.puml(后綴必須為.puml/.plantuml/.pu,插件僅識(shí)別這些后綴)。
2.2.2 粘貼代碼
- 打開
ML-Algorithms.puml文件; - 全選刪除默認(rèn)內(nèi)容,粘貼上文修正后的完整 PlantUML 代碼;
- 保存文件(快捷鍵
Ctrl+S)。
' 全局樣式優(yōu)化:適配大量算法的可視化
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 機(jī)器學(xué)習(xí)199+算法體系全景圖(含衍生/改進(jìn)關(guān)系)
' ===================== 第一層:數(shù)據(jù)預(yù)處理(基礎(chǔ)層) =====================
package "數(shù)據(jù)預(yù)處理層【18類】" {
[缺失值處理\n(均值/中位數(shù)/眾數(shù)填充)] 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
[重復(fù)值處理\n(完全重復(fù)/近重復(fù))] as Duplicate
[數(shù)據(jù)變換\n(對(duì)數(shù)/指數(shù)/Box-Cox)] as Transform_Basic
[數(shù)據(jù)變換\n(Yeojohnson/Power)] as Transform_Power
[歸一化\n(Min-Max)] as Norm_MinMax
[標(biāo)準(zhǔn)化\n(Z-Score)] as Norm_Zscore
[正則化\n(L1/L2)] as Norm_L1L2
[類別編碼\n(標(biāo)簽編碼)] as Encode_Label
[類別編碼\n(獨(dú)熱編碼)] as Encode_Onehot
[類別編碼\n(目標(biāo)編碼)] 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
[數(shù)據(jù)劃分\n(hold-out/分層抽樣)] as Split_Holdout
[數(shù)據(jù)劃分\n(交叉驗(yàn)證:K折/留一)] as Split_CV
[數(shù)據(jù)增強(qiáng)\n(SMOTE/ADASYN)] as Aug_SMOTE
[數(shù)據(jù)增強(qiáng)\n(隨機(jī)翻轉(zhuǎn)/裁剪)] as Aug_Image
[數(shù)據(jù)增強(qiáng)\n(文本分詞/替換)] as Aug_Text
}
' ===================== 第二層:傳統(tǒng)統(tǒng)計(jì)學(xué)習(xí)算法【25類】 =====================
package "傳統(tǒng)統(tǒng)計(jì)學(xué)習(xí)【25類】" {
[線性回歸\n(普通最小二乘)] as Reg_OLS
[線性回歸\n(加權(quá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(多項(xiàng)式)] as Clf_NB_Multi
[樸素貝葉斯\n(伯努利)] as Clf_NB_Bernoulli
[泊松回歸] as Reg_Poisson
[負(fù)二項(xiàng)回歸] as Reg_NegBin
[Cox比例風(fēng)險(xiǎn)回歸] as Reg_Cox
[時(shí)間序列AR] as TS_AR
[時(shí)間序列MA] as TS_MA
[時(shí)間序列ARMA] as TS_ARMA
[時(shí)間序列ARIMA] as TS_ARIMA
[時(shí)間序列SARIMA] as TS_SARIMA
[時(shí)間序列VAR] as TS_VAR
[格蘭杰因果檢驗(yàn)] as Stat_Granger
[卡方檢驗(yàn)] as Stat_Chi2
[t檢驗(yàn)/ANOVA] as Stat_T_ANOVA
[皮爾遜/斯皮爾曼相關(guān)] as Stat_Corr
}
' ===================== 第三層:監(jiān)督學(xué)習(xí)-樹模型/集成學(xué)習(xí)【42類】 =====================
package "監(jiān)督學(xué)習(xí)-樹模型/集成學(xué)習(xí)【42類】" {
' 基礎(chǔ)樹模型
[決策樹\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
[隨機(jī)森林\n(基礎(chǔ)版)] as Ensemble_RF_Base
[隨機(jī)森林\n(ExtraTrees)] as Ensemble_ExtraTrees
[隨機(jī)森林\n(RF-PCA)] as Ensemble_RF_PCA
' 提升樹
[GBDT\n(基礎(chǔ)版)] as Ensemble_GBDT_Base
[XGBoost\n(基礎(chǔ)版)] as Ensemble_XGB_Base
[XGBoost\n(帶缺失值處理)] as Ensemble_XGB_Miss
[XGBoost\n(列采樣版)] as Ensemble_XGB_Col
[LightGBM\n(基礎(chǔ)版)] as Ensemble_LGB_Base
[LightGBM\n(直方圖優(yōu)化)] as Ensemble_LGB_Hist
[LightGBM\n(互斥特征捆綁)] as Ensemble_LGB_EFB
[CatBoost\n(基礎(chǔ)版)] as Ensemble_CatB_Base
[CatBoost\n(類別特征優(yōu)化)] as Ensemble_CatB_Cat
[CatBoost\n(有序提升)] as Ensemble_CatB_Ord
[AdaBoost\n(基礎(chǔ)版)] as Ensemble_Ada_Base
[AdaBoost\n(RealAdaBoost)] as Ensemble_Ada_Real
[AdaBoost\n(MultiAdaBoost)] as Ensemble_Ada_Multi
[GradientBoost\n(基礎(chǔ)版)] as Ensemble_GB_Base
[StochasticGB\n(隨機(jī)梯度提升)] as Ensemble_SGB
[HistogramGB\n(直方圖梯度提升)] as Ensemble_HGB
' 堆疊/混合集成
[Stacking\n(單層)] as Ensemble_Stack_Single
[Stacking\n(多層)] as Ensemble_Stack_Multi
[Blending\n(基礎(chǔ)版)] as Ensemble_Blend_Base
[Blending\n(加權(quán)融合)] as Ensemble_Blend_Weight
[Voting\n(硬投票)] as Ensemble_Vote_Hard
[Voting\n(軟投票)] as Ensemble_Vote_Soft
[Bagging\n(基礎(chǔ)版)] 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+交叉驗(yàn)證] as Ensemble_CatB_CV
[集成學(xué)習(xí)+網(wǎng)格搜索] as Ensemble_GridSearch
[集成學(xué)習(xí)+貝葉斯優(yōu)化] as Ensemble_BayesOpt
}
' ===================== 第四層:監(jiān)督學(xué)習(xí)-核方法/近鄰【18類】 =====================
package "監(jiān)督學(xué)習(xí)-核方法/近鄰【18類】" {
[KNN\n(基礎(chǔ)版)] as KNN_Base
[KNN\n(加權(quán)KNN)] as KNN_Weight
[KNN\n(KD樹優(yōu)化)] as KNN_KDTree
[KNN\n(球樹優(yōu)化)] as KNN_BallTree
[KNN\n(余弦距離)] as KNN_Cosine
[KNN\n(曼哈頓距離)] as KNN_Manhattan
[SVM\n(線性核)] as SVM_Linear
[SVM\n(多項(xiàng)式核)] 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
}
' ===================== 第五層:無監(jiān)督學(xué)習(xí)-聚類【24類】 =====================
package "無監(jiān)督學(xué)習(xí)-聚類【24類】" {
' 劃分式聚類
[K-Means\n(基礎(chǔ)版)] as Clust_KMeans_Base
[K-Means++\n(初始化優(yōu)化)] 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(基礎(chǔ)版)] as Clust_DBSCAN_Base
[OPTICS\n(基礎(chǔ)版)] as Clust_OPTICS_Base
[OPTICS\n(改進(jìn)版)] as Clust_OPTICS_Imp
[HDBSCAN\n(層次DBSCAN)] as Clust_HDBSCAN
[MeanShift\n(均值漂移)] as Clust_MeanShift
[MeanShift\n(帶寬優(yōu)化)] as Clust_MeanShift_Band
' 概率聚類
[GMM\n(高斯混合)] as Clust_GMM_Base
[GMM\n(EM優(yōu)化)] 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
}
' ===================== 第六層:無監(jiān)督學(xué)習(xí)-關(guān)聯(lián)規(guī)則/降維【16類】 =====================
package "無監(jiān)督學(xué)習(xí)-關(guān)聯(lián)規(guī)則/降維【16類】" {
' 關(guān)聯(lián)規(guī)則
[Apriori\n(基礎(chǔ)版)] as AR_Apriori_Base
[Apriori\n(剪枝優(yōu)化)] as AR_Apriori_Prune
[FP-Growth\n(基礎(chǔ)版)] as AR_FPG_Base
[FP-Growth\n(并行版)] as AR_FPG_Parallel
[Eclat\n(基礎(chǔ)版)] as AR_Eclat_Base
[Eclat\n(垂直數(shù)據(jù)優(yōu)化)] as AR_Eclat_Vert
[PrefixSpan\n(序列模式)] as AR_PrefixSpan
[SPADE\n(序列模式挖掘)] as AR_SPADE
[GSP\n(廣義序列模式)] as AR_GSP
' 降維
[PCA\n(基礎(chǔ)版)] 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(基礎(chǔ)版)] as Dim_TSNE_Base
[UMAP\n(基礎(chǔ)版)] as Dim_UMAP_Base
[NMF\n(非負(fù)矩陣分解)] as Dim_NMF_Base
}
' ===================== 第七層:半監(jiān)督學(xué)習(xí)【12類】 =====================
package "半監(jiān)督學(xué)習(xí)【12類】" {
[偽標(biāo)簽法\n(基礎(chǔ)版)] as SSL_Pseudo_Base
[偽標(biāo)簽法\n(置信度過濾)] as SSL_Pseudo_Conf
[自訓(xùn)練\n(基礎(chǔ)版)] as SSL_SelfTrain_Base
[自訓(xùn)練\n(多模型自訓(xùn)練)] as SSL_SelfTrain_Multi
[協(xié)同訓(xùn)練\n(基礎(chǔ)版)] as SSL_CoTrain_Base
[協(xié)同訓(xùn)練\n(Co-Training+)] as SSL_CoTrain_Plus
[Tri-Training] as SSL_TriTrain
[LabelPropagation\n(標(biāo)簽傳播)] as SSL_LabelProp
[LabelSpreading\n(標(biāo)簽擴(kuò)散)] as SSL_LabelSpread
[半監(jiān)督SVM\n(S3VM)] as SSL_S3VM
[半監(jiān)督KMeans] as SSL_KMeans
[半監(jiān)督GMM] as SSL_GMM
}
' ===================== 第八層:強(qiáng)化學(xué)習(xí)【18類】 =====================
package "強(qiáng)化學(xué)習(xí)【18類】" {
' 值迭代
[Q-Learning\n(基礎(chǔ)版)] as RL_Q_Base
[SARSA\n(基礎(chǔ)版)] as RL_SARSA_Base
[SARSA(λ)] as RL_SARSA_Lambda
[DQN\n(深度Q網(wǎng)絡(luò))] 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(基礎(chǔ)版)] as RL_REINFORCE
[Actor-Critic\n(基礎(chǔ)版)] as RL_AC_Base
[A2C\n(同步AC)] as RL_A2C
[A3C\n(異步AC)] as RL_A3C
[PPO\n(近端策略優(yōu)化)] as RL_PPO_Base
[TRPO\n(信任域策略優(yōu)化)] as RL_TRPO
[DDPG\n(深度確定性策略)] as RL_DDPG
[TD3\n(雙延遲DDPG)] as RL_TD3
[SAC\n(軟演員評(píng)論員)] as RL_SAC
' 多智能體
[MADDPG\n(多智能體DDPG)] as RL_MADDPG
[MAPPO\n(多智能體PPO)] as RL_MAPPO
}
' ===================== 第九層:深度學(xué)習(xí)【23類】 =====================
package "深度學(xué)習(xí)【23類】" {
' 基礎(chǔ)網(wǎng)絡(luò)
[MLP\n(多層感知機(jī))] as DL_MLP_Base
[MLP\n(帶Dropout)] as DL_MLP_Dropout
[CNN\n(基礎(chǔ)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(基礎(chǔ)版)] as DL_RNN_Base
[LSTM\n(基礎(chǔ)版)] as DL_LSTM_Base
[GRU\n(基礎(chǔ)版)] as DL_GRU_Base
[Bi-LSTM\n(雙向LSTM)] as DL_BiLSTM
[Bi-GRU\n(雙向GRU)] as DL_BiGRU
[Transformer\n(基礎(chǔ)版)] as DL_Transformer_Base
[BERT\n(基礎(chǔ)版)] as DL_BERT_Base
[GPT\n(基礎(chǔ)版)] as DL_GPT_Base
' 生成模型
[GAN\n(基礎(chǔ)版)] 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
' 遷移學(xué)習(xí)
[Fine-tuning\n(微調(diào))] as DL_Finetune
[Feature Extraction\n(特征提取)] as DL_FeatExtract
[Domain Adaptation\n(域適配)] as DL_DomainAdapt
}
' ===================== 第十層:異常檢測(cè)【9類】 =====================
package "異常檢測(cè)【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(單類隨機(jī)森林)] as AD_OneClassRF
[KNN異常檢測(cè)] as AD_KNN
[GMM異常檢測(cè)] as AD_GMM
[時(shí)間序列異常\n(MA/EWMA)] as AD_TS_EWMA
}
' ===================== 第十一層:應(yīng)用場(chǎng)景 & 評(píng)估指標(biāo) =====================
package "典型應(yīng)用場(chǎng)景【10類】" {
[數(shù)值預(yù)測(cè)\n(回歸)] as Scene_Reg
[二分類\n(如欺詐檢測(cè))] as Scene_Clf_Bin
[多分類\n(如圖像識(shí)別)] as Scene_Clf_Multi
[多標(biāo)簽分類] as Scene_Clf_MultiLabel
[用戶分群\n(聚類)] as Scene_Clust_User
[異常檢測(cè)\n(風(fēng)控/故障)] as Scene_AD
[序列預(yù)測(cè)\n(時(shí)間序列)] as Scene_TS
[推薦系統(tǒng)\n(關(guān)聯(lián)/協(xié)同)] as Scene_Rec
[強(qiáng)化決策\(yùn)n(游戲/調(diào)度)] as Scene_RL
[生成任務(wù)\n(圖像/文本)] as Scene_Generate
}
package "模型評(píng)估指標(biāo)【16類】" {
' 回歸指標(biāo)
[MSE] as Metric_MSE
[RMSE] as Metric_RMSE
[MAE] as Metric_MAE
[MAPE] as Metric_MAPE
[R2] as Metric_R2
' 分類指標(biāo)
[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
' 聚類指標(biāo)
[輪廓系數(shù)] as Metric_Silhouette
[CH指數(shù)] as Metric_CH
[DB指數(shù)] as Metric_DB
' 強(qiáng)化學(xué)習(xí)指標(biāo)
[累計(jì)獎(jiǎng)勵(lì)] as Metric_RL_Reward
[勝率] as Metric_RL_Win
' 生成模型指標(biāo)
[Inception Score] as Metric_Gen_IS
[FID] as Metric_Gen_FID
}
' ===================== 核心流程關(guān)系(算法間繼承/改進(jìn)/衍生) =====================
' 1. 數(shù)據(jù)預(yù)處理 → 所有算法層
Miss_Fill --> Miss_Interp : 基礎(chǔ)填充→高級(jí)填充
Miss_Interp --> Miss_MICE : 插值→模型填充
Outlier_IQR --> Outlier_Detect : 統(tǒng)計(jì)法→檢測(cè)法
Transform_Basic --> Transform_Power : 基礎(chǔ)變換→冪變換
Encode_Label --> Encode_Onehot : 標(biāo)簽→獨(dú)熱
Encode_Onehot --> Encode_Target : 獨(dú)熱→目標(biāo)編碼
Norm_MinMax --> Norm_Zscore : 歸一化→標(biāo)準(zhǔn)化
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 : 簡(jiǎn)單劃分→交叉驗(yàn)證
Aug_SMOTE --> Aug_Image : 數(shù)值增強(qiáng)→圖像增強(qiáng)
' 2. 傳統(tǒng)統(tǒng)計(jì)學(xué)習(xí) → 監(jiān)督學(xué)習(xí)(基礎(chǔ)→進(jìn)階)
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→季節(jié)性ARIMA
' 3. 樹模型 → 集成學(xué)習(xí)(基礎(chǔ)→改進(jìn))
Tree_ID3 --> Tree_C45 : ID3→C4.5(信息增益率)
Tree_C45 --> Tree_CART : C4.5→CART(基尼系數(shù))
Tree_CART --> Ensemble_RF_Base : 單樹→隨機(jī)森林
Ensemble_RF_Base --> Ensemble_ExtraTrees : RF→極端隨機(jī)樹
Tree_CART --> Ensemble_GBDT_Base : 單樹→GBDT
Ensemble_GBDT_Base --> Ensemble_XGB_Base : GBDT→XGBoost
Ensemble_XGB_Base --> Ensemble_XGB_Miss : 基礎(chǔ)XGB→缺失值優(yōu)化
Ensemble_XGB_Base --> Ensemble_XGB_Col : 基礎(chǔ)XGB→列采樣
Ensemble_XGB_Base --> Ensemble_XGB_EarlyStop : 基礎(chǔ)XGB→早停
Ensemble_XGB_Base --> Ensemble_XGB_LR : XGB→XGB+LR
Ensemble_GBDT_Base --> Ensemble_LGB_Base : GBDT→LightGBM
Ensemble_LGB_Base --> Ensemble_LGB_Hist : 基礎(chǔ)LGB→直方圖優(yōu)化
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 : 基礎(chǔ)Ada→RealAda
Ensemble_Ada_Base --> Ensemble_Ada_Multi : 基礎(chǔ)Ada→多分類Ada
Ensemble_GB_Base --> Ensemble_SGB : GB→隨機(jī)GB
Ensemble_SGB --> Ensemble_HGB : 隨機(jī)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 : 基礎(chǔ)Blend→加權(quán)Blend
Ensemble_RF_Base --> Ensemble_RF_GBDT : RF→RF+GBDT堆疊
Ensemble_Ada_Base --> Ensemble_Ada_SVM : Ada→Ada+SVM
' 4. 核方法/近鄰 → 改進(jìn)關(guān)系
KNN_Base --> KNN_Weight : 基礎(chǔ)KNN→加權(quán)KNN
KNN_Base --> KNN_KDTree : 基礎(chǔ)KNN→KD樹優(yōu)化
KNN_KDTree --> KNN_BallTree : KD樹→球樹(高維)
KNN_Base --> KNN_Cosine : 歐氏距離→余弦距離
SVM_Linear --> SVM_Poly : 線性核→多項(xiàng)式核
SVM_Poly --> SVM_RBF : 多項(xiàng)式核→高斯核
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 : 標(biāo)準(zhǔn)SVM→最小二乘SVM
SVM_C --> SVM_Nu : C-SVM→Nu-SVM
SVM_Linear --> SVM_OneClass : 監(jiān)督SVM→單類SVM
' 5. 無監(jiān)督聚類 → 改進(jìn)關(guān)系
Clust_KMeans_Base --> Clust_KMeans_Plus : 基礎(chǔ)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→改進(jìn)版
Clust_DBSCAN_Base --> Clust_HDBSCAN : DBSCAN→層次DBSCAN
Clust_MeanShift --> Clust_MeanShift_Band : 均值漂移→帶寬優(yōu)化
Clust_GMM_Base --> Clust_GMM_EM : 基礎(chǔ)GMM→EM優(yōu)化
Clust_GMM_EM --> Clust_BayesGMM : GMM→貝葉斯GMM
' 6. 關(guān)聯(lián)規(guī)則 → 改進(jìn)關(guān)系
AR_Apriori_Base --> AR_Apriori_Prune : 基礎(chǔ)Apriori→剪枝優(yōu)化
AR_Apriori_Base --> AR_FPG_Base : Apriori→FP-Growth
AR_FPG_Base --> AR_FPG_Parallel : FP-Growth→并行版
AR_Eclat_Base --> AR_Eclat_Vert : 基礎(chǔ)Eclat→垂直數(shù)據(jù)優(yōu)化
AR_PrefixSpan --> AR_SPADE : PrefixSpan→SPADE
AR_SPADE --> AR_GSP : SPADE→GSP
' 7. 半監(jiān)督學(xué)習(xí) → 改進(jìn)關(guān)系
SSL_Pseudo_Base --> SSL_Pseudo_Conf : 基礎(chǔ)偽標(biāo)簽→置信度過濾
SSL_SelfTrain_Base --> SSL_SelfTrain_Multi : 基礎(chǔ)自訓(xùn)練→多模型
SSL_CoTrain_Base --> SSL_CoTrain_Plus : 基礎(chǔ)協(xié)同訓(xùn)練→Co-Training+
SSL_CoTrain_Plus --> SSL_TriTrain : Co-Training+→Tri-Training
SSL_LabelProp --> SSL_LabelSpread : 標(biāo)簽傳播→標(biāo)簽擴(kuò)散
SSL_S3VM --> SSL_KMeans : 半監(jiān)督SVM→半監(jiān)督KMeans
' 8. 強(qiáng)化學(xué)習(xí) → 改進(jìn)關(guān)系
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→優(yōu)先經(jīng)驗(yàn)回放DQN
RL_PDQN --> RL_RainbowDQN : 優(yōu)先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. 深度學(xué)習(xí) → 改進(jìn)關(guān)系
DL_MLP_Base --> DL_MLP_Dropout : 基礎(chǔ)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 : 微調(diào)→特征提取
DL_FeatExtract --> DL_DomainAdapt : 特征提取→域適配
' 10. 異常檢測(cè) → 算法關(guān)聯(lián)
AD_IForest --> AD_LOF : 孤立森林→LOF
AD_OCSVM --> AD_AE : 單類SVM→自編碼器
AD_RPCA --> AD_IForest : 魯棒PCA→孤立森林
AD_KNN --> AD_GMM : KNN異?!鶪MM異常
AD_TS_EWMA --> AD_AE : 時(shí)間序列統(tǒng)計(jì)→自編碼器
' 11. 算法 → 應(yīng)用場(chǎng)景
Reg_OLS --> Scene_Reg : 線性回歸→數(shù)值預(yù)測(cè)
Ensemble_XGB_Base --> Scene_Reg : XGB→數(shù)值預(yù)測(cè)
Clf_Logistic_Bin --> Scene_Clf_Bin : 邏輯回歸→二分類
Ensemble_LGB_Base --> Scene_Clf_Multi : LGB→多分類
SVM_Multi_OVA --> Scene_Clf_MultiLabel : SVM→多標(biāo)簽分類
Clust_KMeans_Plus --> Scene_Clust_User : KMeans++→用戶分群
AD_IForest --> Scene_AD : 孤立森林→異常檢測(cè)
TS_ARIMA --> Scene_TS : ARIMA→序列預(yù)測(cè)
AR_FPG_Base --> Scene_Rec : FP-Growth→推薦系統(tǒng)
RL_PPO_Base --> Scene_RL : PPO→強(qiáng)化決策
DL_GAN_Base --> Scene_Generate : GAN→生成任務(wù)
' 12. 應(yīng)用場(chǎng)景 → 評(píng)估指標(biāo)
Scene_Reg --> Metric_MSE : 回歸→MSE
Scene_Reg --> Metric_RMSE : 回歸→RMSE
Scene_Reg --> Metric_MAE : 回歸→MAE
Scene_Reg --> Metric_R2 : 回歸→R2
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 : 聚類→輪廓系數(shù)
Scene_Clust_User --> Metric_CH : 聚類→CH指數(shù)
Scene_RL --> Metric_RL_Reward : 強(qiáng)化學(xué)習(xí)→累計(jì)獎(jiǎng)勵(lì)
Scene_Generate --> Metric_Gen_IS : 生成模型→Inception Score
Scene_Generate --> Metric_Gen_FID : 生成模型→FID
' ===================== 補(bǔ)充注釋(關(guān)鍵算法分支) =====================
note right of Ensemble_XGB_Base
<b>樹模型衍生鏈:</b>
ID3 → C4.5 → CART → GBDT → XGBoost → LightGBM → CatBoost
核心改進(jìn):正則化、缺失值處理、直方圖優(yōu)化、類別特征適配
end note
note bottom of RL_DQN_Base
<b>值迭代RL衍生鏈:</b>
Q-Learning → SARSA → DQN → Double DQN → Dueling DQN → Rainbow DQN
核心改進(jìn):經(jīng)驗(yàn)回放、目標(biāo)網(wǎng)絡(luò)、優(yōu)先采樣、多分支融合
end note
note left of Clust_KMeans_Base
<b>聚類算法選型邏輯:</b>
? 球形簇→K-Means++
? 任意形狀簇→DBSCAN/HDBSCAN
? 概率軟聚類→GMM
? 高維數(shù)據(jù)→譜聚類/AffinityPropagation
end note
' ===================== 全局圖例 =====================
legend right
<b>圖例說明:</b>
? 實(shí)線箭頭:算法繼承/改進(jìn)/衍生關(guān)系(左→右:基礎(chǔ)→進(jìn)階)
? 算法分層:預(yù)處理→統(tǒng)計(jì)學(xué)習(xí)→監(jiān)督/無監(jiān)督→半監(jiān)督/強(qiáng)化/深度學(xué)習(xí)→異常檢測(cè)
? 覆蓋規(guī)模:199+算法(含基礎(chǔ)版/改進(jìn)版/工程化變體)
? 評(píng)估邏輯:按任務(wù)類型(回歸/分類/聚類/RL/生成)匹配專屬指標(biāo)
end legend
@enduml
2.2.3 渲染圖表
方式 1:快捷鍵渲染(推薦)
- 將光標(biāo)定位到代碼文件內(nèi),按下
Alt+D(Windows/Linux)或Option+D(macOS),插件會(huì)自動(dòng)渲染并在右側(cè)打開預(yù)覽窗口。
方式 2:右鍵菜單渲染
- 在代碼編輯區(qū)右鍵 → 選擇「PlantUML: Preview Current Diagram」,即可打開預(yù)覽窗口。
方式 3:實(shí)時(shí)預(yù)覽
-
插件默認(rèn)開啟 “實(shí)時(shí)預(yù)覽”,修改代碼后預(yù)覽窗口會(huì)自動(dòng)刷新,無需手動(dòng)重新渲染。
image.png
2.3 導(dǎo)出高清圖表
- 在預(yù)覽窗口右上角,點(diǎn)擊「導(dǎo)出」圖標(biāo)(下載樣式);
- 選擇輸出格式:
- PNG:推薦,高清位圖,適合嵌入 PPT/Word;
- SVG:矢量圖,無限縮放不失真,適合大屏展示 / 網(wǎng)頁(yè)嵌入;
- PDF:文檔格式,適合打印 / 存檔;
- 選擇保存路徑,點(diǎn)擊「保存」即可。
2.4 常見問題解決
問題 1:預(yù)覽窗口空白 / 提示 “Graphviz not found”
- 原因:Graphviz 未安裝或環(huán)境變量未生效;
- 解決:
- 確認(rèn) Graphviz 已安裝(
dot -version驗(yàn)證); - 重啟 VSCode(環(huán)境變量生效需要重啟);
- 若仍報(bào)錯(cuò),手動(dòng)配置 Graphviz 路徑:
- VSCode 設(shè)置 → 搜索
PlantUML: Dot Path; - 填寫 Graphviz 的
dot.exe路徑(如 Windows:C:\Program Files\Graphviz\bin\dot.exe)。
- VSCode 設(shè)置 → 搜索
- 確認(rèn) Graphviz 已安裝(
問題 2:渲染速度慢 / 圖表顯示不全
- 原因:算法全景圖組件多(199 + 算法),渲染負(fù)載高;
- 解決:
- 關(guān)閉 VSCode 其他無關(guān)插件;
- 降低渲染分辨率(臨時(shí)):設(shè)置 → 搜索
PlantUML: Preview Scale,調(diào)整為 0.8; - 導(dǎo)出時(shí)選擇 SVG 格式(渲染更快,且無分辨率問題)。
問題 3:中文亂碼
- 原因:VSCode 默認(rèn)字體不支持中文;
- 解決:
- VSCode 設(shè)置 → 搜索
Font Family; - 添加中文字體(如
"Microsoft YaHei, Consolas, 'Courier New', monospace"); - 重啟 VSCode。
- VSCode 設(shè)置 → 搜索
三、方案 2:PlantText 在線工具(免安裝,快速渲染)
3.1 工具介紹
PlantText 是 PlantUML 官方推薦的在線渲染工具,無需安裝任何軟件,僅需瀏覽器即可完成代碼編輯、渲染、導(dǎo)出,適合臨時(shí)使用或無本地環(huán)境的場(chǎng)景。
- 官網(wǎng)地址:PlantText Online
3.2 渲染步驟
3.2.1 打開工具并清空默認(rèn)代碼
- 打開瀏覽器,訪問
https://www.planttext.com/; - 頁(yè)面左側(cè)是代碼編輯區(qū),默認(rèn)有示例代碼,全選(
Ctrl+A)并刪除。
3.2.2 粘貼代碼并渲染
- 將上文修正后的完整 PlantUML 代碼粘貼到左側(cè)編輯區(qū);
- 點(diǎn)擊編輯區(qū)上方的「Refresh」按鈕(或按
Ctrl+R),右側(cè)會(huì)自動(dòng)渲染圖表;- 首次渲染可能需要 3-5 秒(加載 Graphviz 依賴),耐心等待。
3.2.3 導(dǎo)出圖表
- 渲染完成后,點(diǎn)擊右側(cè)預(yù)覽區(qū)下方的「Export」按鈕;
- 選擇輸出格式:
- PNG:高清位圖;
- SVG:矢量圖(推薦);
- PDF:文檔格式;
- TXT:僅導(dǎo)出代碼(無意義);
- 點(diǎn)擊對(duì)應(yīng)格式,瀏覽器會(huì)自動(dòng)下載文件。
3.3 優(yōu)勢(shì)與局限
優(yōu)勢(shì)
- 免安裝:無需配置 Graphviz/VSCode,開箱即用;
- 跨平臺(tái):支持所有瀏覽器(Chrome/Firefox/Edge);
- 自動(dòng)保存:代碼編輯區(qū)會(huì)自動(dòng)保存(基于瀏覽器緩存)。
局限
- 渲染速度:比本地插件慢(尤其復(fù)雜圖表);
- 代碼長(zhǎng)度限制:免費(fèi)版支持最大 1000 行代碼(上文代碼約 800 行,可正常使用);
- 隱私問題:代碼會(huì)臨時(shí)存儲(chǔ)在服務(wù)器,敏感場(chǎng)景建議用本地方案。
3.4 常見問題解決
問題 1:渲染后圖表排版錯(cuò)亂
- 原因:在線工具的 Graphviz 版本與本地不一致;
- 解決:
- 點(diǎn)擊編輯區(qū)上方的「Settings」按鈕;
- 在「Graphviz Engine」中切換引擎(如
dot/neato/fdp),推薦dot(與本地一致); - 重新點(diǎn)擊「Refresh」渲染。
問題 2:導(dǎo)出的 PNG 模糊
- 原因:在線工具默認(rèn) PNG 分辨率較低;
- 解決:優(yōu)先導(dǎo)出 SVG 格式,再用矢量圖工具(如 Inkscape/Illustrator)轉(zhuǎn)為高清 PNG。
四、渲染效果優(yōu)化建議
無論使用哪種方案,針對(duì)上文的 “機(jī)器學(xué)習(xí) 199 + 算法體系全景圖”,可通過以下方式優(yōu)化渲染效果:
-
調(diào)整布局:若圖表過寬 / 過長(zhǎng),可在代碼開頭添加
scale 0.8(縮小整體比例); -
顏色適配:若導(dǎo)出后顏色偏淡,可在代碼中調(diào)整
skinparam的顏色值(如BorderColor #000000加深邊框); -
字體優(yōu)化:確保代碼中指定中文字體(如
FontName "Microsoft YaHei"),避免中文顯示異常; - 分模塊渲染:若整體渲染卡頓,可將代碼拆分為 “數(shù)據(jù)預(yù)處理層”“監(jiān)督學(xué)習(xí)層” 等子模塊,單獨(dú)渲染后拼接。
五、總結(jié)
| 方案 | 優(yōu)勢(shì) | 劣勢(shì) | 適用場(chǎng)景 |
|---|---|---|---|
| VSCode + PlantUML | 渲染快、高清、支持實(shí)時(shí)編輯 | 需要安裝配置環(huán)境 | 日常開發(fā) / 高頻使用 / 復(fù)雜圖表 |
| PlantText 在線工具 | 免安裝、跨平臺(tái)、操作簡(jiǎn)單 | 速度慢、分辨率有限、隱私風(fēng)險(xiǎn) | 臨時(shí)使用 / 快速預(yù)覽 / 簡(jiǎn)單圖表 |
對(duì)于上文的 “機(jī)器學(xué)習(xí) 199 + 算法體系全景圖”,優(yōu)先推薦 VSCode + PlantUML 插件,可獲得最佳的渲染效果和操作體驗(yàn);若僅需快速預(yù)覽,可選擇 PlantText 在線工具。
分享
詳細(xì)介紹一下Graphviz的安裝過程
如何在PlantText在線工具中渲染機(jī)器學(xué)習(xí)算法全景圖?
機(jī)器學(xué)習(xí)算法全景圖有哪些應(yīng)用場(chǎng)景?
