多模型统一导出 t-SNE 可视化数据的工程实践(1DCNN / DAN / DNN / DRN / Transformer)

多模型统一导出 t-SNE 可视化数据的工程实践(1DCNN / DAN / DNN / DRN / Transformer)

一、写在前面:为什么要"统一导出 t-SNE 数据"

在深度学习故障识别与特征分析中,t-SNE 可视化是最常用的手段之一,用于直观展示:

  • 不同类别样本在特征空间中的聚类情况;
  • 不同模型特征提取能力的差异;
  • 真实标签与预测标签下特征分布的一致性或偏差。

但在实际工程中,随着模型数量增多(如 1DCNN、DAN、DNN、DRN、Transformer、SNN 等),如果每个模型单独随意写一段 t-SNE 代码,后期会面临:

  • 文件命名混乱;
  • 特征层含义不统一;
  • 可视化结果难以横向对比;
  • 论文作图时重复返工。

因此,我在实验中采用了**"统一导出 t-SNE 数据 → Excel 保存 → 后处理绘图"**的方式,对不同模型的特征与预测结果进行规范化整理。


二、整体设计思路

所有模型的 t-SNE 导出逻辑统一遵循 两类数据:

(1)特征层 t-SNE(按真实标签)

用于分析模型特征提取能力:

text 复制代码
原始输入 → 特征层输出 → t-SNE → Class = Y_test

(2)预测结果 t-SNE(按预测标签)

用于分析模型判别边界与误分类情况:

text 复制代码
预测结果 XY → t-SNE → Class = y_pred

最终统一导出为 Excel 文件,便于:

  • Python / MATLAB / Origin / Excel 作图;
  • 论文中统一配色与版式;
  • 多模型对比分析。

三、1DCNN-SNN 模型的 t-SNE 导出示例

1️⃣ 特征层输出(真实标签)

python 复制代码
tsne = TSNE(n_components=2, perplexity=30, random_state=42)
X_tsne = tsne.fit_transform(features_test.numpy())

tsne_df = pd.DataFrame(X_tsne, columns=['t-SNE Feature 1', 't-SNE Feature 2'])
tsne_df['Class'] = Y_test.numpy()

tsne_df.to_excel('./1DCNN-SNN预测图表/tSNE_features.xlsx', index=False)

2️⃣ 预测结果 t-SNE(预测标签)

python 复制代码
xy_data = pd.read_excel('./1DCNN-SNN预测图表/预测-XY.xlsx').values

tsne2 = TSNE(n_components=2, perplexity=30, random_state=42)
X_tsne2 = tsne2.fit_transform(xy_data[:, :-1])

tsne2_df = pd.DataFrame(X_tsne2, columns=['t-SNE Feature 1', 't-SNE Feature 2'])
tsne2_df['Class'] = xy_data[:, -1]

tsne2_df.to_excel('./1DCNN-SNN预测图表/tSNE_predicted_XY.xlsx', index=False)

四、标准 1DCNN 模型(Flatten 特征)

与 SNN 不同,标准 1DCNN 更关注 Flatten 后的高维特征表示。

python 复制代码
tsne = TSNE(n_components=2, perplexity=30, random_state=42)
X_tsne = tsne.fit_transform(features_test.numpy())

tsne_df = pd.DataFrame(X_tsne, columns=['t-SNE Feature 1', 't-SNE Feature 2'])
tsne_df['Class'] = Y_test.numpy()

tsne_df.to_excel('./1DCNN预测图表/tSNE_flatten_features.xlsx', index=False)

预测-XY 部分与前述方法完全一致,仅目录不同。


五、DAN 模型(编码特征)

DAN(Deep Autoencoder Network)通常分析编码器输出特征:

python 复制代码
tsne = TSNE(n_components=2, perplexity=30, random_state=42)
X_tsne = tsne.fit_transform(encoded_features.numpy())

tsne_df = pd.DataFrame(X_tsne, columns=['t-SNE Feature 1', 't-SNE Feature 2'])
tsne_df['Class'] = Y_test.numpy()

tsne_df.to_excel('./DAN预测图表/tSNE_encoded_features.xlsx', index=False)

六、DNN 模型(隐藏层特征)

对于 DNN,更有意义的是分析倒数隐藏层输出:

python 复制代码
_, test_features_output = model(X_test)

tsne = TSNE(n_components=2, perplexity=30, random_state=42)
X_tsne = tsne.fit_transform(test_features_output.detach().numpy())

