利用t-SNE可视化自己的数据集分布

这篇具有很好参考价值的文章主要介绍了利用t-SNE可视化自己的数据集分布。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

自己做实验时想看一看自己数据集的分布,在网上找了一圈发现大家都是用的降维的方式查看,比较火的有PCA和t-SNE。网上很多教程都是用的Mnist数据集来演示t-SNE的可视化,但我的数据集是三维的图像,和网上的不太一样,因此记录一下自己的实验过程。

注意几点:

1、使用代码之前需要先安装一个t-SNE的库,地址是GitHub - CannyLab/tsne-cuda: GPU Accelerated t-SNE for CUDA with Python bindings。该库是github上一个高分的开源库,用了cuda加速实现起来比sklearn的t-SNE要快得多,从读取到画图我自己实验确实只需要10秒不到的时间。

2、github上下载TSNE-CUDA项目到本地后,在终端的虚拟环境中输入

pip install -e .

安装好后输入

import tsnecuda
tsnecuda.test()

没有报错说明安装成功

3、在TSNE-CUDA文件夹下创建数据集文件data_set,data_set里放自己的数据集(比如我的数据集叫radar_oldANDyoung,里边包含train和val两个文件夹,每个文件夹下边分别有5个子文件夹,命名为1-5),其中1-5分别为类名,每个类下边是属于该类的图片

tsne成堆分布,大数据,机器学习,python,人工智能tsne成堆分布,大数据,机器学习,python,人工智能

4、在examples文件夹下创建python文件,比如my_tSNE.py,把我下边的代码粘贴进去

5、几个需要修改的地方我的代码里基本都有注释,不懂的可以在本帖下边留言,不定期回复 

6、结果图:

tsne成堆分布,大数据,机器学习,python,人工智能文章来源地址https://www.toymoban.com/news/detail-572791.html

import numpy as np
from tsnecuda import TSNE
import matplotlib.pyplot as plt
import numpy as np
import cv2
import os

size = 224 #resize图片的大小,运行时如果爆显存的话把这里调小即可

# get_data(Input_path,Label)
# 作用:读取Input_path里的图片,并给每张图打上自定义标签Label
def get_data(Input_path,Label): 
    Image_names=os.listdir(Input_path) #获取目录下所有图片名称列表
    data=np.zeros((len(Image_names),size*size*3)) #初始化一个np.array数组用于存数据,自己图片是n维的就把3改成n即可
    label=np.zeros((len(Image_names),1)) #初始化一个np.array数组用于存数据

    #为当前文件下所有图片分配自定义标签Label
    for k in range(len(Image_names)):
        label[k][0]=Label
        
    for i in range(len(Image_names)):
        image_path=os.path.join(Input_path,Image_names[i])
        img=cv2.imread(image_path)
        img=cv2.resize(img,(size,size)) #(size,size,3)
        img = img.flatten() #(3*size*size,)
        data[i]=img
    return data, label

#重点来了,这里是根据自己想查看的数据来自定义修改代码,得到自己的x_train和y_train
#x_train是待分析的数据
#y_train是待分析的自定义标签
#比如,我想分析训练集中5个类的分布情况
#先读取每一个类的数据,然后给他们自定义标签1-5
#然后把data拼在一起,label拼在一起,前者叫x_train,后者叫y_train
data1, label1 = get_data('../data_set/radar_oldANDyoung/train/1',1) #根据自己的路径合理更改
data2, label2 = get_data('../data_set/radar_oldANDyoung/train/2',2) 
data3, label3 = get_data('../data_set/radar_oldANDyoung/train/3',3) 
data4, label4 = get_data('../data_set/radar_oldANDyoung/train/4',4) 
data5, label5 = get_data('../data_set/radar_oldANDyoung/train/5',5) 
#得出数据后把他们拼起来
data = np.vstack((data1,data2,data3,data4,data5))
label = np.vstack((label1,label2,label3,label4,label5))

(x_train,y_train) = (data,label)
print(y_train.shape) #(n_samples,1)
print(x_train.shape) #(n_samples,size*size*3)

#t-SNE,输出结果是(n_samples,2)
#TSNE的参数和sklearn的T-SNE一样,不懂的自行查看即可
tsne = TSNE(n_iter=1000, verbose=1,num_neighbors=32,device=0)
tsne_results = tsne.fit_transform(x_train)

print(tsne_results.shape) #(n_samples,2)

# 画图
fig = plt.figure( figsize=(8,8) )
ax = fig.add_subplot(1, 1, 1, title='TSNE-radar' )

# Create the scatter
#ax.scatter()的用法自行百度
scatter  = ax.scatter(
    x=tsne_results[:,0],
    y=tsne_results[:,1],
    c=y_train,
    # cmap=plt.cm.get_cmap('Paired'),
    # alpha=0.4,
    s=10)

