matlab读取西瓜数据集_基于留一交叉验证法将眼动数据划分训练集与测试集---Matlab实现...

ce0ac2ff58a7a9d24b342d0a47417f6f.png

留一交叉定义:

关于详细的定义,参考CSDN博主介绍:

https://blog.csdn.net/u010451580/article/details/51373081

简单说来,留一交叉,就是每次只留下一个样本做测试集,其它样本做训练集,如果有k个样本,则需要训练k次,测试k次。故当用算法进行验证时,需要生成k个训练集,和对应的k个测试集。

训练集与测试集的形式

1.关于label:采用有监督训练的方法,除了要生成对应的训练集之外,还要生成对应的标签,标签需用特定的数字来表示,例如,假如我们要对狗和猫进行图片识别,那么在标签中,可以定义“狗”为1,“猫”为2。

2.关于高维特征处理,继上次眼动数据预处理

半吊子老司机:基于Tobii pro lab眼动数据预处理​zhuanlan.zhihu.com
46c01b6e4a39526a26da5ce1df02a0d1.png

之后,每个人的特征为一个62×4×17的高维矩阵,在生成训练集时,我们首先要利用reshape语句将每个人的特征平铺为两维矩阵,即:

6790097cf9864d8792c0d96b1f767693.png

生成方法:

首先将每一个样本单独拆分,作为一个原始测试集,然后利用赋值语句首先原始样本集赋值给一个临时变量,将作为测试集所在行置空,例如,原始的数据集存放在data中,我们选择sample1作为test1,临时变量命名为s,那么:

teat1=data(1,:);

s=data;

s(1,:)=[];

train1=s;

这样利用迭代就可以生成原始训练集与测试集。

训练集差异性特征选取:

1.标准化:生成原始的训练集之后,首先要根据对特征的类型对每一种特征的数据进行标准化,标准化利用zscore函数,标准化的数据均值为0,标准差为1,但注意需要限制标准化行或者列,例如sample1共有17个特征,每个特征都是62×4的矩阵,当我们将其作为训练集时,已经将特征reshape为1行62×4×17列的矩阵,那么我们进行标准化时,应该一次选择62×4列进行标准化,通过迭代,需要标准化17次。

2.差异性检验:对所有特征进行标准化之后,需要根据label类型将训练集划分为p个group,p代表label类型个数,独立样本T检验要求作对比的group1与group2服从高斯分布,因此我们首先对group1和group2进行高斯分布检测,如果有一组不满足则对其进行非参数检验,如果两组都满足高斯分布,则需要对两组数据进行方差齐次性检验,如果方差不等,则需要对其进行校正,如何方差相等,则进行独立样本t检验。

3.提取有差异的特征,group1与group2进行逐列的检验之后,将检验结果存储为一个矩阵中,命名为result.mat,有差异为1,无差异为0,利用find函数将result中值为1对应的行与列找出,并对应原始训练集和测试集的行与列,提取有差异的特征进行最终训练集与测试集的定义。

训练集与测试集导出

利用chr=[num2str(i),'-train_data.mat'];

save(chr1,'train_data');语句将训练集/测试集存取,其中num2str(i),i表示第i个训练集/测试集。

5bc1c4f03a8305440d9953a4f12d0ae3.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值