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

合成数据是通过计算机程序人工生成的数据,而不是由真实事件生成的数据。采用合成数据来增加训练数据,可以节省数据采集费用,或满足隐私要求。随着计算能力的提高和云数据存储选项的崛起,合成数据比以往更容易获取。这无疑是一个积极的发展:合成数据推动了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环境下基于机器学习的合成数据生成方法

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

大数据信用评分40-60分,大概多久能涨回来?

大数据信用在现如今的贷前风控审核中有着重要的作用,不少人都遇到过申贷被大数据拒贷的情况,其中很多都是因为大数据评分不足,那大数据信用评分40-60分,大概多久能涨回来呢?本文就为大加详细介绍一下涨综合评分的方法和时间&…

C语言例3-25:逗号运算的例子

逗号运算符的优先级&#xff1a; 任何运算符 优先于 逗号运算符&#xff0c;即逗号运算符的优先级是最低的逗号运算符的结合性是从左至右 代码如下&#xff1a; #include<stdio.h> int main(void) {int a0,b1,c,d,e;// printf("c2,d3 的值&#xff1a;%d\n"…

探索极限:利用整数或字符串操作找出翻转后的最大数字

本篇博客会讲解力扣“1323. 6 和 9 组成的最大数字”的解题思路&#xff0c;这是题目链接。 对于这道题目&#xff0c;我会讲解2种解题思路&#xff0c;分别是直接操作整数&#xff0c;和利用字符串操作。希望大家通过本题学习关于整数和字符串的技巧。 显然&#xff0c;这道题…

一键部署灵境矩阵,属于自己的ai智能平台。

灵境矩阵 | 想象即现实 “灵境杯”智能体创意大赛&#xff0c;瓜分百万超级奖励 打造专属AI智能平台&#xff1a;一键部署灵境矩阵的无限可能 在数字化浪潮席卷全球的今天&#xff0c;人工智能技术已逐渐成为推动社会进步的关键力量。面对这一趋势&#xff0c;许多企业和个人…

113 链接集10--ctrl+左键单击多选

1.ctrl+左键单击多选,单击单选 精简代码 <div class="model-list"><div@mousedown.prevent="handleClick(item, $event)"class="model-list-item"v-for="item in modelList":key="item.id":class="{ model-a…

STM32最小核心板使用HAL库实现UART接口通讯(中断方式)

正式环境里需要串联电阻&#xff0c;或设计过滤电路。核心板是STM32F103C8T6 这里使用了UART3的接口&#xff0c;具体使用MX创建项目就不放了&#xff0c;百度下都有 /*USART3 GPIO ConfigurationPB10 ------> USART3_TXPB11 ------> USART3_RX */ 因为是串口…

eth uniswap 套利交易案例四

交易hash: 0x085843b47c0d1b0f820b80c166ea8dd2e3928876fb353d107e49dcf879cf8426 交易时间&#xff1a; 2024.02.29 获利&#xff1a; 196,284刀 balancer 借了 338个 weth&#xff0c; 然后和 0x3BA6A019eD5541b5F5555d8593080042Cf3ae5f4 交易用 282个weth 换了293个wste…

15届蓝桥杯第一期模拟赛所有题目解析

文章目录 &#x1f9e1;&#x1f9e1;t1_字母数&#x1f9e1;&#x1f9e1;问题描述思路代码 &#x1f9e1;&#x1f9e1;t2_大乘积&#x1f9e1;&#x1f9e1;问题描述思路代码 &#x1f9e1;&#x1f9e1;t3_星期几&#x1f9e1;&#x1f9e1;问题描述思路代码 &#x1f9e1;…

基于 Echarts + Python Flask ,我搭建了一个动态实时大屏监管系统

一、效果展示 1. 动态实时更新数据效果图 2. 鼠标右键切换主题 二、确定需求方案 支持Windows、Linux、Mac等各种主流操作系统&#xff1b;支持主流浏览器Chrome&#xff0c;Microsoft Edge&#xff0c;360等&#xff1b;服务器采用python语言编写&#xff0c;配置好python环…

CommonJs规范