tsne_df = pd.DataFrame(X_tsne, columns=['t-SNE Feature 1', 't-SNE Feature 2'])
tsne_df['Class'] = Y_test.numpy()

tsne_df.to_excel('./DNN预测图表/tSNE_hidden_features.xlsx', index=False)

七、DRN 模型(特征层输出)

DRN(深度残差网络)同样遵循统一接口:

python 复制代码
tsne = TSNE(n_components=2, perplexity=30, random_state=42)
X_tsne = tsne.fit_transform(features_test.numpy())

tsne_df = pd.DataFrame(X_tsne, columns=['t-SNE Feature 1', 't-SNE Feature 2'])
tsne_df['Class'] = Y_test.numpy()

tsne_df.to_excel('./DRN预测图表/tSNE_features.xlsx', index=False)

八、Transformer 模型(真实 / 预测双视角)

Transformer 模型中,编码器隐藏特征尤为重要,因此分别导出:

1️⃣ 按真实标签

python 复制代码
tsne = TSNE(n_components=2, init='pca', random_state=0)
x_feature_tsne = tsne.fit_transform(x_feature.cpu().numpy())

tsne_hidden_df = pd.DataFrame(
    x_feature_tsne,
    columns=['t-SNE Feature 1', 't-SNE Feature 2']
)
tsne_hidden_df['Class'] = Y_test.cpu().numpy()

tsne_hidden_df.to_excel('./Transformer预测图表/tSNE_hidden_features.xlsx', index=False)

2️⃣ 按预测标签

python 复制代码
tsne2 = TSNE(n_components=2, init='pca', random_state=0)
x_feature_tsne_pred = tsne2.fit_transform(x_feature.cpu().numpy())

tsne_pred_df = pd.DataFrame(
    x_feature_tsne_pred,
    columns=['t-SNE Feature 1', 't-SNE Feature 2']
)
tsne_pred_df['Class'] = y_pred_test_label.cpu().numpy()

tsne_pred_df.to_excel('./Transformer预测图表/tSNE_predicted_XY.xlsx', index=False)

九、结语

需要说明的是,本文中涉及的 1DCNN、DAN、DNN、DRN、Transformer 等深度学习方法仅作为模型名称出现,用于区分不同特征提取结构下的 t-SNE 可视化结果。具体网络结构、训练流程及实现代码需根据实际任务自行编写或参考原始文献,本文未给出完整模型实现。

本文的重点在于如何在多模型对比实验中,统一整理并导出各类特征层与预测结果的 t-SNE 数据,以便于后续可视化分析和论文作图。相关代码主要用于展示 t-SNE 数据整理思路,而非深度学习模型的复现示例。

相关推荐
听风吹等浪起20 分钟前
第30章:MobileNetV3全家桶实现MRI脑肿瘤四分类(含Streamlit网页推理+Mermaid结构图)
人工智能·分类·数据挖掘
如若12334 分钟前
TRACER 论文解读与复现:面向 ICU 长时程患者监测的多模态 Harness 架构、时序证据建模与工具增强推理
人工智能·深度学习·计算机视觉
深蓝AI3 小时前
无头浏览器不必从 Chrome 改:Lightpanda 用 Zig 从零造,100 个页面只占 123MB 内存
人工智能·程序员
奈落245 小时前
AI辅助的另一面:从2026年国际AI安全报告的“故障”清单到国内专家的可靠性短板,自主行动的Agent为什么更难及时干预
人工智能·安全·agent·本地部署·ai 办公
火山引擎开发者社区6 小时前
eMudhra 证书失陷:容器用户最容易忽略的镜像信任链漏洞
人工智能
LabVIEW开发7 小时前
LabVIEW 机载 DIAL:每秒万次甲烷测量
人工智能·labview·labview知识·labview功能·labview程序
飞猫的边缘AI8 小时前
英特尔量子生意
人工智能·量子计算·边缘ai
深蓝AI8 小时前
桌面 Agent 缺的不是视觉:Vercel 开源 agent-desktop,用无障碍树 ref 替代截图坐标
人工智能·程序员
镜子AI8 小时前
镜子AI 技术复盘:三条自动化链路上的“停止条件“设计
运维·人工智能·自动化
向哆哆9 小时前
羊行为目标检测数据集:4类别、2,000张图像 | 目标检测
人工智能·yolo·目标检测·目标跟踪