机器学习-二分类问题(更新中)
一 数据集划分方法通常收集的数据集有以下两种划分方式,值得注意的是训练集和测试集的划分比例一般为3:1到5:1之间,训练集的数据应该尽量多一点,且保证正负样本均衡,都则会造成过拟合。1 划分为训练集、验证集和独立测试集比如训练集主要是通过训练模型调参等,而验证集则用来验证哪个参数比较有效独立测试集用来验证最后生成的模型是否有效2 划分为训练集和独立测试集此时可以使用交叉验证法在训练集上调参独立测试
一 数据集划分方法
通常收集的数据集有以下两种划分方式,值得注意的是训练集和测试集的划分比例一般为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次五折交叉验证来获取分类准确率
更多推荐
所有评论(0)