文章目录 1. CommonJS 模块的导出2. CommonJS 模块的导入2.1使用 require 函数导入文件模块&#xff08;用户自定义&#xff09;2.2使用 require 函数导入核心模块&#xff08;Node.js 内置的模块&#xff09;2.3文件夹作为模块2.4模块的原理 在node中&#xff0c;默认支持的模…

js【详解】typeof 运算符

typeof()表示“获取变量的数据类型”&#xff0c;返回的是小写&#xff0c;语法为&#xff1a;&#xff08;两种写法都可以&#xff09; // 写法1 typeof 变量;// 写法2 typeof(变量); typeof 这个运算符的返回结果就是变量的类型。 返回结果&#xff1a; typeof 的代码写法…

参与者中心方案设计

参与者中心方案设计 ⼀、背景介绍 为适应客⼾多元化&#xff0c;随着业务发展&#xff0c;需要⽀持以平台为基础⽀持多租⼾企业⼊驻⽅式进⾏对外放。 1.1 需求来源 客⼾、产品 1.2 需求描述 ⽀持多租⼾ ⽀持客⼾⾃定义⻆⾊、菜单权限 ⽀持根据不同⻆⾊设置不同数据权限控…

<Linux> 生产者消费者模型

目录 前言&#xff1a; 一、什么是生产者消费者模型 &#xff08;一&#xff09;概念 &#xff08;二&#xff09;生产者消费者之间的关系 &#xff08;三&#xff09;生产者消费者模型特点 &#xff08;四&#xff09;生产者消费者模型的优点 二、基于阻塞队列实现生产…

Vue按需加载:提升应用性能的利器

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

Golang 异步(bsd/linux)io

Golang 异步(bsd/linux)io 在日常开发中&#xff0c;读写文件的底层调用函数是syscall.Read/Write。一切都是围绕这两个函数展开的&#xff0c;不过有时候需要或者就是单纯想异步执行。liburing是linux上一个很好的原生异步io库&#xff0c;这里需要适配bsd派系的系统&#xf…

Kotlin runBlocking CoroutineScope synchronized简单死锁场景

Kotlin runBlocking CoroutineScope synchronized简单死锁场景 import kotlinx.coroutines.*fun main(args: Array<String>) {runBlocking {val lock1 Any()val lock2 Any()CoroutineScope(Dispatchers.IO).launch {repeat(10) {println("A-$it 申请 lock1...&quo…

[NCom]:CeO2上单原子 Pt用于 CO 氧化的记忆驱动动力学

摘要&#xff1a;CeO2上的铂族金属单原子代表了降低汽车尾气处理催化剂贵金属需求的潜在方法。在这里&#xff0c;我们展示了CeO2上两种类型的单原子 Pt (Pt1) 的动态演化&#xff0c;即Pt/CeO2中的吸附 Pt 1和PtATCeO2中的方形平面 Pt1&#xff0c;在 500 C 下制造&#xff0c…

金融知识分享系列之:KD指标

金融知识分享系列之&#xff1a;KD指标 一、KD指标二、KD指标计算三、KD指标原理四、KD指标应用 一、KD指标 KD信号提供入场的工具 名称&#xff1a;随机震荡指标参数&#xff1a;&#xff08;9,3,3&#xff09;组成&#xff1a;K线&#xff0c;D线&#xff0c;20轴&#xff0…

【学习心得】Python数据分析的基本思路

一、什么是数据分析&#xff1f; 数据分析是指通过一些方法&#xff0c;对一些数据进行分析&#xff0c;从中提取出有价值的信息并形成结论进行展示。 &#xff08;1&#xff09;一些方法 数学和统计学方法&#xff1a;例如回归分析、聚类分析、主成分分析、时间序列分析等&a…

Day01-数据类型和运算符(MySQL服务器的安装,MySQL客户端,数据类型,运算符,MySQL的语法规范)

文章目录 Day01-数据类型和运算符学习目标1. 数据库介绍1.1 数据库的发展历史1.2 数据库分类1.2.1 关系型(SQL)数据库1.2.2 非关系型(NoSQL)数据库1.2.3 数据库排名 2. MySQL服务器的安装2.1 MySQL介绍2.2 下载2.3 安装2.4 启动服务器2.5 卸载 3. MySQL客户端3.1 使用命令行客户…