%% Whale Optimization Algorithm (FOA_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
%% FOA参数
%% 划分数据集
HO = cvpartition(label,'HoldOut',ho);
opts.Model = HO;
%% 返回选取的特征
FS = jfs('foasvm',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('FOASVM');
%% 绘制 ROC 曲线
figure
plot(PX, PY, '-');
xlabel('False Positive Rate (FP / N)');
ylabel('True Positive Rate (TP / P)');
title(['ROC Curve (AUC = ', num2str(Auc), ')']);
%% 输出运行时间
time = toc;
fprintf('\n测试时间 %f',time)
%% 输出准确率
fprintf('\n FOASVM训练集准确率平均值: %g %% ',100 *mean(train_acc));
fprintf('\n FOASVM测试集准确率平均值: %g %%',100 *mean(test_acc));
%% 输出筛选特征个数 最差 最好 平均 方差
fprintf('\n FOASVM选择特征的最多个数: %d ',max(bf_num));
fprintf('\n FOASVMFOA选择特征的最少个数: %d ',min(bf_num));
fprintf('\n FOASVM选择特征的平均个数: %d ',mean(bf_num));
fprintf('\n FOASVM选择特征的方差个数: %d \n', std(bf_num));
%% 统计每个特征被选择的次数
for d = 1:size(feat,2)
% 使用逻辑索引统计整数出现的次数
count = sum(s_idx(:)== d);
disp(['特征 ', num2str(d), ' 出现的次数为:', num2str(count)]);
end
机器不会学习CL
- 粉丝: 2713
- 资源: 71
最新资源
- OPPO-A72-安卓12-twrp
- Comsol三维锂离子叠片电池电化学-热全耦合模型 采用COMSOL锂离子电池模块耦合传热模块,仿真模拟锂离子电池在充放电过程中
- OPPO-A72-安卓10-TWRP
- 固体氧化物电解槽制氢模型,SOCE模型,制氢模型 SCIlunwen复现 可附参考文献
- OPPO-Reno4SE-安卓12-TWRP
- comsol复杂多裂缝流固耦合三轴实验模型
- comsol多孔介质流固耦合案例,孔压、位移时空演化特征
- COMSOL注浆模拟 浆液注入存在微裂隙土体,是排出空气或水分的过程,同时考虑浆-水两相以及固体的变形过程,实现灌入浆液与裂
- YANYU ITX-K68 Ver 1.1 (英特尔NM70芯片组) BIOS CPU:I53317U@1.70GHz双核四线程
- EEMD-FFT-HHT信号处理 集合经验模态分解 傅里叶变化 希尔伯特黄变化eemd–fft–hht信号处理 由于用的是202
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