当前位置: 首页 > news >正文

Multicore-TSNE

文章目录

  • TSNE
  • 使用scikit-learn库
  • 使用Multicore-TSNE库
    • 安装方法
    • 基本使用方法
    • 采用不同的距离度量
  • 其他资料

TSNE

  • t-Distributed Stochastic Neighbor Embedding (t-SNE) 是一种高维数据的降维方法,由Laurens van der Maaten和Geoffrey Hinton于2008年提出,通常用于数据可视化。其大致原理是在低维(通常是2D或3D)空间中保留高维空间中的距离关系

使用scikit-learn库

  • TSNE的代码实现通常基于scikit-learn库
  • 具体参数可参考官网手册:https://scikit-learn.org/stable/modules/generated/sklearn.manifold.TSNE.html

使用Multicore-TSNE库

  • Multicore-TSNE的项目地址:
    https://github.com/DmitryUlyanov/Multicore-TSNE

  • 优点:

    • 使用方法与与scikit-learn库基本一致
    • 计算速度相对于scikit-learn库可大幅提升
  • 缺点:

    • 功能相比scikit-learn库大幅减少
    • 默认仅实现了基于欧式距离的降维计算

安装方法

  • 方法1:直接pip安装
pip install MulticoreTSNE
  • 方法2:源码编译安装
git clone https://github.com/DmitryUlyanov/Multicore-TSNE.git
cd Multicore-TSNE/
pip install .

基本使用方法

  • Multicore-TSNE库的基本使用方法非常简单,与scikit-learn库基本一致:
from MulticoreTSNE import MulticoreTSNE as TSNEtsne = TSNE(n_jobs=4)
Y = tsne.fit_transform(X)
  • 详情可看源码:https://github.com/DmitryUlyanov/Multicore-TSNE/blob/master/MulticoreTSNE/init.py

采用不同的距离度量

  • Multicore-TSNE默认仅实现了基于欧式距离的降维计算,然而,很多时候,我们希望采用其他距离度量。幸运的是,根据 https://github.com/DmitryUlyanov/Multicore-TSNE/issues/49 中的回答,已有大佬基于Multicore-TSNE库进行了二次开发,其中可以采用的距离度量包括:
    • Euclidean distance
    • Squared euclidean distance
    • Angular distance
    • Cosine distance (not a real metric)
    • Precomputed distance marix
  • 安装方式:源码编译安装
git clone https://github.com/asanakoy/Multicore-TSNE.git
cd Multicore-TSNE/
pip install .
  • 以手动计算特征向量之间的余弦距离为例:
from MulticoreTSNE import MulticoreTSNE as TSNE
from sklearn.metrics.pairwise import cosine_similarity# 计算余弦相似度矩阵
similarity_matrix = cosine_similarity(feats.cpu().numpy())# 将余弦相似度转换为距离矩阵
distance_matrix = 1 - similarity_matrixtsne = TSNE(n_jobs=4, metric="precomputed", random_state=42)
X_tsne = tsne.fit_transform(distance_matrix)

其他资料

  • Multicore-TSNE 项目常见问题解决方案
  • 用 GPU 加速 TSNE:从几小时到几秒

相关文章:

  • ROS2与Carla安装设备(其三)测试 ROS 2
  • 基于 Rancher 部署 Kubernetes 集群的工程实践指南
  • STM32实现simpleFOC控制无刷电机
  • 基于C++的IOT网关和平台4:github项目ctGateway交互协议
  • 张正友相机标定算法(Zhang’s camera calibration method)原理和过程推导(附OpenCV代码示例)
  • QT6 源(63)篇六:阅读与注释 QString 这个类,包含了 QString 类的 完整源码,也附上 QLatin1String 类的
  • Linux C++ xercesc xml 怎么判断路径下有没有对应的节点
  • Arduino项目实战与编程技术详解
  • LangChain的向量RAG与MCP在意图识别的主要区别
  • 离轴干涉系统 | 赋能超表面性能精准检测
  • Java批量数据处理唯一ID生成优化
  • WPF之TextBox控件详解
  • LeRobot 项目部署运行逻辑(三)——机器人及舵机配置
  • 黑苹果显卡免驱教程:蓝宝石RX580刷成RX570详细步骤(附工具与注意事项)
  • 分布式计算框架(Dask)与单机库(Pandas)数据处理方法对比分析
  • 小知识总结记录
  • 数据库的死锁相关(一)
  • 软考:硬件中的CPU架构、存储系统(Cache、虚拟内存)、I/O设备与接口
  • 泛微OA.E9--07--IDEA搭建后端二开环境
  • Docker进入MySQL之后如何用sql文件初始化数据
  • 山西太原小区爆炸事故已造成17人受伤
  • “五一”假期预计全社会跨区域人员流动量超14亿人次
  • 解放日报:中国大模型企业的发展机遇已经到来
  • 外交部亚洲司司长刘劲松向菲方严肃交涉
  • 在岸、离岸人民币对美元汇率双双升破7.26关口
  • 言短意长|政府食堂、停车场开放的示范效应