![ce0ac2ff58a7a9d24b342d0a47417f6f.png](https://i-blog.csdnimg.cn/blog_migrate/c024762d5e61561b31e0a9501885653b.jpeg)
留一交叉定义:
关于详细的定义,参考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](https://i-blog.csdnimg.cn/blog_migrate/bbd778ec01ac1a91539550143ce33ef5.jpeg)
之后,每个人的特征为一个62×4×17的高维矩阵,在生成训练集时,我们首先要利用reshape语句将每个人的特征平铺为两维矩阵,即:
![6790097cf9864d8792c0d96b1f767693.png](https://i-blog.csdnimg.cn/blog_migrate/3300695860c7bd7fe9c118fced38c9fc.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](https://i-blog.csdnimg.cn/blog_migrate/1024364127dfcab014a62b91676e5420.png)