机器学习 高维数据可视化:t-SNE 降维算法

news2024/9/21 3:36:03

✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。
🍎个人主页:小嗷犬的个人主页
🍊个人网站:小嗷犬的技术小站
🥭个人信条:为天地立心,为生民立命,为往圣继绝学,为万世开太平。


本文目录

    • t-SNE 简介
    • sklearn 中的 t-SNE
    • 使用 t-SNE 可视化手写数字数据集


t-SNE 简介

t-SNE 的全称为 t-Distributed Stochastic Neighbor Embedding,是一种非线性降维算法,它可以将高维数据映射到低维空间,同时保持数据间的相对距离不变。t-SNE 通常用于可视化高维数据,它可以将高维数据映射到二维或三维空间,从而可以通过图形的方式展示数据的特征。

相比于 PCA 等线性降维算法,t-SNE 能够更好地保留数据的局部结构,因此在可视化高维数据时,t-SNE 通常能够展示出更好的效果。

sklearn 中的 t-SNE

sklearn 中的 t-SNE 位于 sklearn.manifold.TSNE,它的主要参数有:

  • n_components:降维后的维度,默认为 2
  • perplexity:困惑度,用于控制每个点周围的邻域大小,默认为 30,通常取值在 5 到 50 之间
  • early_exaggeration:控制 t-SNE 与原始空间距离的关注度,值越大,t-SNE 与原始空间距离越大,默认为 12
  • learning_rate:学习率,默认为 200,通常取值在 10 到 1000 之间
  • n_iter:迭代次数,默认为 1000
  • n_iter_without_progress:当连续多少次迭代没有改善时,训练提前结束,默认为 300
  • min_grad_norm:梯度的最小值,当梯度的平方和小于该值时,训练提前结束,默认为 1e-7
  • metric:距离度量,默认为欧氏距离
  • init:初始化,默认为随机初始化,也可以设置为 pca,表示使用 PCA 进行初始化
  • verbose:是否打印训练过程,默认为 0,不打印
  • random_state:随机种子

t-SNE 的训练过程比较耗时,因此在实际使用时,通常会先使用 PCA 等线性降维算法将数据降到较低的维度,然后再使用 t-SNE 将数据降到二维或三维空间。

使用 t-SNE 可视化手写数字数据集

下面我们使用 t-SNE 将手写数字数据集降到二维空间,并将降维后的数据可视化。

导入需要的包:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

from sklearn import manifold, datasets
from sklearn.preprocessing import MinMaxScaler

from torchvision import datasets

加载手写数字数据集:

digits = datasets.MNIST("./data", train=True, download=True)
X, y = digits.data.numpy().reshape(-1, 28 * 28), digits.targets.numpy()
n = 5000
X, y = X[:n], y[:n]
X.shape, y.shape  # ((5000, 784), (5000,))

可视化原始数据:

n = 10  # 显示 10 * 10 个数字
img = np.zeros((30 * n, 30 * n))
for i in range(n):
    ix = 30 * i + 1
    for j in range(n):
        iy = 30 * j + 1
        img[ix : ix + 28, iy : iy + 28] = X[i * n + j].reshape(28, 28)
plt.figure(figsize=(8, 8))
plt.imshow(img, cmap=plt.cm.binary)
plt.axis("off")
plt.show()

MNIST

使用 t-SNE 将数据降到二维空间并可视化:

# t-SNE 降维
tsne = manifold.TSNE(n_components=2, init="pca", random_state=0)
X_tsne = tsne.fit_transform(X)

# 归一化
scaler = MinMaxScaler()
X_norm = scaler.fit_transform(X_tsne)

# 可视化
plt.figure(figsize=(9, 9))
for i in range(X_norm.shape[0]):
    plt.text(
        X_norm[i, 0],
        X_norm[i, 1],
        str(y[i]),
        color=plt.cm.tab10(y[i]),
        fontdict={"size": 12},
        va="center",
        ha="center",
    )
plt.axis("off")
plt.show()

t-SNE

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1316720.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

