openTSNE基础使用教程:从数据加载到可视化分析

openTSNE基础使用教程:从数据加载到可视化分析

【免费下载链接】openTSNE Extensible, parallel implementations of t-SNE 【免费下载链接】openTSNE 项目地址: https://gitcode.com/gh_mirrors/op/openTSNE

前言

t-SNE(t-Distributed Stochastic Neighbor Embedding)是一种强大的降维可视化技术,特别适合高维数据的可视化分析。openTSNE是该算法的一个高效实现,提供了丰富的功能和灵活的接口。本文将详细介绍如何使用openTSNE进行基础的数据降维和可视化。

环境准备与数据加载

首先需要确保已安装必要的Python库,包括openTSNE、numpy、scikit-learn和matplotlib等。我们将使用Macosko 2015小鼠视网膜数据集作为示例,这是一个在单细胞RNA测序研究中广泛使用的基准数据集。

from openTSNE import TSNE
import numpy as np
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt

加载数据时,我们使用PCA降维后的50维特征作为输入:

import gzip
import pickle

with gzip.open("data/macosko_2015.pkl.gz", "rb") as f:
    data = pickle.load(f)

x = data["pca_50"]  # 50维PCA特征
y = data["CellType1"].astype(str)  # 细胞类型标签

该数据集包含44,808个样本,每个样本有50个特征。为了评估模型的泛化能力,我们将其划分为训练集和测试集:

x_train, x_test, y_train, y_test = train_test_split(
    x, y, 
    test_size=0.33,  # 33%作为测试集
    random_state=42   # 固定随机种子保证可重复性
)

t-SNE模型训练

openTSNE的核心是TSNE类,我们可以通过调整多个参数来优化降维效果:

tsne = TSNE(
    perplexity=30,      # 控制局部邻域大小的参数
    metric="euclidean", # 距离度量方式
    n_jobs=8,          # 并行计算使用的CPU核心数
    random_state=42,    # 随机种子
    verbose=True,       # 显示详细日志
)

训练过程分为两个阶段:

  1. 早期夸张阶段(exaggeration=12):增强类间距离,帮助逃离局部最优
  2. 常规优化阶段(exaggeration=1):精细调整嵌入位置
embedding_train = tsne.fit(x_train)

从输出日志可以看到,算法首先使用近似最近邻搜索(Annoy)计算邻域关系,然后通过优化KL散度逐步调整嵌入位置。整个过程耗时约2分钟(使用8核CPU),最终得到的KL散度为2.4950。

结果可视化

训练完成后,我们可以将高维数据可视化在2D平面上:

utils.plot(embedding_train, y_train, colors=utils.MACOSKO_COLORS)

训练集t-SNE可视化

图中不同颜色代表不同的细胞类型,可以看到t-SNE成功地将相似细胞聚集在一起,形成了清晰的簇结构。

新数据转换

openTSNE的一个重要特性是能够将新数据点嵌入到已有的t-SNE空间中:

embedding_test = embedding_train.transform(x_test)

转换过程首先在原始嵌入空间中寻找测试点的最近邻,然后通过优化保持这些邻域关系。最终我们可以将测试集和训练集一起可视化:

fig, ax = plt.subplots(figsize=(8, 8))
utils.plot(embedding_train, y_train, colors=utils.MACOSKO_COLORS, alpha=0.25, ax=ax)
utils.plot(embedding_test, y_test, colors=utils.MACOSKO_COLORS, alpha=0.75, ax=ax)

训练集和测试集联合可视化

图中半透明点代表训练集,实心点代表测试集。可以看到测试集数据很好地融入了训练集形成的结构中,说明模型具有良好的泛化能力。

参数调优建议

  1. Perplexity:控制平衡局部和全局结构的权衡。通常设置在5-50之间,对于大型数据集可能需要更大值。
  2. 学习率:默认值通常表现良好,但若出现"拥挤问题"(所有点挤在一起)可尝试增大学习率。
  3. 迭代次数:默认750次通常足够,可通过观察KL散度是否收敛来判断。
  4. 初始化:openTSNE默认使用PCA初始化,比随机初始化通常能获得更好的结果。

结语

本教程展示了openTSNE的基础使用方法,从数据准备、模型训练到结果可视化的完整流程。openTSNE不仅提供了高效的t-SNE实现,还支持新数据的转换功能,这在许多实际应用中非常有用。通过调整参数和深入分析可视化结果,研究者可以获得对高维数据结构的深刻理解。

【免费下载链接】openTSNE Extensible, parallel implementations of t-SNE 【免费下载链接】openTSNE 项目地址: https://gitcode.com/gh_mirrors/op/openTSNE

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值