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

t-SNE降维可视化并生成excel文件使用其他画图软件美化

t-sne

t-SNE(t-分布随机邻域嵌入,t-distributed Stochastic Neighbor Embedding)是由 Laurens van der Maaten 和 Geoffrey Hinton 于 2008 年提出的一种非线性降维技术。它特别适合用于高维数据的可视化。t-SNE 的主要目标是将高维数据映射到低维空间(通常是二维或三维),同时尽可能地保留高维数据中的局部结构。这使得我们可以在低维空间中更直观地观察数据的结构和分布。

t-SNE 能很好地保留高维数据的局部结构,适用于各种类型的数据,尤其是复杂的非线性数据。但它的计算复杂度较高,不适合非常大规模的数据集,对超参数(如 perplexity)较为敏感,需要仔细调参。低维空间中的全局结构不一定可靠。

可视化

要使用 t-SNE 进行数据可视化,可以使用 Python 的 scikit-learn 库。随机生成两个数据集:

import matplotlib.pyplot as plt
import numpy as np
from sklearn.manifold import TSNE# 假设这里有两个数据集,分别是 dataset1 和 dataset2
dataset1 = np.random.randn(100, 10)  # 生成随机数据作为示例
dataset2 = np.random.randn(80, 10)# 合并数据集
merged_data = np.concatenate((dataset1, dataset2))# 对合并后的数据应用 t-SNE 进行降维
tsne = TSNE(n_components=2, random_state=0)
tsne_data = tsne.fit_transform(merged_data)# 将降维后的数据按照原来的数据集进行划分
tsne_data_1 = tsne_data[:len(dataset1)]
tsne_data_2 = tsne_data[len(dataset1):]# 绘制散点图
plt.scatter(tsne_data_1[:, 0], tsne_data_1[:, 1], color='b', label='Dataset 1')
plt.scatter(tsne_data_2[:, 0], tsne_data_2[:, 1], color='r', label='Dataset 2')
plt.legend()
plt.show()

在这里插入图片描述

根据数据集中不同的标签使用不同的颜色:

import numpy as np
import pandas as pd
from sklearn.manifold import TSNE
import matplotlib.pyplot as pltfrom utils.feature import features18_df = pd.read_csv('68.csv')X = df[features18_] # 选择需要的特征
y = df["fs"] # 根据fs标签选择不同的颜色画图# 初始化 t-SNE 模型,设置降维后的维度为 2 维
tsne = TSNE(n_components=2, perplexity=min(10, len(X)-1))# 对数据进行降维
X_tsne = tsne.fit_transform(X)# 绘制结果
plt.figure(figsize=(10, 10))
plt.scatter(X_tsne[:, 0], X_tsne[:, 1], c=y.astype(int), cmap='jet')
plt.colorbar()
plt.show()

在这里插入图片描述

t-SNE的参数

t-SNE 类的 init 方法定义了用于初始化 t-SNE 对象的参数。下面是这些参数的详细介绍:

n_components:int, 默认值=2

要降维到的维度数。通常设为2或3,用于可视化。

perplexity:float, 默认值=30.0

衡量数据局部结构的一个超参数。较大的 perplexity 使 t-SNE 关注更大范围的邻居数。有效范围通常在5到50之间。

early_exaggeration:float, 默认值=12.0

在早期阶段,增加距离以便于更好地形成群体结构。较高的值使得群体更加分离。

learning_rate:float 或 “auto”, 默认值=“auto”

学习率。学习率过低可能导致优化停滞,学习率过高可能导致嵌入结构被破坏。当设为 “auto” 时,学习率为 max(N / early_exaggeration / 4, 50),其中 N 是样本数。

n_iter:int, 默认值=1000

梯度下降迭代次数。增大此值可能会提升嵌入的质量。

n_iter_without_progress:int, 默认值=300

在没有进展的情况下提前终止的迭代次数。用于防止无效计算。

min_grad_norm:float, 默认值=1e-7

最小梯度范数,用于判断是否收敛。

metric:string 或 callable, 默认值=“euclidean”

用于计算高维空间距离的度量标准。默认是欧几里得距离。

metric_params:dict 或 None, 默认值=None

用于度量的额外关键字参数。

init:string 或 ndarray, 默认值=“pca”

低维嵌入的初始化方法。可以是 ‘random’ 或 ‘pca’,也可以提供一个初始位置的数组。

verbose:int, 默认值=0

控制输出的详细程度。0 表示不输出,1 或更高的值表示输出更多信息。

random_state:int, RandomState 实例或 None, 默认值=None

随机数生成器的种子。设置此参数以获得可重复的结果。

method:string, 默认值=“barnes_hut”

用于计算嵌入的算法。可选值有 ‘barnes_hut’(适用于较大数据集)和 ‘exact’(适用于较小数据集)。

angle:float, 默认值=0.5

仅在 method=‘barnes_hut’ 时使用。控制 Barnes-Hut 近似的精度,值越小精度越高,计算时间越长。

n_jobs:int 或 None, 默认值=None

