基于蜣螂算法优化的SVM数据分类预测 - 附代码
文章目录
- 基于蜣螂算法优化的SVM数据分类预测 - 附代码
- 1.数据集
- 2.SVM模型建立
- 3.基于蜣螂算法优化的SVM
- 4.测试结果
- 5.参考文献:
- 6.Matlab代码
- 7.python代码
摘要:为了提高SVM数据的分类预测准确率,对SVM中惩罚参数和核函数参数利用蜣螂算法进行优化。
1.数据集
wine 数据的来源是 UCI 数据库 , 记录的是在意大利同一区域里三种不同品种的葡萄酒的化学成分分析,数据里含有 178 个样本,每个样本含有 13 个特征分量(化学成分〉,每个样本 的类别标签已给。将这 178 个样本的 50%作为训练集,另 50%作为测试集 ,用训练集对 SVM 进行训练可以得到分类模型,再用得到的模型对测试集进行类别标签预测。
整体数据存储在 chapter_WineClass. mat ,解释如下: classnumber = 3 ,记录类别数目;
wine, 178 × 13 的 一个 double 型的矩阵,记录 178 个样本的 13 个属性;
wine_ labels, 178 × 1的 一个 double 型的列向盘,记录 178 个样本各自的类别标签 。
图1.数据集
2.SVM模型建立
首先需要从原始数据里把训练集和测试集提取出来,然后进行一定的预处理(必要的时候 还需要进行特征提取),之后用训练集对 SVM 进行训练,最后用得到的模型来预测测试集的分类标签。
图2.SVM模型
其中数据预处理采用归一化处理:对训练集和测试集进行归一化预处理,采用的归一化映射如下 。
3.基于蜣螂算法优化的SVM
蜣螂算法的具体原理参考博客
蜣螂算法的优化参数为SVM中惩罚参数c和核函数参数g。适应度函数为SVM对测试集的预测正确率。
4.测试结果
蜣螂参数设置如下:
%目标函数
fun = @getObjValue; %适应度函数
% 优化参数的个数 (c、g)
dim = 2;
% 优化参数的取值下限
lb = [10^-1, 2^-5];
ub = [10^1, 2^4];
pop =10; %蜣螂数量
Max_iteration=20;%最大迭代次数
从最终结果来看,经过蜣螂优化的SVM测试集预测正确率为100%。而未经过优化的SVM的正确率为98.78%(数据来源于《MATLAB神经网络43个案例分析》)
5.参考文献:
书籍《MATLAB神经网络43个案例分析》
6.Matlab代码
7.python代码