资源简介
逐行代码注释简单易懂,带其他资源缺的那个目标函数的设计,没错就是你找的那个,当时我也找了好久

代码片段和文件信息
tic % 计时器
%% 清空环境,准备数据
close all
clear
clc
format compact
% 载入测试数据wine其中包含的数据类别数为3;wine:178*13的矩阵wine_labes:178*1的列向量
load wine
% 选定训练集和测试集
% 将第一类的1-30第二类的60-95第三类的131-153做为训练集
train_wine = [wine(1:30:);wine(60:95:);wine(131:153:)];
% 相应的训练集的标签也要分离出来
train_wine_labels = [wine_labels(1:30);wine_labels(60:95);wine_labels(131:153)];
% 将第一类的31-59第二类的96-130第三类的154-178做为测试集
test_wine = [wine(31:59:);wine(96:130:);wine(154:178:)];
% 相应的测试集的标签也要分离出来
test_wine_labels = [wine_labels(31:59);wine_labels(96:130);wine_labels(154:178)];
% 数据预处理
% 数据预处理将训练集和测试集归一化到[01]区间
[mtrainntrain] = size(train_wine);
[mtestntest] = size(test_wine);
dataset = [train_wine;test_wine];
[dataset_scaleps] = mapminmax(dataset‘01);
dataset_scale = dataset_scale‘;
train_wine = dataset_scale(1:mtrain:);
test_wine = dataset_scale( (mtrain+1):(mtrain+mtest): );
%% %%%%%%%%%%%%%用ABC算法优化SVM中的参数c和g开始%%%%%%%%%%%%%%%%%%%%
%% 参数初始化
NP=20; % 蜂群规模
FoodNumber=NP/2; % 蜜源(解)数量
limit=100; % 当有蜜源连续没被更新的次数超过limit时,该蜜源将被重新初始化
maxCycle=10; % 最大迭代次数
% 待优化参数信息
D=2; % 待优化参数个数,次数为c和g两个
ub=ones(1D)*100; % 参数取值上界,此处将c和g的上界设为100
lb=ones(1D)*(0.01); % 参数取值下界,此处将c和g的下界设为0.01
runtime=2; % 可用于设置多次运行(让ABC算法运行runtime次)以考察程序的稳健性
BestGlobalMins=ones(1runtime); % 全局最小值初始化,这里的优化目标为SVM预测结果中的平均平方误差(MSE),初始化为最差值1
BestGlobalParams=zeros(runtimeD); % 用于存放ABC算法优化得到的最优参数
for r=1:runtime % 运行ABC算法runtime次
% 初始化蜜源
Range = repmat((ub-lb)[FoodNumber 1]);
Lower = repmat(lb [FoodNumber 1]);
Foods = rand(FoodNumberD) .* Range + Lower;
% 计算每个蜜源(解)得目标函数值,objfun为计算SVM预测的平均平方误差(MSE)的函数,根据自己的实际问题变异目标函数即可
ObjVal=ones(1FoodNumber);
for k = 1:FoodNumber
ObjVal(k) = objfun(Foods(k:)train_wine_labelstrain_winetest_wine_labelstest_wine);
end
Fitness=calculateFitness(ObjVal); % 计算适应度函数值
trial=zeros(1FoodNumber); % 用于记录第i个蜜源有连续trail(i)次没被更新过
% 标记最优蜜源(解)
BestInd=find(ObjVal==min(ObjVal));
BestInd=BestInd(end);
GlobalMin=ObjVal(BestInd); % 更新全局最优目标函数值
GlobalParams=Foods(BestInd:); % 更新全局最优参数为最优蜜源
iter=1; % 迭代开始
while ((iter <= maxCycle)) % 循环条件
%%%%%%%%%%%%%%%%%%%%%引领蜂搜索解的过程%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for i=1:(FoodNumber) % 遍历每个蜜源(解)
Param2Change=fix(rand*D)+1; % 随机选择需要变异的参数
neighbour=fix(rand*(FoodNumber))+1; % 随机选择相邻蜜源(解)以准备变异
% 需要保证选择的相邻蜜源不是当前蜜源(i)
while(neighbour==i)
neighbour=fix(rand*(FoodNumber))+1;
end
sol=Foods(i:); % 提取当前蜜源(解)对应的的参数
% 参数变异得到新的蜜源:v_{ij}=x_{ij}+\phi_{ij}*(x_{kj}-x_{ij})
sol(Param2Change)=Foods(iParam2Change)+(Foods(iParam2Change)-Foods(neighbourParam2Change))*(rand-0.5)*2;
% 确保参数取值范围不越界
ind=find(sol
sol(ind)=lb(ind);
ind=find(sol>ub);
sol(ind)=ub(ind);
% 计算变异后蜜源的目标函数值和适应度函数值
ObjValSol=objfun(sol
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-02-27 23:46 2016.09.04ABC-SVM\
文件 8168 2016-09-04 17:10 2016.09.04ABC-SVM\ABC_SVM_exmp.m
文件 7867 2016-09-04 17:10 2016.09.04ABC-SVM\ABC_SVR_exmp.m
文件 182 2008-06-09 19:54 2016.09.04ABC-SVM\calculateFitness.m
文件 430 2016-09-04 16:56 2016.09.04ABC-SVM\fobj.m
文件 70 2016-09-04 10:55 2016.09.04ABC-SVM\mymae.m
文件 85 2016-09-04 10:55 2016.09.04ABC-SVM\mymape.m
文件 74 2016-09-04 10:55 2016.09.04ABC-SVM\mymse.m
文件 407 2018-02-28 11:05 2016.09.04ABC-SVM\objfun.m
文件 20168 2016-09-04 09:25 2016.09.04ABC-SVM\wine.mat
文件 447 2016-09-04 10:41 2016.09.04ABC-SVM\wndspd.mat
相关资源
- 自定义的TabCtrl控件实现
- 基于蚁群算法优化SVM的瓦斯涌出量预
- 基于模糊聚类和SVM的瓦斯涌出量预测
- 基于CAN总线与ZigBee的瓦斯实时监测及
- ABC Amber CHM Converter 7.37破解版
- SVM-Light资料,使用说明
- 果蝇算法融合SVM的开采沉陷预测模型
- BoW|Pyramid BoW+SVM进行图像分类
- 基于libsvm的图像分割代码
- 基于SVM及两类运动想象的多通道特征
- 小波包和SVM在轴承故障识别中的应用
- 林智仁教授最新版本LibSVM工具箱
- 台湾林教授的支持向量机libsvm
- 新闻分类语料
- 凤凰ABC 2008 Beta3 破解版
- libsvm-3.20
- 7种支持向量机SVM工具包
- A Practical Guide to Support Vector Classifica
- libSVM的代码详细解析,注释非常详细
- 台湾林志恒的LIBSVM的中文简体说明文
- 凤凰ABC1.9破解版.rar
- 凤凰ABC3.9
- SVM算法-回归拟合程序.zip
- 基于Grid-Search_PSO优化SVM回归预测矿井
- 新冒落带高度算法FOA-SVM预计模型
- TabControl用法图解VS2010
- 官方最新版本libsvm-3.23
- 基于PCA和SVM的个性化睡眠分期研究
- 2020年美赛ABCDEF赛题特等奖论文合辑,
- 2019美赛ABCDEF题题目附C题数据
评论
共有 条评论