MATLAB环境下基于机器学习的合成数据生成方法

news2024/11/24 10:38:28

合成数据是通过计算机程序人工生成的数据,而不是由真实事件生成的数据。采用合成数据来增加训练数据,可以节省数据采集费用,或满足隐私要求。随着计算能力的提高和云数据存储选项的崛起,合成数据比以往更容易获取。这无疑是一个积极的发展:合成数据推动了AI解决方案的开发,从而更好地为所有终端用户服务。

以浅层神经网络(Shallow neural network)为例,运行环境为MATLAB R2021B,代码如下:

clear;
% Load the original dataset
load fisheriris.mat;
original_data = meas';
Classes=3; % Number of Classes
Target(1:50)=1;Target(51:100)=2;Target(101:150)=3;Target=Target'; % Original labels
% Normalize the data to [0, 1] range
min_val = min(original_data, [], 2);
max_val = max(original_data, [], 2);
normalized_data = (original_data - min_val) ./ (max_val - min_val);

% Define autoencoder architecture
input_size = size(normalized_data, 1);
hidden_size = 5; % Size of the compressed representation
output_size = input_size;

autoencoder = feedforwardnet(hidden_size);
% 'trainlm'	    Levenberg-Marquardt
% 'trainbr' 	Bayesian Regularization (good)
% 'trainrp'  	Resilient Backpropagation
% 'traincgf'	Fletcher-Powell Conjugate Gradient
% 'trainoss'	One Step Secant (good)
% 'traingd' 	Gradient Descent
autoencoder.trainFcn = 'trainoss'; % You can choose different training algorithms
autoencoder = train(autoencoder, normalized_data, normalized_data);

% Generate synthetic data using the trained autoencoder

num_samples = 500; % Number of generating samples

synthetic_data_normalized = rand(input_size, num_samples);
synthetic_data_normalized = autoencoder(synthetic_data_normalized);

% Denormalize synthetic data
synthetic_data = synthetic_data_normalized .* (max_val - min_val) + min_val;
synthetic_data_normalized=synthetic_data_normalized';

original_data=original_data';
synthetic_data=synthetic_data';
Syn=synthetic_data;

%% Getting labels of synthetic generated data by K-means clustering
[Lbl,C,sumd,D] = kmeans(Syn,Classes,'MaxIter',10000,...
    'Display','final','Replicates',10);
SynAll= [Syn Lbl];
SynSort = sortrows(SynAll,5);
Syn=SynSort(:,1:end-1);
Lbl=SynSort(:,end);

%% Plot data and classes
Feature1=1;
Feature2=4;
f1=meas(:,Feature1); % feature 1
f2=meas(:,Feature2); % feature 2
ff1=Syn(:,Feature1); % feature 1
ff2=Syn(:,Feature2); % feature 2
figure('units','normalized','outerposition',[0 0 1 1])
subplot(3,2,1)
area(meas, 'linewidth',1); title('Original Data');
ax = gca; ax.FontSize = 12; ax.FontWeight='bold'; grid on;
subplot(3,2,2)
area(Syn, 'linewidth',1); title('Synthetic Data');
ax = gca; ax.FontSize = 12; ax.FontWeight='bold'; grid on;
subplot(3,2,3)
gscatter(f1,f2,Target,'rgm','.',20); title('Original');
ax = gca; ax.FontSize = 12; ax.FontWeight='bold'; grid on;
subplot(3,2,4)
gscatter(ff1,ff2,Lbl,'rgm','.',20); title('Synthetic');
ax = gca; ax.FontSize = 12; ax.FontWeight='bold'; grid on;
subplot(3,2,[5 6])
histogram(meas, 'Normalization', 'probability', 'DisplayName', 'Original Data');
hold on;
histogram(Syn, 'Normalization', 'probability', 'DisplayName', 'Synthetic Data');
legend('Original','Synthetic')

%% Train and Test
% Training Synthetic dataset by SVM
Mdlsvm  = fitcecoc(Syn,Lbl); CVMdlsvm = crossval(Mdlsvm); 
SVMError = kfoldLoss(CVMdlsvm);
SVMAccAugTrain = (1 - SVMError)*100;
% Predict new samples (the whole original dataset)
[label5,score5,cost5] = predict(Mdlsvm,meas);

