|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
.mat数据集制作若整个数据集是一个.mat文件且最后一列数据时标签,则单独将决策变量和标签划分开,一个为ins,另一个为lab。
$ W# p( U' |+ P+ l& E/ ~8 k0 p
- ?8 \7 q3 ~2 B& q.mat数据集说明
- x6 u8 i/ I. E& v& g* ]5 T
数据集名称GLIOMA; U2 C6 c2 A* K1 j
8 Z2 ]+ ~5 M9 S# a
GIOMA包含两个矩阵,一个是实例矩阵或者叫决策变量(ins),另一个是标签矩阵(lab)
4 z @( @/ U, B* D1 \4 V# G* m4 X W' F# k) _
& {9 U9 o+ H, O' V7 C( y- \9 I- o3 z. U5 y1 }# s3 i- C0 Q
Ins矩阵大小50*4434,说明该GLIOMA数据集有50个实例(样本),有4434个特征,这50个实例(样本),每一个实例有一个对应的标签lab,标签就是类别。" m, _& o1 Y% e; Q- J4 l. N$ l8 g
% ~% H! |5 P! A, d打开Ins矩阵,有50行说明有50个实例(样本),有4434列说明有4434个特征(太多了显示不了),这里面的任意一个值(标量)叫做特征值,任意一列是特征向量(列向量),任意一行是实例向量(行向量)
1 S/ o1 [$ T! k' n0 h( T
: e; O7 p3 P7 A( X
1 O! Q* f5 Q- i* T3 S3 G
" _, ^4 s6 \1 x: h打开lab矩阵
3 s, o! _ ], G, ?% k8 C( r6 v+ M l3 j2 o9 z2 y% z0 q1 Z3 D
8 v8 [- n- b! Z5 A8 l
1 L1 P4 H9 A0 x+ x$ H+ M2 b有50个标签,标签就是类别(比如1代表幼儿,2代表青年,以此类推),可以看到这是一个具有4个类别的数据集。
7 K- _7 H* l/ p! W% v- w- e0 S0 B8 L( e# S. C% k
数据集划分为训练集和测试集代码
1 ^3 Y4 J5 p/ X' a10折划分
/ w7 B# ]7 @: V6 N7 S说明:- ①在代码目录下,新建文件夹dataset,将.mat数据集放入其中
- ②输入dataName是一个字符串,如数据集名称为GLIOMA.mat,则输入的dataName为 ‘GLIOMA’(不要加.mat)
- ③iter是算法运行的次数,运行第一次调用第一个随机划分的值,运行第i次调用第i次随机划分的值
- ④Indices是随机划分数据集的索引,iter = 1是生成,之后的则读取第一次生成的文件。( E m$ U+ P4 f, a4 P8 J
9 Q) Z" l, g1 J, T' H
8 F+ K' E' Z) H/ ]. K$ T+ M# w( x
- 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
3 i q7 F% S7 ]% o
; s1 l. Z" ~" Z) @$ d: H) N9 A: [1 a' v" c6 C
三七划分+ F8 F+ ~# z8 X" }
三七划分和十折划分类似,只是少了个输入参数和全局变量
$ Y& y ~7 K0 h8 w+ G
7 i( n9 ?$ \& n# e0 ^/ p- function [train_F,train_L,test_F,test_L] = DIVDATA37(dataName)
- file = ['dataset/',dataName,'.mat'];
- load(file)
7 _/ Q w7 n& R* R% j8 y- i3 a- dataMat=ins;
- len=size(dataMat,1);
- %归一化
- " Z0 J/ @ v+ _& q' V3 O. D
- maxV = max(dataMat);
- minV = min(dataMat);
- range = maxV-minV;
- newdataMat = (dataMat-repmat(minV,[len,1]))./(repmat(range,[len,1]));
( ?7 S6 n9 B. \9 S* r+ W- X- 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- X4 S, m2 S' f, Q0 l! q4 S! d
2 V! J" e% V# d' z: O8 g3 x+ A |
|