.mat数据集制作

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

相关文章

.mat数据集说明

3ba7869dacfc76e418b1558be3590a02.png数据集名称GLIOMA

GIOMA包含两个矩阵,一个是实例矩阵或者叫决策变量(ins),另一个是标签矩阵(lab)

1defc3debcae6ddddcf007252a8fbb34.png

Ins矩阵大小50*4434,说明该GLIOMA数据集有50个实例(样本),有4434个特征,这50个实例(样本),每一个实例有一个对应的标签lab,标签就是类别。

打开Ins矩阵,有50行说明有50个实例(样本),有4434列说明有4434个特征(太多了显示不了),这里面的任意一个值(标量)叫做特征值,任意一列是特征向量(列向量),任意一行是实例向量(行向量)

2de9af4b144c1e473065813f488e880b.png

打开lab矩阵

007b4f490718a73ef9d80c62cd7441e7.png

有50个标签,标签就是类别(比如1代表幼儿,2代表青年,以此类推),可以看到这是一个具有4个类别的数据集。

数据集划分为训练集和测试集代码

10折划分

说明:

①在代码目录下,新建文件夹dataset,将.mat数据集放入其中

②输入dataName是一个字符串,如数据集名称为GLIOMA.mat,则输入的dataName为 ‘GLIOMA’(不要加.mat)

③iter是算法运行的次数,运行第一次调用第一个随机划分的值,运行第i次调用第i次随机划分的值

④Indices是随机划分数据集的索引,iter = 1是生成,之后的则读取第一次生成的文件。

MATLAB

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

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]));

ifmod(iter,10)==1

Indices=crossvalind('Kfold',length(lab),fold);

saveIndices;

else

loadIndices;

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

三七划分

三七划分和十折划分类似,只是少了个输入参数和全局变量

MATLAB

function [train_F,train_L,test_F,test_L] = DIVDATA37(dataName)

file = ['dataset/',dataName,'.mat'];

load(file)

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]));

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

function[train_F,train_L,test_F,test_L]=DIVDATA37(dataName)

file=['dataset/',dataName,'.mat'];

load(file)

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]));

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

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