并行计算的 CPU 核心数。None 表示 1,-1 表示使用所有可用的核心。

生成excel文件

用python的matplotlib库作出的图可以看,但并不完美,虽然可以通过调matplotlib的参数来使图画得更完美,但是不如使用专业的画图软件方便,比如微软的visio,爱不释手,所以我们需要将t-SNE降维的坐标点生成一个excel文件,在画图软件中导入这个excel文件,使可视化变得更完美。将t-SNE降维后的数据保存到Excel文件中,可以使用 pandas 库中的 to_excel 方法。

df = pd.DataFrame(X_tsne)
writer = pd.ExcelWriter('arr.xlsx')
df.to_excel(writer)
writer.close()

相关文章:

t-SNE降维可视化并生成excel文件使用其他画图软件美化

t-sne t-SNE(t-分布随机邻域嵌入,t-distributed Stochastic Neighbor Embedding)是由 Laurens van der Maaten 和 Geoffrey Hinton 于 2008 年提出的一种非线性降维技术。它特别适合用于高维数据的可视化。t-SNE 的主要目标是将高维数据映射…...

End-to-End Object Detection with Transformers【方法详细解读】

摘要 我们提出了一种新的方法,将目标检测视为一个直接的集合预测问题。我们的方法简化了检测流程,有效地消除了许多手工设计的组件,如非极大值抑制程序或锚生成,这些组件显式编码了我们关于任务的先验知识。新框架的主要成分,称为DEtection TRansformer或DETR,是一个基于…...

SQLite数据库与ROOM数据库

