matlab-对数据集加噪声并实现tsne可视化

news2024/11/18 12:19:57

matlab-对数据集加噪声并实现tsne可视化

最近才知道,原来可以不用模型,也能实现对数据集数据的可视化。

**一、**以COIL-100数据集为例子。

问题:
前提:首先对COIL-100数据集根据角度0°-175°和180°-255°,分别划分成C1,C2两个子数据集。
目的:
①实现C1-C2的tsne可视化;
②对COIL-100数据集添加遮挡物,实现C1-C2的tsne可视化。
平台:
matlabR2019b 以及 Pycharm2022

**

二、解决方法

**
(1)首先获取得到我们的COIL-100的数据集,以及划分好的C1,C2数据集:
在这里插入图片描述

(2)----------对数据集图片添加遮挡物----------
分别对COIL-100-1和COIL-100-2数据集添加遮挡物
我借鉴了这个博客数据增强-在图片中添加遮挡物
这个博客是对数据集添加不规则的五边形,我自己改成了:添加长方体遮挡物,且位置随机,python代码如下:

import random

import itertools

import os
import PIL.Image as Image
import PIL.ImageDraw as ImageDraw

# 原始图片的存放位置
PATH = 'C:/Users/lenovo/Documents/MATLAB/COIL-Augment-tsne/data/COIL-100/'
# 新生成的图片的保存位置
SAVE_PATH= 'C:/Users/lenovo/Documents/MATLAB/COIL-Augment-tsne/data/COIL-100-noise-10x10/'
# 要在图片上生成几边形的物体,N=5代表五边形
N = 4


def drawObs(path, savePath, n):

    for file in os.listdir(path):
        if not file.lower().endswith(('.bmp', '.dib', '.png', '.jpg', '.jpeg', '.pbm', '.pgm', '.ppm', '.tif', '.tiff')):
            continue
        img = Image.open(path + file)
        (x, y) = img.size
        random_list = list(itertools.product(range(1, x), range(1, y)))
        points = random.sample(random_list, n)

        draw = ImageDraw.Draw(img)
        x = random.randint(0, 255)
        #ImageDraw.ImageDraw.polygon(xy=points, fill=(x1, x2, x3), self=draw)
        draw.rectangle((x,x,x+20,x+10),fill=(0,0,0))
        img.save(savePath + 'rand' + file)
        print(file)

if __name__ == '__main__':
    drawObs(PATH, SAVE_PATH, N)



于是,我们得到 添加了随机遮挡物的C1和C2数据集:COIL-100-agument-1和COIL-100-agument-2.
在这里插入图片描述

(3)----------数据集转换为.mat文件----------
分别将COIL-100-1, COIL-100-2, COIL-100-agument-1 和 COIL-100-agument-2,四个数据集转换成.mat文件。
.png向.mat文件转换的代码,我借鉴了这个博客将COIL数据集转换成.mat文件

clear
clc
path = 'D:\COIL\coil-100\';     %源数据集路径
save_path = 'D:\COIL\';     %处理之后保存的路径
file = dir([path,'*.png']);     %列出源路径下所有.png文件的信息:name date bytes...

COIL = [];
Label = [];
for i = 1:length(file)      %源路径下png文件的个数
    %%
    %%对图片本身数据做处理
    image0 = imread([path,file(i).name]);       %读取某一张图片
    str = file(i).name;     %图片名保存为str
    image1 = rgb2gray(image0);      %将彩图转换为灰度图像
    image2 = im2double(image1);     %将图片中unit8转换为double
    [a,b] = size(image2);       %a为图片行数 b为图片列数
    image3 = reshape(image2,1,a*b);     %将a*b的图片转换为1行
    COIL = [COIL;image3];       %每一张图片都加载在上一张图片的下一行
    fprintf('%d th starting...\n',i);       %记录程序运行过程
    %%
    %%对图片标签做处理 图片名为‘obj(类标签)__(拍摄角度).png’
    %主要提取类标签
    LabelStart = strfind(str,'j');      %找到图片名‘j’的位置(类标签前)
    LabelEnd = strfind(str,'_');        %找到图片名‘__’的位置(类标签后)
    label_temp = str2double(str(LabelStart+1:LabelEnd(1,1)-1));     %提取出图片类标签
    Label = [Label;label_temp];     %每个类标签按顺序排排坐
end

save savepath COIL Label

