一 数据集划分方法

通常收集的数据集有以下两种划分方式,值得注意的是训练集和测试集的划分比例一般为3:1到5:1之间,训练集的数据应该尽量多一点,且保证正负样本均衡,都则会造成过拟合。

1 划分为训练集、验证集和独立测试集
比如训练集主要是通过训练模型调参等,而验证集则用来验证哪个参数比较有效
独立测试集用来验证最后生成的模型是否有效

2 划分为训练集和独立测试集
此时可以使用交叉验证法在训练集上调参
独立测试集的作用不变

二 F-score特征排序(matlab+python)

简介

待更新(还没有毕业,担心毕业论文的查重问题)

数据处理(matlab)

首先需要将标签和特征合并 ,下图举例为四个样本,提取了他们的10个特征,加上标签一共11列,,假设这个文件的名字为data1.mat(为了方便讲述接下来的操作)
在这里插入图片描述

文件格式处理(matlab)

在使用F-score之前需要将data1.mat处理为F-score可以接受的libsvm格式

1 在我的资源中下载“write4libsvm.m”文件
2 打开matlab,然后打开下载好的“write4libsvm.m”文件
3 点击运行按钮
在这里插入图片描述
然后弹出以下界面,选择data1.mat文件,点击打开
在这里插入图片描述
然后弹出以下界面,设置修改格式之后存储的文件名,我们设置为data1.txt,点击保存,开始处理在这里插入图片描述
运行完毕之后就得到data1.txt,里面内容是以下格式
在这里插入图片描述

运行F-score选择方法(python)

运行前提
1 安装python环境
2 去我的资源中下载“F-score.py”文件,并将其放到data1.txt同一目录下
3 在data1.txt的路径下打开cmd命令行窗口
在这里插入图片描述
4 运行以下代码

python F-score.py data1.txt

然后程序运行结束,如下所示,可以忽略报错
在这里插入图片描述
之后得到以下三个文件
在这里插入图片描述
文件1 包含对所有特征的打分,这个文件是有用的,内容如下
在这里插入图片描述
第一列代表特征的编号,冒号后面代表该特征的得分,分数越高代表该特征对于分类越有效,具体原理可以看F-score的介绍

文件2 包含推荐你使用的特征数量,后面我们会使用IFS进行特征选择,所以不太有用

三 IFS特征选择

简介

待更新(还没有毕业,担心毕业论文的查重问题,嘻嘻)

前提(matlab)

准备好特征的排序,比如上文中我们通过F-score得到特征的排序(当然可以用其他方法排序,这只是其中一种),但是需要作如下处理

1 将data1.txt.fscore复制到txt文件中,这样方便处理,我们命名为data1.txt.fscore.txt

2 读取fsore文件中第一列的特征的排序,去除得分,只留下序号,代码如下

% .fscore 得分矩阵的一部分
A=textread('data1.txt.fscore.txt','%s','delimiter',':');
a=size(A,1)/2-1;     %带标签的特征训练集的行数除以2再减1,也就是数据集的一半的数目a
C=[];
for i=0:a
    D11=A(2*i+1,:);  %读奇数行
    C=[C D11];       %水平并排
end

A=str2double(C);    %取数据集的一半,再取一半数据集的奇数行,str类型转成double类型

然后可以得到文件A.mat,内容如下,列出了F-score得分从高到低的特征序号
在这里插入图片描述

使用IFS,选取最佳特征数量(matlab)

备注:我们的IFS是基于SVM进行的,每添加一个特征时,都会进行10次五折交叉验证来获取分类准确率

更多推荐