找回密码
 注册
关于网站域名变更的通知
查看: 356|回复: 1
打印 上一主题 下一主题

机器学习数据集制作与划分MATLAB实现

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-10-27 14:08 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
.mat数据集制作
若整个数据集是一个.mat文件且最后一列数据时标签,则单独将决策变量和标签划分开,一个为ins,另一个为lab。

& j; u# l! M+ @( S( K4 r) f% d$ E; ]# S2 \* w  |: Q7 R3 `% _
.mat数据集说明
1 e/ J( A. V' D" ?% ]1 Q 数据集名称GLIOMA2 d" n' c+ a9 _( g! Q9 d* b
" |! }3 X' G4 x0 m$ o: w
GIOMA包含两个矩阵,一个是实例矩阵或者叫决策变量(ins),另一个是标签矩阵(lab)' D" G! i" u) z- Y; y- q" F
2 Z3 a% g6 d  @8 T+ t$ a
3 p1 ^3 M& H; U' q
2 j5 b6 t, X0 n3 D0 R" p
Ins矩阵大小50*4434,说明该GLIOMA数据集有50个实例(样本),有4434个特征,这50个实例(样本),每一个实例有一个对应的标签lab,标签就是类别。: a/ @, M& D+ G, X2 V5 n
8 j. T* k3 _$ @
打开Ins矩阵,有50行说明有50个实例(样本),有4434列说明有4434个特征(太多了显示不了),这里面的任意一个值(标量)叫做特征值,任意一列是特征向量(列向量),任意一行是实例向量(行向量)
- X5 L2 O$ l) G
: r1 @$ `: g' F9 C6 I: t+ S8 z 1 O2 j1 z3 f2 t; w3 n/ ^2 u# p$ `

7 N$ W- x" N4 N$ T! {打开lab矩阵. [2 Y, Z# S+ l5 N# i+ Y+ B

9 u0 _$ C3 l6 n" E! ? 1 V' l: u, _5 C
  r0 q4 @9 C" D; Z
有50个标签,标签就是类别(比如1代表幼儿,2代表青年,以此类推),可以看到这是一个具有4个类别的数据集。$ p- x3 o% R, ~& e6 o- D

: ]' C+ `! w6 q, ]数据集划分为训练集和测试集代码
2 D. W1 }6 @0 q6 G+ t6 x$ r10折划分
+ e  n' N& h- S1 `- ^( `5 o+ N说明:
  • ①在代码目录下,新建文件夹dataset,将.mat数据集放入其中
  • ②输入dataName是一个字符串,如数据集名称为GLIOMA.mat,则输入的dataName为 ‘GLIOMA’(不要加.mat)
  • ③iter是算法运行的次数,运行第一次调用第一个随机划分的值,运行第i次调用第i次随机划分的值
  • ④Indices是随机划分数据集的索引,iter = 1是生成,之后的则读取第一次生成的文件。. }: \5 i- f9 k* N% d  B7 {

) X3 J/ E. ?, B# k! i% u' g
0 l7 B6 K* j1 u$ F0 l4 w* h3 k7 Y
  • function [train_F,train_L,test_F,test_L] = DIVDATA10fold(dataName,iter)
  • file = ['dataset/',dataName,'.mat'];
  • load(file)
  • fold = 10
  • dataMat=ins;
  • len=size(dataMat,1);
  • maxV = max(dataMat);
  • minV = min(dataMat);
  • range = maxV-minV;
  • newdataMat = (dataMat-repmat(minV,[len,1]))./(repmat(range,[len,1]));
  • if mod(iter, 10) == 1
  •     Indices   =  crossvalind('Kfold', length(lab), fold);
  •     save Indices;
  • else
  •     load Indices;
  • end
  • site = find(Indices==iter);
  • test_F = newdataMat(site,:);
  • test_L = lab(site);
  • site2 = find(Indices~=iter);
  • train_F = newdataMat(site2,:);
  • train_L =lab(site2);
  • end
    6 h! y3 j* B4 _
, j' W  ^4 W, z
  I% s$ g! ~( o6 ~2 ^+ j2 v9 ^0 R
三七划分" x* x# J. D5 c' |7 j' Y" z
三七划分和十折划分类似,只是少了个输入参数和全局变量3 N; Z( ~8 j3 ?* J

/ {7 W: I& @4 ?. @7 y* i# m( X; x& t
  • function [train_F,train_L,test_F,test_L] = DIVDATA37(dataName)
  • file = ['dataset/',dataName,'.mat'];
  • load(file)
  • % g9 @9 V+ j0 ]' k
  • dataMat=ins;
  • len=size(dataMat,1);
  • %归一化
  • $ C: l4 u$ T9 @, j
  • maxV = max(dataMat);
  • minV = min(dataMat);
  • range = maxV-minV;
  • newdataMat = (dataMat-repmat(minV,[len,1]))./(repmat(range,[len,1]));
  • / h$ e7 }! I6 Z/ |
  • Indices   =  crossvalind('Kfold', length(lab), 10);
  • site = find(Indices==1|Indices==2|Indices==3);
  • test_F = newdataMat(site,:);
  • test_L = lab(site);
  • site2 = find(Indices~=1&Indices~=2&Indices~=3);
  • train_F = newdataMat(site2,:);
  • train_L =lab(site2);
  • end; X* L4 s' b* s, [8 D
   
# p. J# V  U' _4 L4 h

该用户从未签到

2#
发表于 2020-10-27 14:52 | 只看该作者
机器学习数据集制作与划分MATLAB实现
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-7-30 01:08 , Processed in 0.125000 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表