NSSCTF靶场练习[HUBUCTF 2022 新生赛]

[HUBUCTF 2022 新生赛]simple_RE 签到题 一个base64编码,自定义了码表、 [HUBUCTF 2022 新生赛]ezPython py逆向,用在线网站反编译一下 先解一次base64,再解一次base58 接着再把 password转换成 bytes的形式做一次md5加密就好 from Crypto…

基于ASF-YOLO融合空间特征和尺度特征的新型注意力尺度序列融合模型开发构建医学场景下细胞分割检测识别系统,以【BCC、DSB2018数据集为基准】

作者提出了一种新的基于注意尺度序列融合的YOLO框架(ASF-YOLO),该框架结合了空间和尺度特征,实现了准确快速的细胞实例分割。基于YOLO分割框架,我们使用尺度序列特征融合(SSFF)模块来增强网络的…

【Java代码审计】XSS篇

【Java代码审计】XSS篇 1.Java中XSS常见触发位置2.反射型XSS3.存储型XSS4.XSS漏洞修复 1.Java中XSS常见触发位置 XSS漏洞产生后必然会有相关的输入/输出,因此我们只需快速找到这些输入/输出点,即可快速地进行跟踪发现漏洞。输入在Java中通常使用“reque…

基于Java SSM框架实现疫情居家办公OA系统项目【项目源码+论文说明】

基于java的SSM框架实现疫情居家办公OA系统演示 摘要 21世纪的今天,随着社会的不断发展与进步,人们对于信息科学化的认识,已由低层次向高层次发展,由原来的感性认识向理性认识提高,管理工作的重要性已逐渐被人们所认识…

基于循环神经网络长短时记忆(RNN-LSTM)的大豆土壤水分预测模型的建立

Development of a Soil Moisture Prediction Model Based on Recurrent Neural Network Long Short-Term Memory in Soybean Cultivation 1、介绍2、方法2.1 数据获取2.2.用于预测土壤湿度的 LSTM 模型2.3.土壤水分预测的RNN-LSTM模型的建立条件2.4.预测土壤水分的RNN-LSTM模型…

微信小程序置顶导航,替代原生导航栏

效果图&#xff1a; 思路&#xff1a;Navigation是小程序的顶部导航组件&#xff0c;当页面配置navigationStyle设置为custom的时候可以使用此组件替代原生导航栏&#xff0c;wx.getSystemInfoSync获取可使用窗口高度 wxml代码&#xff1a; <!-- 头部 --> <view cla…

【docker 】Compose 使用介绍

Docker Compose Docker Compose文档 Docker Compose GitHub地址 Docker Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose&#xff0c;您可以使用 YML 文件来配置应用程序需要的所有服务。然后&#xff0c;使用一个命令&#xff0c;就可以从 YML 文件配…

在React中实现好看的动画Framer Motion(案例:跨DOM元素平滑过渡)

前言 介绍 Framer Motion 是一个适用于 React 网页开发的动画库&#xff0c;它可以让开发者轻松地在他们的项目中添加复杂和高性能的动画效果。该库提供了一整套针对 React 组件的动画、过渡和手势处理功能&#xff0c;使得通过声明式的 API 来创建动画变得简单直观。 接下来…

modbus 通信协议介绍与我的测试经验分享

1、简介 Modbus 协议是一种通信协议&#xff0c;用于工业自动化系统中的设备间通信。该协议最初由 Modicon 公司开发&#xff0c;并于 1979 年发布。 Modbus 协议通过串行通信格式进行通信&#xff0c;在物理层上支持 RS-232、RS-422 和 RS-485 等多种通信方式。在协议层面&am…

YashanDB 携智慧政务方案亮相数字政府建设与数字湾区发展成果博览会

由广东省人民政府主办的第二届数字政府建设峰会暨数字湾区发展成果博览会于 12月8日-10日在广州举办。作为数字政府、智慧城市建设的核心支撑力量&#xff0c;深算院携单机/主备、共享集群、空间数据库等 YashanDB系列产品亮相本次博览会&#xff0c;展示最新的研发成果、场景应…

