多模型统一导出 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 数据整理思路,而非深度学习模型的复现示例。

相关推荐
NAGNIP21 小时前
一文搞懂深度学习中的通用逼近定理!
人工智能·算法·面试
冬奇Lab1 天前
一天一个开源项目(第36篇):EverMemOS - 跨 LLM 与平台的长时记忆 OS,让 Agent 会记忆更会推理
人工智能·开源·资讯
冬奇Lab1 天前
OpenClaw 源码深度解析(一):Gateway——为什么需要一个"中枢"
人工智能·开源·源码阅读
AngelPP1 天前
OpenClaw 架构深度解析:如何把 AI 助手搬到你的个人设备上
人工智能
宅小年1 天前
Claude Code 换成了Kimi K2.5后,我再也回不去了
人工智能·ai编程·claude
九狼1 天前
Flutter URL Scheme 跨平台跳转
人工智能·flutter·github
ZFSS1 天前
Kimi Chat Completion API 申请及使用
前端·人工智能
天翼云开发者社区1 天前
春节复工福利就位!天翼云息壤2500万Tokens免费送,全品类大模型一键畅玩!
人工智能·算力服务·息壤
知识浅谈1 天前
教你如何用 Gemini 将课本图片一键转为精美 PPT
人工智能
Ray Liang1 天前
被低估的量化版模型,小身材也能干大事
人工智能·ai·ai助手·mindx