%% Whale Optimization Algorithm (JAYA_SVM)
clear, clc, close;
%% 读取数据
res = xlsread('data.xls');
feat = res(1:end,1:21);
label =res(1:end,22);
%% 设置迭代次数
test_num = 5;
%% 设置接收准确率的数组
train_acc=zeros(1,test_num);
test_acc=zeros(1,test_num);
%% 设置接收适应度的数组
value_fit = rand(test_num,100);
%% 设置接收选择最佳子集的索引的数组
s_idx = zeros(test_num,test_num);
%% 设置接收选择最佳子集个数
bf_num=zeros(1,test_num);
tic
for i =1:test_num
fprintf('\n 这是第%d次测试',i);
%% SVM超参数参数
opts.c = 4.0;
opts.g = 0.8;
%% 验证集比例
ho = 0.2;
%% 公共参数
opts.N = 30; % number of solutions %种群数
opts.T = 100; % maximum number of iterations
%% JAYA参数
%% 划分数据集
HO = cvpartition(label,'HoldOut',ho);
opts.Model = HO;
%% 返回选取的特征
FS = jfs('jayasvm',feat,label,opts);
%% 返回特征索引
sf_idx = FS.sf;
s_idx(i,1:length(sf_idx)) = sf_idx;
%% 返回最佳子集个数
bf_num(i) = FS.nf;
%% 计算准确率
[train_Acc, test_Acc, PX, PY, Auc] = jknn(feat(:,sf_idx),label,opts);
train_acc(i) = train_Acc;
test_acc(i) = test_Acc;
%% 适应度值
value_fit(i,:)=FS.s;
end
%% 绘制图像
figure
plot(FS.s); grid on;
xlabel('Number of Iterations');
ylabel('Fitness Value');
title('JAYASVM');
%% 绘制 ROC 曲线
figure
plot(PX, PY, '-');
xlabel('JAYAlse Positive Rate (FP / N)');
ylabel('True Positive Rate (TP / P)');
title(['ROC Curve (AUC = ', num2str(Auc), ')']);
%% 输出运行时间
time = toc;
fprintf('\n测试时间 %f',time)
%% 输出准确率
fprintf('\n JAYASVM训练集准确率平均值: %g %% ',100 *mean(train_acc));
fprintf('\n JAYASVM测试集准确率平均值: %g %%',100 *mean(test_acc));
%% 输出筛选特征个数 最差 最好 平均 方差
fprintf('\n JAYASVM选择特征的最多个数: %d ',max(bf_num));
fprintf('\n JAYASVM选择特征的最少个数: %d ',min(bf_num));
fprintf('\n JAYASVM选择特征的平均个数: %d ',mean(bf_num));
fprintf('\n JAYASVM选择特征的方差个数: %d \n', std(bf_num));
%% 统计每个特征被选择的次数
for d = 1:size(feat,2)
% 使用逻辑索引统计整数出现的次数
count = sum(s_idx(:)== d);
disp(['特征 ', num2str(d), ' 出现的次数为:', num2str(count)]);
end
机器不会学习CL
- 粉丝: 2772
- 资源: 71
最新资源
- 基于Python和Shell的文本识别工程管理设计源码
- 基于SpringBoot的Netty集成与实战设计源码
- 基于Java、JavaScript、HTML和CSS的完整拍卖系统教学设计源码
- 基于Python的pip_shop资源共享网站设计源码
- 线性参变(LPV)+鲁棒模型预测控制(RMPC)+路径跟踪(PTC),目前能实现20-25m s的变速单移线和10-15m s的
- 基于Java和JavaScript的AICloud社区交流平台设计源码
- 多智能体系统分布式一致性(新添加事件触发) 共5个仿真代码及对应文献参考学习 1分布式有限时间异质多智能体系统一致性 2
- SIEMENS 西门子西门子PLC S1500宁德时代电池线程序,大量SCL编写 程序都有注释、非常适合用来学习西门子S150
- 基于Java语言的DataX异构数据源离线同步工具设计源码
- 基于Java语言的并发编程核心设计与实践源码分析
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