基于麻雀搜索算法优化的SVM数据分类预测 - 附代码
文章目录
- 基于麻雀搜索算法优化的SVM数据分类预测 - 附代码
- 1.数据集
- 模型建立
- 3.基于麻雀算法优化的SVM
- 4.测试结果
- 5.参考文献:
- 代码
- 代码
摘要:为了提高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 个样本各自的类别标签 。
模型建立
首先需要从原始数据里把训练集和测试集提取出来,然后进行一定的预处理(必要的时候 还需要进行特征提取),之后用训练集对 SVM 进行训练,最后用得到的模型来预测测试集的分类标签。
其中数据预处理采用归一化处理:对训练集和测试集进行归一化预处理,采用的归一化映射如下 。
y
=
x
−
x
m
i
n
x
m
a
x
−
x
m
i
n
(1)
y = \frac{x-x_{min}}{x_{max} - x{min}} \tag{1}
y=xmax−xminx−xmin(1)
3.基于麻雀算法优化的SVM
麻雀搜索算法的具体原理参考博客:/u011835903/article/details/108830958。
麻雀算法的优化参数为SVM中惩罚参数c和核函数参数g。适应度函数为SVM对测试集的预测正确率。
f
i
n
t
e
n
e
s
s
=
m
a
x
(
a
c
c
u
r
a
c
y
[
p
r
e
d
i
c
t
(
t
e
s
t
)
]
finteness = max(accuracy[predict(test)]
finteness=max(accuracy[predict(test)]
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个案例分析》
代码
[基于麻雀算法优化的SVM数据分类]
[基于海鸥算法优化的SVM数据分类]
[基于粒子群算法优化的SVM数据分类]
[基于灰狼算法优化的SVM数据分类]
[基于人工蜂群算法优化的SVM数据分类]
[基于布谷鸟算法优化的SVM数据分类
[基于鲸鱼算法优化的SVM数据分类]
[基于萤火虫算法优化的SVM数据分类]
[基于风驱动算法优化的SVM数据分类]
[基于花授粉算法优化的SVM数据分类]
[基于遗传算法优化的SVM数据分类]
[基于狮群算法优化的SVM数据分类]
代码
[基于麻雀算法的SVM分类]
[基于海鸥算法的SVM分类]
[基于灰狼算法的SVM分类]
[基于粒子群算法的SVM分类]
个人资料介绍