注意:
①保存的COIL-100-1 和 COIL-100-augment-1 图片保存为X_src,图片标签保存为Y_src,即上述代码中的COILLabel
②保存的COIL-100-2 和 COIL-100-augment-2 图片保存为X_tar,图片标签保存为Y_tar,即上述代码中的COILLabel

即生成的.mat文件如下图所示:
在这里插入图片描述
在这里插入图片描述

(4)最后分别将COIL-100-1和COIL-100-2可视化;以及COIL-100-agument-1 和 COIL-100-agument-2可视化。
matla可视化代码如下:

%%% tsne visulization
clc;
clear;
addpath('tSNE_matlab');

savefile1 = 'C:\Users\lenovo\Documents\MATLAB\COIL-Augment-tsne\data\COIL-100-agumnet-1.mat';
savefile2 = 'C:\Users\lenovo\Documents\MATLAB\COIL-Augment-tsne\data\COIL-100-agumnet-2.mat';

load(savefile1);
load(savefile2);
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Xs=X_src;
Xt=X_tar;
X=[Xs;Xt];

color1=[1,0,0];%red
color2=[0,0,1];%blue
Y1=[repmat(color1,[length(Y_src),1]);repmat(color2,[length(Y_tar),1])];

mappedX = tsne(X, Y1, 2,100,30);

savefile = ['C:\Users\lenovo\Documents\MATLAB\COIL-Augment-tsne\save_tu\map_COIL_100_10x10','.mat'];
save(savefile, 'mappedX','X_src','X_tar','Y_src','Y_tar');


完成。

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

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

相关文章

edge浏览器进行qq截图过保爆决过程

edge浏览器进行qq截图过保解决过程 参考:电脑截屏曝光特别高怎么解决? - 知乎 问题展示 饱和度过高,刺眼 1. 在chrome地址栏输入chrome://flags/ 2. 在页面的搜索栏搜索force color profile 3. 在选项中选择所对应的颜色管理。&#xff08…

【赠书活动|第七期《服务端开发:技术、方法与实用解决方案》】

文章目录 一、前言二、AI 时代,服务端开发面临新挑战三、服务端开发会被 AI 取代吗?四、知识体系化,构建核心竞争力五、业界首本体系化、全景式解读服务端开发的著作读者对象抽奖方式 一、前言 目前,资讯、社交、游戏、消费、出行…

leetcode1475. 商品折扣后的最终价格 【单调栈】