spring6 基于xml自动装配

目录结构 代码 UserContronller.java package bean.auto.controller;import bean.auto.service.UserService; import bean.auto.service.UserServiceImpl;public class UserContronller {private UserService userService;public void setUserService(UserService userServ…

通过“待办事项列表项目”快速学习Pyqt5的一些特性

Pyqt5相关文章: 快速掌握Pyqt5的三种主窗口 快速掌握Pyqt5的2种弹簧 快速掌握Pyqt5的5种布局 快速弄懂Pyqt5的5种项目视图&#xff08;Item View&#xff09; 快速弄懂Pyqt5的4种项目部件&#xff08;Item Widget&#xff09; 快速掌握Pyqt5的6种按钮 快速掌握Pyqt5的10种容器&…

持续集成交付CICD:Jenkins流水线操作Harbor仓库

目录 一、实验 1.Jenkins主节点安装Docker 2.Jenkins主节点安装Harbor 3.Jenkins从节点安装Docker 4.Jenkins流水线操作Harbor仓库 二、问题 1.Jenkins主节点登录Harbor仓库报错 2.Jenkins流水线里从节点操作docker报错 3.Jenkins流水线里从节点远程登录Harbor仓库报错…

西南科技大学数据库实验二(表数据插入、修改和删除)

一、实验目的 &#xff08;1&#xff09;学会用SQL语句对数据库进行插入、修改和删除数据操作 &#xff08;2&#xff09;掌握insert、update、delete命令实现对表数据插入、修改和删除等更新操作。 二、实验任务 创建数据库&#xff0c;并创建Employees表、Departments表和…

佛山IBM System x3550 M4服务器维修检查

案例背景&#xff1a; 一家位于东莞的制造公司&#xff0c;在其佛山分厂中安装了一台IBM X3550 M4服务器作为其关键业务设备。该服务器负责管理和存储公司的生产数据、ERP系统和供应链数据。在生产过程中&#xff0c;该服务器突然发生了故障&#xff0c;导致佛山分厂的生产中断…

maven+spock

pom配置 话说JunitMockito的组合用起来是真难用&#xff0c;还是Spock的简单&#xff0c;尤其是参数化的测试。junit的Parameter是鸡肋&#xff0c;杂恶心&#xff1b;Theories用来也不爽。 <?xml version"1.0" encoding"UTF-8"?><project xm…

如何预防最新的.locked、.locked1勒索病毒感染您的计算机?

尊敬的读者&#xff1a; 近期&#xff0c;网络安全领域迎来一股新潮——.locked、.locked1勒索病毒的威胁&#xff0c;其先进的加密技术令人生畏。本文将深入剖析.locked、.locked1勒索病毒的阴谋&#xff0c;提供特色数据恢复策略&#xff0c;并揭示锁定恶劣行径的先锋预防手…

如何实现订单自动取消

由于Redis具有过期监听的功能&#xff0c;于是就有人拿它来实现订单超时自动关闭的功能&#xff0c;但是这个方案并不完美。今天来聊聊11种实现订单超时自动关闭的方案&#xff0c;总有一种适合你&#xff01;这些方案并没有绝对的好坏之分&#xff0c;只是适用场景的不大相同。…

linux系统启动时运行web程序

1.修改rc.local文件 执行命令如果找不到会报错command not found &#xff0c;使用全路径即可 找不到的话 可以使用which 命令 找到路径 后台查看执行日志 2.修改rc.local文件的权限 chmod x rc.local 然后reboot 可以查到进程和启动日志

设计模式 简单工厂 工厂方法模式 抽象工厂模式

工厂模式介绍 工厂模式是我们最常用的实例化对象模式了&#xff0c;是用工厂方法代替new操作的一种模式。它是创建型模式。 简单工厂 简单工厂模式是指由一个工厂对象决定创建出哪一种产品类的实例, 但它不属于GOF 23种设计模式 简单工厂适用于工厂类负责创建的对象较少的场景,…