%% Test error and accuracy calculations
DataSize=size(meas);DataSize=DataSize(1,1);
a=0;b=0;c=0;
for i=1:DataSize
if label5(i)== 1
a=a+1;
elseif label5(i)==2
b=b+1;
else
label5(i)==3
c=c+1;
end;end;
erra=abs(a-50);errb=abs(b-50);errc=abs(c-50);
err=erra+errb+errc;TestErr=err*100/DataSize;
SVMAccAugTest=100-TestErr; % Test Accuracy

%% Train and Test Accuracy Results
AugRessvm = [' SDG Train SVM "',num2str(SVMAccAugTrain),'" SDG Test SVM"', num2str(SVMAccAugTest),'"'];
disp(AugRessvm);

出图如下:

此外,其他的机器学习的合成数据生成方法如下。

MATLAB环境下基于一维生成对抗网络1D-GAN的合成数据生成

MATLAB环境下基于差分进化算法的合成数据生成

MATLAB环境下基于序列蒙特卡罗方法的合成数据生成

MATLAB环境下基于马尔可夫链蒙特卡罗方法的合成数据生成

MATLAB环境下基于SMOTE方法的合成数据生成

MATLAB环境下基于遗传算法的合成数据生成

MATLAB环境下基于非线性自回归外生输入(ARX)模型的合成数据生成(SDG)方法

MATLAB环境下基于高斯混合模型GMM分布的合成数据生成方法

MATLAB环境下基于Vanilla GAN的合成数据生成方法

程序运行环境为MATLAB R2023A,执行基于Vanilla GAN的合成数据生成。

注意:MATLAB 版本不能低于R2023A,否则将运行失败。https://mbd.pub/o/bread/mbd-ZZyclplv

完整代码可见:MATLAB环境下基于机器学习的合成数据生成方法

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

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

相关文章

VO、RVO、ORCA(动态避障)算法

碰撞锥(碰撞区域) 上上图中假设B物体处于静止状态,A物体沿着向量v1和v2移动,刚好能和B擦肩而过,不会发生碰撞;若V1和V2的夹角再小一点的话就一定会发生碰撞。此时会产生碰撞区域: 红线画出来…

学生信息管理系统--修改信息(非常详细的修改,更新,撤销,删除逻辑)

目录 概述修改包括的操作修改在每个模块中的应用 详解修改与更新取消删除 特殊概念数据集游标 总结 概述 学生信息管理系统,功能相对简单且代码重复性高,应该采用复用的思想来减少代码的冗余和提高代码的可维护性。然而,对于基础入门项目来说…

【Web APIs】DOM获取元素

目录 1.Web API基本认识 2.获取DOM元素 3.设置/修改DOM元素内容 4.设置/修改DOM元素属性 4.1修改元素常用属性 4.2修改元素样式属性 4.3设置/修改表单属性 5.定时器-间歇函数 1.Web API基本认识 作用:就是使用js去操作html和浏览器 分类:DOM&am…

一网打尽音乐制作!FL Studio21.2.3中文版全能数字音频工作站

一网打尽音乐制作!FL Studio21中文版全能数字音频工作站,专业机构力荐 :打造专业音乐制作,让音乐梦想触手可及! FL Studio是一款广泛使用的数字音频工作站,被许多音乐制作人和DJ用来制作和混合音乐。最新版…

基于torch.compile和gptfast代码风格实现ChatGLM模型推理加速

目录 一、ChatGLM模型代码重构迁移 二、推理的代码重构 三、效果分析对比 参考文章 torch2.0发布以后模型训练和推理可以实现一行代码加速,试用之后发现效果并不明显。随后gptfast项目也发布,表明它确实是可以实现模型推理的加速,看来之前…

修改约束

目录 修改约束 创建数据库 添加约束 删除约束 Oracle从入门到总裁:​​​​​​https://blog.csdn.net/weixin_67859959/article/details/135209645 修改约束 如果说表结构的修改还在可以容忍的范畴之内,那么约束的修改是绝对 100% 禁止的 所有的约束一定要在…

微信小程序项目实战遇到的问题

我们以学生成绩平台来作为例子。这是我们想得到的效果。 以下是完整代码: index.js // index.js Page({//页面的初始数据data: {hello: 欢迎进入微信小程序的编程世界,score: 80,userArray: [{name: 张三,score: [66, 77, 86, 70, 90]},{name: 李四,score: [88, 7…