简单题 第一次错误做法 class Solution { public:vector<int> finalPrices(vector<int>& prices) {int n prices.size();stack<int> st;unordered_map<int, int> mp;int i 0;while(i ! prices.size()) {int t prices[i];if (st.empty() || t …

C++day4(拷贝赋值函数、匿名对象、友元、常成员函数和常对象、运算符重载)

一、Xmind整理&#xff1a; 二、上课笔记整理&#xff1a; 1.day3作业订正&#xff1a;设计一个Per类&#xff0c;类中包含私有成员&#xff1a;姓名、年龄、指针成员身高... #include <iostream>using namespace std;//封装人 类 class Person { private:string name;…

Hadoop Yarn 配置多队列的容量调度器

文章目录 配置多队列的容量调度器多队列查看 配置多队列的容量调度器 首先&#xff0c;我们进入 Hadoop 的配置文件目录中&#xff08;$HADOOP_HOME/etc/hadoop&#xff09;&#xff1b; 然后通过编辑容量调度器配置文件 capacity-scheduler.xml 来配置多队列的形式。 默认只…

Enable Secure boot on software

User Guide&#xff1a; Secure Boot V1Secure Boot V2espsecure.py Please follow these steps: 1、Query the chip version esptool.py chip_idThe V1.0 version chip only supports Secure boot V1 The V3.0 or later version chip support Secure boot V2 2、You need…

Spring redis使用报错Read timed out排查解决

文章目录 使用场景报错信息解决方式 使用场景 我们使用redis作为缓存服务&#xff0c;缓存一些业务数据&#xff0c;如路口点位信息、渠化信息、设备信息等有一些需要实时计算的数据&#xff0c;缓存在redis里&#xff0c;如实时信号周期相位、周期内过车数量等有需要不同服务…

【CesiumJS入门】(9)获取地表两点的距离及中心点——EllipsoidGeodesic

前言 一般情况下&#xff0c;我们可以直接通过Cesium.Cartesian3.distance(left, right)来获取两点的距离&#xff0c;但获取到的是两点的直线距离&#xff1a; const start new Cesium.Cartesian3.fromDegrees(113,23); const end new Cesium.Cartesian3.fromDegrees(113,…

食品安全”有救了“!温湿度监控快速见效!

在储存、运输和加工过程中&#xff0c;适当的温湿度条件对于保持食品的新鲜度、延长货物寿命以及防止食品交叉污染至关重要。通过精确的温湿度监测和实时数据分析&#xff0c;食品行业能够降低损失、提高产品质量&#xff0c;并满足监管要求。 在这个竞争激烈的行业中&#xff…

大数据精准营销获客能为企业带来哪些东西?

广告圈里一句名言:我知道我的广告浪费了一半&#xff0c;但我不知道浪费了哪一半。当前&#xff0c;越来越多的企业在大数据思维指导下进行广告投放&#xff0c;广告能通过对人群的定向&#xff0c;投放给准确的目标顾客&#xff0c;特别是互联网广告现在能够做到根据不同的人向…

【SpringBoot】第一篇:redis使用

背景&#xff1a; 本文是教初学者如何正确使用和接入redis。 一、引入依赖 <!--redis--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><depen…

为什么项目经理离不开甘特图?究竟好在哪?

项目经理在管理项目过程中&#xff0c;需要面对众多的任务和时间安排&#xff0c;如何高效地完成项目目标成为了一个重要的课题。在这个时候&#xff0c;甘特图作为一种重要的工具&#xff0c;成为了项目经理的得力助手。 甘特图是一种以时间为轴的图形化工具&#xff0c;通过横…

数据分析案例-汽车客户信息数据可视化分析(文末送书)

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

基于模糊神经网络的嘉陵江水质评价Matlab代码

1.案例背景 1.1 模糊数学简介 模糊数学是用来描述、研究和处理事物所具有的模糊特征的数学&#xff0c;“模糊”是指它的研究对象,而“数学”是指它的研究方法。 模糊数学中最基本的概念是隶属度和模糊隶属度函数。其中,隶属度是指元素u属于模糊子集f的隶属程度,用uf(…

最简单 实现 Element-ui el-table的懒加载表格数据 el-table懒加载请求数据 element-ui 懒加载

最简单 实现 Element-ui el-table的懒加载表格数据 el-table懒加载请求数据 element-ui 懒加载 1、效果图2、代码 1、效果图 2、代码 <template> <el-table :data"tableData" style"width: 100%" expand-change"expandChange"><…

matlab使用教程(24)—常微分方程(ODE)求解器

1.常微分方程 常微分方程 (ODE) 包含与一个自变量 t&#xff08;通常称为时间&#xff09;相关的因变量 y 的一个或多个导数。此处用于表示 y 关于 t 的导数的表示法对于一阶导数为 y ′ &#xff0c;对于二阶导数为 y ′′&#xff0c;依此类推。ODE 的阶数等于 y 在方程中…

python爬虫实战零基础(3)——某云音乐

爬取某些云网页音乐&#xff0c;无需app 分析网页第二种方式批量爬取 声明&#xff1a;仅供参考学习&#xff0c;参考&#xff0c;若有不足&#xff0c;欢迎指正 你是不是遇到过这种情况&#xff0c;在pc端上音乐无法下载&#xff0c;必须下载客户端才能下载&#xff1f; 那么&…

采集项目和数仓项目的关系

1.介绍 采集项目和数仓项目 采集和数仓是企业数据管理平台的2个核心功能模块,相对独立,所以可以独立开发 区别 功能 采集:数据的采集和传输 数仓:数据的存储 流程 数据库->数据采集->数据仓库->可视化界面 2.数据仓库 什么是数仓? 1.名称 数据库 : database…

杰克逊霍尔央行年会倒计时!鲍威尔压轴登场,美股能否重现“厄运九分钟”?

“央行行长的达沃斯论坛”——杰克逊霍尔央行年会将于美国当地时间本周四至周六举行&#xff0c;主题为“全球经济的结构性变化”&#xff0c;来自全球主要的央行行长、财政官员、经济学家、知名学者、财经媒体等齐聚一堂&#xff0c;共商经济前景和货币政策。 对于这些主要货币…

shopee马来西亚站市场情况如何?卖家怎么选品?

一、shopee马来西亚市场 马来西亚是东南亚的中心地带&#xff0c;拥有3,278万人口&#xff0c;其中30岁以下的年轻人占总人口的49%。马来西亚的经济发展较好&#xff0c;在电商市场方面具备良好的发展潜力。在热销品类方面&#xff0c;母婴用品、时尚服饰、美妆保健品和家居用…