目录 1、SQLite数据库 目的: 基本操作: 缺点: 解决: 2、ROOM持久性库 目的: 优点: 导入依赖: 主要组件: ​编辑 使用步骤: a.定义数据实体 b.定义数据访问对象(接…...

vue实现动态图片(gif)

目录 1. 背景 2. 分析 3. 代码实现 1. 背景 最近在项目中发现一个有意思的小需求,鼠标移入一个盒子里,然后盒子里的图就开始动起来,就像一个gif一样,然后鼠标移出,再按照原来的变化变回去,就像变形金刚…...

win11系统设置允许无密码远程桌面连接

在windows11系统中设置允许无密码远程桌面连接,可以通过以下步骤进行操作: 1、启用远程桌面功能:‌首先,‌确保您的Windows 11是专业版,‌因为家庭版默认不支持远程桌面功能。‌您可以通过“设置” -> “系统” -&…...

使用 PyAMF / Django 实现 Flex 类映射

1、问题背景 PyAMF 是一个用于在 Flex 和 Python 之间进行通信的库,在使用 PyAMF 与 Flex 应用进行通信时,经常会遇到错误。例如,在发送一个 Flex Investor 对象到 Python 时,会得到一个 ‘KeyError: first_name’ 的错误。这是因…...

算法思想总结:字符串

一、最长公共前缀 . - 力扣&#xff08;LeetCode&#xff09; 思路1&#xff1a;两两比较 时间复杂度mn 实现findcomon返回两两比较后的公共前缀 class Solution { public:string longestCommonPrefix(vector<string>& strs) {//两两比较 string retstrs[0];size…...

滑块拼图验证码识别

通常滑块验证码都是横向滑动&#xff0c;今天看到一个比较特别的滑块拼图验证码&#xff0c;他不仅能在横向上滑动&#xff0c;还需要进行纵向滑动。如下图所示&#xff1a; 他的滑块在背景图片的左上角&#xff0c;需要鼠标拖动左上角的滑块&#xff0c;移动到背景图的缺口位置…...

Activity启动流程

1 冷启动与热启动 应用启动分为冷启动和热启动。 冷启动&#xff1a;点击桌面图标&#xff0c;手机系统不存在该应用进程&#xff0c;这时系统会重新fork一个子进程来加载Application并启动Activity&#xff0c;这个启动方式就是冷启动。 热启动&#xff1a;应用的热启动比冷…...

PHP转Go系列 | ThinkPHP与Gin框架之OpenApi授权设计实践

大家好&#xff0c;我是码农先森。 我之前待过一个做 ToB 业务的公司&#xff0c;主要是研发以会员为中心的 SaaS 平台&#xff0c;其中涉及的子系统有会员系统、积分系统、营销系统等。在这个 SaaS 平台中有一个重要的角色「租户」&#xff0c;这个租户可以拥有一个或多个子系…...

使用SOAP与TrinityCore交互(待定)

原文&#xff1a;SOAP with TrinityCore | TrinityCore MMo Project Wiki 如何使用SOAP与TC交互 SOAP代表简单对象访问协议&#xff0c;是一种类似于REST的基于标准的web服务访问协议的旧形式。只要必要的配置到位&#xff0c;您就可以利用SOAP向TrinityCore服务器发送命令。 …...

QQ频道导航退出

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/140413538 长沙红胖子Qt&#xff08;长沙创微智科&#xff09;博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV…...

MySQL里的累计求和

在MySQL中&#xff0c;你可以使用SUM()函数来进行累计求和。如果你想要对一个列进行累计求和&#xff0c;可以使用OVER()子句与ORDER BY子句结合&#xff0c;进行窗口函数的操作。 以下是一个简单的例子&#xff0c;假设我们有一个名为sales的表&#xff0c;它有两个列&#x…...

Python爬虫速成之路(3):下载图片

hello hello~ &#xff0c;这里是绝命Coding——老白~&#x1f496;&#x1f496; &#xff0c;欢迎大家点赞&#x1f973;&#x1f973;关注&#x1f4a5;&#x1f4a5;收藏&#x1f339;&#x1f339;&#x1f339; &#x1f4a5;个人主页&#xff1a;绝命Coding-CSDN博客 &a…...

同三维T80004EA编解码器视频使用操作说明书:高清HDMI编解码器,高清SDI编解码器,4K超清HDMI编解码器,双路4K超高清编解码器

同三维T80004EA编解码器视频使用操作说明书&#xff1a;高清HDMI编解码器&#xff0c;高清SDI编解码器&#xff0c;4K超清HDMI编解码器&#xff0c;双路4K超高清编解码器 同三维T80004EA编解码器视频使用操作说明书&#xff1a;高清HDMI编解码器&#xff0c;高清SDI编解码器&am…...

ChatGPT提问获取高质量答案的艺术PDF下载书籍推荐分享

ChatGPT高质量prompt技巧分享pdf&#xff0c; ChatGPT提问获取高质量答案的艺术pdf。本书是一本全面的指南&#xff0c;介绍了各种 Prompt 技术的理解和利用&#xff0c;用于从 ChatGPTmiki sharing中生成高质量的答案。我们将探讨如何使用不同的 Prompt 工程技术来实现不同的目…...

微信小程序中的数据通信

方法1: 使用回调函数 在app.js中:可以在修改globalData后执行一个回调函数,这个回调函数可以是页面传递给app的一个更新函数。// app.js App({globalData: {someData: ,},setSomeData(newData, callback) {this.globalData.someData = newData;if (typeof callback === funct…...

everything搜索不到任何文件-设置

版本&#xff1a; V1.4.1.1024 (x64) 问题&#xff1a;搜索不到任何文件 click:[工具]->[选项]->下图所示 将本地磁盘都选中包含...

python如何结束程序运行

方法1&#xff1a;采用sys.exit(0)&#xff0c;正常终止程序&#xff0c;从图中可以看到&#xff0c;程序终止后shell运行不受影响。 方法2&#xff1a;采用os._exit(0)关闭整个shell&#xff0c;从图中看到&#xff0c;调用sys._exit(0)后整个shell都重启了&#xff08;RESTAR…...

InnoDB

InnoDB 是 MySQL 默认的存储引擎&#xff0c;它提供了事务支持、行级锁定和外键约束等高级功能。下面详细解析 InnoDB 的一些底层原理和关键特性。 1. 数据存储结构 表空间&#xff08;Tablespace&#xff09; InnoDB 使用表空间来管理数据存储&#xff0c;表空间可以是共享…...

Cesium1.95中高性能加载1500个点

一、基本方式&#xff1a; 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互

引擎版本&#xff1a; 3.8.1 语言&#xff1a; JavaScript/TypeScript、C、Java 环境&#xff1a;Window 参考&#xff1a;Java原生反射机制 您好&#xff0c;我是鹤九日&#xff01; 回顾 在上篇文章中&#xff1a;CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)

宇树机器人多姿态起立控制强化学习框架论文解析 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架&#xff08;一&#xff09; 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中&#xff0c;UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…...

uniapp中使用aixos 报错

问题&#xff1a; 在uniapp中使用aixos&#xff0c;运行后报如下错误&#xff1a; AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...

Java 二维码

Java 二维码 **技术&#xff1a;**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

windows系统MySQL安装文档

概览&#xff1a;本文讨论了MySQL的安装、使用过程中涉及的解压、配置、初始化、注册服务、启动、修改密码、登录、退出以及卸载等相关内容&#xff0c;为学习者提供全面的操作指导。关键要点包括&#xff1a; 解压 &#xff1a;下载完成后解压压缩包&#xff0c;得到MySQL 8.…...

Visual Studio Code 扩展

Visual Studio Code 扩展 change-case 大小写转换EmmyLua for VSCode 调试插件Bookmarks 书签 change-case 大小写转换 https://marketplace.visualstudio.com/items?itemNamewmaurer.change-case 选中单词后&#xff0c;命令 changeCase.commands 可预览转换效果 EmmyLua…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现指南针功能

指南针功能是许多位置服务应用的基础功能之一。下面我将详细介绍如何在HarmonyOS 5中使用DevEco Studio实现指南针功能。 1. 开发环境准备 确保已安装DevEco Studio 3.1或更高版本确保项目使用的是HarmonyOS 5.0 SDK在项目的module.json5中配置必要的权限 2. 权限配置 在mo…...