一、源代码
tic % 计时器
%% 清空环境变量
close all
clear
clc
%format compact
load('ISSL-Isomap.mat')
%load CMPE原始
%mappedX=X;
%% 数据提取
zc=mappedX(1:60,:);
%特征输入
lie=mappedX(61:120,:);
mo=mappedX(121:180,:);
que=mappedX(181:240,:);
duan=mappedX(241:300,:);
mm=size(zc,1);
nn=20;
a=ones(mm,1);
%行为总体样本数
b=2*ones(mm,1);
c=3*ones(mm,1);
d=4*ones(mm,1);
f=5*ones(mm,1);
n1=randperm(size(zc,1));
n2=randperm(size(lie,1));
n3=randperm(size(mo,1));
n4=randperm(size(que,1));
n5=randperm(size(duan,1));
train_wine = [zc(n1(1:nn),:);
lie(n2(1:nn),:);
mo(n3(1:nn),:);
que(n4(1:nn),:);
duan(n5(1:nn),:)];
% 相应的训练集的标签也要分离出来
train_wine_labels = [a(1:nn,:);
b(1:nn,:);
c(1:nn,:);
d(1:nn,:);
f(1:nn,:)];
% 将第一类的31-59,第二类的96-130,第三类的154-178做为测试集
test_wine = [zc(n1((nn+1):mm),:);
lie(n2((nn+1):mm),:);
mo(n3((nn+1):mm),:);
que(n4((nn+1):mm),:);
duan(n5((nn+1):mm),:)];
% 相应的测试集的标签也要分离出来
test_wine_labels = [a((nn+1):mm,:);
b((nn+1):mm,:);
c((nn+1):mm,:);
d((nn+1):mm,:);
f((nn+1):mm,:)];
%% 数据预处理
% 数据预处理,将训练集和测试集归一化到[0,1]区间
[mtrain,ntrain] = size(train_wine);
[mtest,ntest] = size(test_wine);
dataset = [train_wine;
test_wine];
% mapminmax为MATLAB自带的归一化函数
[dataset_scale,ps] = mapminmax(dataset',0,1);
dataset_scale = dataset_scale';
train_wine = dataset_scale(1:mtrain,:);
test_wine = dataset_scale( (mtrain+1):(mtrain+mtest),: );
%% Default parameters 默认参数
n=10;
% Population size, typically10 to 40
N_gen=150;
% Number of generations
A=0.5;
% Loudness(constant or decreasing)
r=0.5;
% Pulse rate (constant or decreasing)
% This frequency range determines the scalings
% You should change these values if necessary
Qmin=0;
% Frequency minimum
Qmax=2;
% Frequency maximum
% Iteration parameters
N_iter=0;
% Total number of function evaluations%这是什么意思???
% Dimension of the search variables
d=2;
% Number of dimensions
% Lower limit/bounds/ a vector
Lb=[0.01,0.01];
% 参数取值下界
Ub=[100,100];
% 参数取值上界
% Initializing arrays
Q=zeros(n,1);
% Frequency
v=zeros(n,d);
% Velocities
% Initialize the population/solutions
% Output/display
disp(['Number of evaluations: ',num2str(N_iter)]);
disp(['Best =',num2str(best),' fmin=',num2str(fmin)]);
%% 利用最佳的参数进行SVM网络训练
cmd_gwosvm = ['-c ',num2str(best(:,1)),' -g ',num2str(best(:,2))];
model_gwosvm = svmtrain(train_wine_labels,train_wine,cmd_gwosvm);
%% SVM网络预测
[predict_label] = svmpredict(test_wine_labels,test_wine,model_gwosvm);
total = length(test_wine_labels);
% 打印测试集分类准确率
right = length(find(predict_label == test_wine_labels));
Accuracy=right/total;
% disp('打印测试集分类准确率');
% str = sprintf( 'Accuracy = %g%% (%d/%d)',accuracy(1),right,total);
% disp(str);
%% 结果分析
% 测试集的实际分类和预测分类图
figure;
hold on;
plot(test_wine_labels,'o');
plot(predict_label,'r*');
xlabel('测试集样本','FontSize',12);
ylabel('类别标签','FontSize',12);
legend('实际测试集分类','预测测试集分类');
title('测试集的实际分类和预测分类图','FontSize',12);
grid on
snapnow
figure
plot(1:N_gen,AAA);
二、运行结果
文章图片
三、备注 【matlab|【SVM预测】基于matlab蝙蝠算法之改进的SVM预测(二)【含Matlab源码 141期】】完整代码或者代写添加QQ2449341593
往期回顾>>>>>>
【lssvm预测】基于鲸鱼优化算法的lssvm数据预测matlab源码【Matlab 104期】【预测模型2】
【lstm预测】基于鲸鱼优化算法改进的lstm预测matlab源码【Matlab 105期】【预测模型3】
【SVM预测】灰狼算法优化svm支持向量机预测matlab源码【Matlab 107期】【预测模型5】
BP神经网络的预测【Matlab 108期】【预测模型6】
【lssvm预测模型】基于蝙蝠算法改进的最小二乘支持向量机lssvm预测【Matlab 109期】【预测模型7】
推荐阅读
- matlab|【路径规划】遗传算法之考虑分配次序的多无人机协同目标分配建模【Matlab 021期】
- #|基于改进的蚂蚁群算法求解最短路径问题、二次分配问题、背包问题【Matlab&Python代码实现】
- #|基于企鹅优化算法的机器人轨迹规划(Matlab代码实现)
- #|无线电信号调制【小波去噪】(Matlab&Python代码实现)
- #|基于粒子群算法的电力系统无功优化研究(IEEE14节点)(Matlab代码实现)
- MATLAB学习笔记|Matlab导入数据(一定有用!!)
- #|帝国竞争算法(ICA)(Matlab代码实现)
- 动态多目标|动态多目标优化算法(MOEA/D-FD求解FDA1、FDA2、FDA3、FDA4和FDA5(Matlab代码))
- #|智能电网中需求响应研究(Matlab代码实现)