Python实现HBA混合蝙蝠智能算法优化支持向量机分类模型(SVC算法)项目实战

说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取。

Python实现HBA混合蝙蝠智能算法优化支持向量机分类模型(SVC算法)项目实战_第1张图片

Python实现HBA混合蝙蝠智能算法优化支持向量机分类模型(SVC算法)项目实战_第2张图片

1.项目背景

蝙蝠算法是2010年杨教授基于群体智能提出的启发式搜索算法,是一种搜索全局最优解的有效方法。该算法基于迭代优化,初始化为一组随机解,然后迭代搜寻最优解,且在最优解周围通过随机飞行产生局部新解,加强局部搜索速度。该算法具有实现简单、参数少等特点。

混合蝙蝠算法针对基本蝙蝠算法存在收敛速度慢,易陷入局部最优,求解精度低等缺陷,提出一种融合局部搜索的混合蝙蝠算法用于求解无约束优化问题。该算法利用混沌序列对蝙蝠的位置和速度进行初始化,为全局搜索的多样性奠定基础;融合Powell搜索以增强算法的局部搜索能力,加快收敛速度;使用变异策略在一定程度上避免算法陷入局部最优。

本项目通过HBA混合蝙蝠智能算法优化支持向量机分类模型。

2.数据获取

本次建模数据来源于网络(本项目撰写人整理而成),数据项统计如下:

Python实现HBA混合蝙蝠智能算法优化支持向量机分类模型(SVC算法)项目实战_第3张图片

 数据详情如下(部分展示):

Python实现HBA混合蝙蝠智能算法优化支持向量机分类模型(SVC算法)项目实战_第4张图片

3.数据预处理

3.1 用Pandas工具查看数据

使用Pandas工具的head()方法查看前五行数据:

Python实现HBA混合蝙蝠智能算法优化支持向量机分类模型(SVC算法)项目实战_第5张图片

关键代码:

3.2数据缺失查看

使用Pandas工具的info()方法查看数据信息:

Python实现HBA混合蝙蝠智能算法优化支持向量机分类模型(SVC算法)项目实战_第6张图片

 从上图可以看到,总共有9个变量,数据中无缺失值,共1000条数据。

关键代码:

3.3数据描述性统计

通过Pandas工具的describe()方法来查看数据的平均值、标准差、最小值、分位数、最大值。

Python实现HBA混合蝙蝠智能算法优化支持向量机分类模型(SVC算法)项目实战_第7张图片

关键代码如下:

4.探索性数据分析

4.1 y变量柱状图

用Matplotlib工具的plot()方法绘制柱状图:

Python实现HBA混合蝙蝠智能算法优化支持向量机分类模型(SVC算法)项目实战_第8张图片

4.2 y=1样本x1变量分布直方图

用Matplotlib工具的hist()方法绘制直方图:

Python实现HBA混合蝙蝠智能算法优化支持向量机分类模型(SVC算法)项目实战_第9张图片

4.3 相关性分析

Python实现HBA混合蝙蝠智能算法优化支持向量机分类模型(SVC算法)项目实战_第10张图片

 从上图中可以看到,数值越大相关性越强,正值是正相关、负值是负相关。

5.特征工程

5.1 建立特征数据和标签数据

关键代码如下:

Python实现HBA混合蝙蝠智能算法优化支持向量机分类模型(SVC算法)项目实战_第11张图片

5.2 数据集拆分

通过train_test_split()方法按照80%训练集、20%测试集进行划分,关键代码如下:

6.构建HBA混合蝙蝠智能算法优化支持向量机分类模型

主要使用HBA混合蝙蝠智能算法优化SVC算法,用于目标分类。

6.1 算法介绍

     说明:算法介绍来源于网络,供参考

蝙蝠算法(Bat Algorithm,BA)算法是模拟自然界中蝙蝠利用一种声呐来探测猎物、避免障碍物的随机搜索算法即模拟蝙蝠利用超声波对障碍物或猎物进行最基本的探测、定位能力并将其和优化目标功能相联系。BA算法的仿生原理将种群数量为的蝙蝠个体映射为D维问题空间中的NP个可行解,将优化过程和搜索模拟成种群蝙蝠个体移动过程和搜寻猎物利用求解问题的适应度函数值来衡量蝙蝠所处位置的优劣,将个体的优胜劣汰过程类比为优化和搜索过程中用好的可行解替代较差可行解的迭代过程。在蝙蝠搜索算法中,为了模拟蝙蝠探测猎物、避免障碍物,需假设如下三个近似的或理想化的规则:

1)所有蝙蝠利用回声定位的方法感知距离,并且它们采用一种巧妙的方式来区别猎物和背景障碍物之间的不同。