#ax.legend添加类标签
legend1 = ax.legend(*scatter.legend_elements(),loc="lower left", title="Classes")
ax.add_artist(legend1)

#显示图片
plt.show()
#保存图片
plt.savefig('./tSNE_radar.jpg')



到了这里,关于利用t-SNE可视化自己的数据集分布的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 利用Python进行数据可视化Plotly与Dash的应用【第157篇—数据可视化】

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 数据可视化是数据分析中至关重要的一环,它能够帮助我们更直观地理解数据并发现隐藏的模式和趋势。在Python中,有许多强大的工具可以用

    2024年04月14日
    浏览(72)
  • 【数据分析与可视化】利用Python对学生成绩进行可视化分析实战(附源码)

    需要源码和数据集请点赞关注收藏后评论区留言私信~~~ 下面对学生成句和表现等数据可视化分析 1:导入模块 2:获取数据 并打印前四行  属性列表对应含义如下 Gender  性别 Nationality  国籍 PlaceofBirth 出生地 Stageid 学校级别 Gradeid 年级 Sectionid  班级 Topic 科目 semester 学期 ra

    2024年02月03日
    浏览(50)
  • 【100天精通Python】Day71:Python可视化_一文掌握Seaborn库的使用《一》_数据分布可视化,数据关系可视化,示例+代码

    目录 1. 数据分布的可视化 1.1 直方图(Histograms) 1.2 核密度估计图(Kernel Density Estimation Plot)

    2024年02月06日
    浏览(54)
  • 利用大数据分析工具,实现多场景可视化数据管理

    https://yanhuang.yuque.com/staff-sbytbc/rb5rur? 购买服务器 购买腾讯云服务器,1300 元新人价,一年时间 ●4核16G内存 ●CentOS 6.7 (补充说明:最新的 2.7.1 GA 版本,8G 内存也是可以跑的,可以先使用8G,不够再做升级)。 安装docker环境 安装docker,速度还挺快的,大概3~5分钟内 1、注册鸿

    2024年02月14日
    浏览(58)
  • 数据可视化与GraphQL:利用Apollo创建仪表盘

    「作者主页」 :雪碧有白泡泡 「个人网站」 :雪碧的个人网站 「推荐专栏」 : ★ java一站式服务 ★ ★ React从入门到精通 ★ ★ 前端炫酷代码分享 ★ ★ 从0到英雄,vue成神之路★ ★ uniapp-从构建到提升 ★ ★ 从0到英雄,vue成神之路 ★ ★ 解决算法,一个专栏就够了 ★ ★

    2024年02月08日
    浏览(42)
  • python金融数据分析和可视化--03利用Akshare获取股票数据

    AKShare 是基于 Python 的财经数据接口库,目的是实现对股票、期货、期权、基金、外汇、债券、指数、加密货币等金融产品的基本面数据、实时和历史行情数据、衍生数据从数据采集、数据清洗到数据落地的一套工具,主要用于学术研究目的。 AKShare 的特点是获取的是相对权威

    2024年02月05日
    浏览(45)
  • 利用阿里云物联网平台(IoT)实现WEB数据可视化

    一年前在阿里物联网平台测试过一个项目,后来就搁置了,昨天有事需要用,发现出错了。 调整完后写一下使用思路,以便未来之需。 阿里云物联网(IoT)主页:https://iot.aliyun.com/ 阿里云物联网(IoT)市场:https://linkmarket.aliyun.com/ 阿里云物联网(IoT)平台管理:https://iot.

    2024年02月12日
    浏览(71)
  • 微博数据可视化分析:利用Python构建信息图表展示话题热度

    1. 引言 随着社交媒体的迅速发展,微博已成为人们交流观点、表达情感的重要平台之一。微博评论数据蕴含着丰富的信息,通过对这些数据进行分析和可视化,我们可以深入了解用户对特定话题的关注程度和情感倾向。本文将介绍如何利用Python进行微博评论数据的准备、探索

    2024年02月20日
    浏览(57)
  • 对利用Python爬取到的房价信息做数据可视化(附完整代码)

          大家好,我是带我去滑雪,每天教你一个小技巧! 本文利用Python爬取到的房价信息做数据可视化,爬取数据的文章见: (利用Python爬取房价信息(附代码)_用python爬取房价数据_带我去滑雪的博客-CSDN博客)       所爬取的指标有小区名称、房屋位置、房屋户型、房屋面

    2024年02月02日
    浏览(48)
  • 基于分布式的智联招聘数据的大屏可视化分析与预测

    项目需求分析及体系架构 1.1 项目介绍 互联网成了海量信息的载体,目前是分析市场趋势、监视竞争对手或者获取销售线索的最佳场所,数据采集以及分析能力已成为驱动业务决策的关键技能。《 计算机行业岗位招聘数据分析》旨在 利用 python 编写爬虫程序,从招聘网站上爬

    2024年02月06日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包