jwt以及加密完善博客系统

目录 一、背景 二、传统登陆功能&强制登陆功能 1、传统的实现方式 2、session存在的问题 三、jwt--令牌技术 1、实现过程 2、令牌内容 3、生成令牌 4、检验令牌 四、JWT登陆功能&强制登陆功能 1、JWT实现登陆功能 2、强制登陆功能 3、运行效果 五、加密/加…

全栈的自我修养 ———— 微信小程序开发电脑测试api请求正常,移动端请求异常!!

小编今天也是在电脑测试时候发送请求http到服务器是可以通的,但是到了手机端就不可以了,经过小编仔细钻研,终于发现了以下问题!!!!!!!!&#xff0…

Java面试题(Spring篇)

💟💟前言 ​ 友友们大家好,我是你们的小王同学😗😗 今天给大家打来的是 Java面试题(Spring篇) 希望能给大家带来有用的知识 觉得小王写的不错的话麻烦动动小手 点赞👍 收藏⭐ 评论📄 小王的主页…

Hive SQL必刷练习题:日期交叉问题(两种思路)

思路一: ​ 首先想到的是借助炸裂函数,一行变成多行,就可以进行去重操作,然后再统计日期。 用到炸裂函数,就首先需要可以拿到起始和终止日期差大小的数组,然后再炸裂​ 那这个指定长度数组怎么获取呢&…

STM32初识3

中断和事件 什么是中断? 中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的 程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行。 什么是EXTI? …

外包干了1个月,技术明显进步。。。

我是一名大专生,自19年通过校招进入湖南某软件公司以来,便扎根于功能测试岗位,一晃便是近四年的光阴。今年8月,我如梦初醒,意识到长时间待在舒适的环境中,已让我变得不思进取,技术停滞不前。更令…

Docker实现在线代码运行平台-源码分析

一、背景 也许大家平时会有用到一些在线代码运行的网址, 方便我们做一些语法测试或者学习。 例如执行Python代码、Java代码、Shell代码等等, 有时候自己本地环境不具备的时候做一些简单的脚本测试还是蛮实用和方便的。 例如这个在线运行的代码站点: https://r.xjq.icu/ 但是你…

ORB-SLAM2安装和运行教程

前言 默认已经安装了cmake、git 、gcc 和g 更新apt库,更新软件列表 sudo apt-get update版本 以下库均可以通过apt-get方式安装,但是非常不建议这样做,版本不同,最后会报很多错,强烈建议源码安装!!&…

LeetCode 17 / 100

目录 普通数组最大子数组和合并区间轮转数组除自身以外数组的乘积缺失的第一个正数 LeetCode 53. 最大子数组和 LeetCode 56. 合并区间 LeetCode 189. 轮转数组 LeetCode 238. 除自身以外数组的乘积 LeetCode 41. 缺失的第一个正数 普通数组 最大子数组和 给你一个整数数组 …

练习 9 Web [SUCTF 2019]CheckIn (未拿到flag)

上传图片格式的木马文件&#xff1a; 返回 <? in contents!,存在PHP代码检测 上传非图片格式文件&#xff1a; 返回 不允许非image 修改木马PHP代码规避检测 <? ?> 改为 < script language“php”>< /script ><?php eval($_POST[shell]);?>…

多模态大语言模型的 (R) 演变:调查

目录 1. Introduction2. 赋予LLMs多模态能力2.1 大型语言模型2.2 视觉编码器2.3 视觉到语言适配器2.4 多模式训练 3. 使用 MLLM 处理视觉任务 连接文本和视觉模式在生成智能中起着至关重要的作用。因此&#xff0c;受大型语言模型成功的启发&#xff0c;大量研究工作致力于多模…

206.翻转链表

给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[5,4,3,2,1]示例 2&#xff1a; 输入&#xff1a;head [1,2] 输出&#xff1a;[2,1]示例 3&#xff1a; 输入&#xff1a;head [] 输…

仿牛客网开发笔记

用到Spring的 一些 核心技术 Spring Framework Spring Core IOC 、AOP > 管理对象的一种思想 IOC > 面向对象的管理思想 AOP > 面向切面的管理思想Spring Data Access 》访问数据库的功能 Transaction、Spring MyBatis Transaction 》管理事务Spring MyBat…