2)蝙蝠在位置xi以速度vi随机飞行,以固定的频率fmin、可变的波长λ和音量A0来搜索猎物。蝙蝠根据自身与目标的邻近程度来自动调整发射的脉冲波长(或频率)和调整脉冲发射率r属于[0,1]。

3)虽然音量的变化方式有多种但在蝙蝠算法中, 假定音量A是从一个最大值A0(整数)变化到固定最小值Amin。

对于目标函数为minf(x),目标变量为X=(x1,x2,……,xd)T的优化问题,BA算法的实施过程描述如下:

Step1: 种群初始化,即蝙蝠以随机方式在D维空间中扩散分布一组初始解。最大脉冲音量A0,最大脉冲率R0, 搜索脉冲频率范围[fmin,fmax],音量的衰减系数α,搜索频率的增强系数γ,搜索精度ε或最大迭代次数iter_max。

Step2: 随机初始化蝙蝠的位置xi,并根据适应度值得优劣寻找当前的最优解x*。

Step3: 蝙蝠的搜索脉冲频率、速度和位置更新。种群在进化过程中每一下公式进行变化:

fi=fmin+(fmax-fmin)xβ (1)

vi^t=vi^(t-1)+(xi^t-x*)xfi (2)

xi^t=xi^(t-1)+vi^(t) (3)

式中:β属于[0,1]是均匀分部的随机数;fi是蝙蝠i的搜索脉冲频率,fi属于[fmin,fmax];vi^t、vi^(t-1)分别表示蝙蝠i在t和t-1时刻的速度;xi^t、xi^(t-1)分别表示蝙蝠i在t和t-1时刻的位置; x*表示当前所有蝙蝠的最优解。

Step4:生成均匀分布随机数rand,如果rand>r,则对当前最优解进行随机扰动,产生一个新的解,并对新的解进行越界处理。

Step5:生成均匀分布随机数rand,如果rand

Ai^(t+1)=αAi^(t) (4)

ri^(t+1)=R0[1-exp(-γt)] (5)

Step6:对所有蝙蝠的适应度值进行排序,找出当前的最优解和最优值。

Step7:重复步Step2~Step5直至满足设定的最优解条件或者达到最大迭代次数。

Step8:输出全局最优值和最优解。

从上述蝙蝠算法实现过程的式(3)~(5)可知,蝙蝠算法中的两个参数:音量的衰减系数α和搜索频率的增强系数,对算法性能的影响非常大。如何有效平衡算法的寻优精度和收敛速度,关键是合理设置参数α、γ的值。仿真过程通过反复调整参数α、γ的值,才能得到合适的参数α、γ值。 

6.2 HBA混合蝙蝠算法优化算法寻找的最优参数

关键代码:

Python实现HBA混合蝙蝠智能算法优化支持向量机分类模型(SVC算法)项目实战_第12张图片

每次迭代的过程数据:

Python实现HBA混合蝙蝠智能算法优化支持向量机分类模型(SVC算法)项目实战_第13张图片 通过上图可以看出,每次迭代蝙蝠的位置数据。

最优参数:

6.3 最优参数值构建模型

7.模型评估

7.1评估指标及结果

评估指标主要包括准确率、查准率、查全率、F1分值等等。

Python实现HBA混合蝙蝠智能算法优化支持向量机分类模型(SVC算法)项目实战_第14张图片

从上表可以看出,F1分值为0.9154,说明模型效果比较好。

关键代码如下:

Python实现HBA混合蝙蝠智能算法优化支持向量机分类模型(SVC算法)项目实战_第15张图片

7.2 查看是否过拟合

 

从上图可以看出,训练集和测试集分值相当,无过拟合现象。

7.3 分类报告

Python实现HBA混合蝙蝠智能算法优化支持向量机分类模型(SVC算法)项目实战_第16张图片

从上图可以看出,分类为0的F1分值为0.91;分类为1的F1分值为0.92。

7.4 混淆矩阵

Python实现HBA混合蝙蝠智能算法优化支持向量机分类模型(SVC算法)项目实战_第17张图片

从上图可以看出,实际为0预测不为0的 有13个样本;实际为1预测不为1的 有4个样本,整体预测准确率良好。

8.结论与展望

综上所述,本文采用了HBA混合蝙蝠智能优化算法寻找支持向量机SVC算法的最优参数值来构建分类模型,最终证明了我们提出的模型效果良好。此模型可用于日常产品的预测。

本次机器学习项目实战所需的资料,项目资源如下:

项目说明:
链接:https://pan.baidu.com/s/1c6mQ_1YaDINFEttQymp2UQ 
提取码:thgk

你可能感兴趣的:(机器学习,python,HBA混合蝙蝠智能算法,支持向量机分类模型,SVC算法,SVM支持向量机分类模型,机器学习项目实战)