EDA365电子论坛网
标题: 机器学习数据集制作与划分MATLAB实现 [打印本页]
作者: uqHZau 时间: 2020-10-27 14:08
标题: 机器学习数据集制作与划分MATLAB实现
.mat数据集制作若整个数据集是一个.mat文件且最后一列数据时标签,则单独将决策变量和标签划分开,一个为ins,另一个为lab。
$ z: y1 _/ r' F; T8 k4 C5 F9 Y: u
.mat数据集说明5 D* j# ~, x4 U$ @# T# k7 c
数据集名称GLIOMA! O* D: {6 A5 z8 U% \& S5 f; N0 ?
6 l( f9 B& G! _
GIOMA包含两个矩阵,一个是实例矩阵或者叫决策变量(ins),另一个是标签矩阵(lab)# a/ B- I( j p
$ d0 B: f7 c/ ]) i/ g5 W
& u+ v# Q( `; T/ l" `5 P* r& d6 {. E
$ Z' Z# ?8 \7 v1 n* d, E# Y! \" p
Ins矩阵大小50*4434,说明该GLIOMA数据集有50个实例(样本),有4434个特征,这50个实例(样本),每一个实例有一个对应的标签lab,标签就是类别。4 c! B5 A {2 n' m2 B& S. I: U
5 n* `$ Z! E7 w0 |$ ]' V打开Ins矩阵,有50行说明有50个实例(样本),有4434列说明有4434个特征(太多了显示不了),这里面的任意一个值(标量)叫做特征值,任意一列是特征向量(列向量),任意一行是实例向量(行向量)0 D/ g4 d2 i/ `; j8 w
4 ~! I K( ? L
8 R/ J1 N2 I4 r
+ x+ l) E: m5 d: U z+ \. H* `$ [打开lab矩阵
9 a4 S, |8 W L/ ~7 q: g5 f0 [9 d. c; K. G9 v8 ]
5 ^, e5 v; U9 y2 @5 h0 s) `& @- k$ _+ q
, n# Q, {8 s z, a有50个标签,标签就是类别(比如1代表幼儿,2代表青年,以此类推),可以看到这是一个具有4个类别的数据集。. d$ C+ F$ T9 r* l0 ]0 [* q) K
! E0 k3 ?0 q' [6 U
数据集划分为训练集和测试集代码
, g+ E0 U, B1 O10折划分
8 B8 t4 ^+ A' D说明:- ①在代码目录下,新建文件夹dataset,将.mat数据集放入其中
- ②输入dataName是一个字符串,如数据集名称为GLIOMA.mat,则输入的dataName为 ‘GLIOMA’(不要加.mat)
- ③iter是算法运行的次数,运行第一次调用第一个随机划分的值,运行第i次调用第i次随机划分的值
- ④Indices是随机划分数据集的索引,iter = 1是生成,之后的则读取第一次生成的文件。' ]# j2 ~4 W( x
! Z/ Z7 @, A: K6 f
% ]' Y7 t1 \; \$ e0 N4 v6 d- 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
( }+ U5 W) b& {
* M9 R X' C' l/ g% m
, s2 T& l& H+ q: [6 ?! ^
三七划分
- y9 I/ C2 n$ Y4 R三七划分和十折划分类似,只是少了个输入参数和全局变量
1 n% r5 d+ F/ Q8 ~
, @) y4 } R- e7 g: n5 D# A- function [train_F,train_L,test_F,test_L] = DIVDATA37(dataName)
- file = ['dataset/',dataName,'.mat'];
- load(file)
- & r% f$ ?* `2 o- w6 V4 R; i, u
- dataMat=ins;
- len=size(dataMat,1);
- %归一化
- & L6 o. l+ A% b# f4 e
- maxV = max(dataMat);
- minV = min(dataMat);
- range = maxV-minV;
- newdataMat = (dataMat-repmat(minV,[len,1]))./(repmat(range,[len,1]));
% q( R1 E5 c- U8 Z- f0 J# {- 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
+ b& f3 B8 G9 x/ o1 o& R# L; k8 o
6 B3 \* `' L" f3 ?2 W3 b
作者: CCxiaom 时间: 2020-10-27 14:52
机器学习数据集制作与划分MATLAB实现
| 欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) |
Powered by Discuz! X3.2 |