分类预测 | Matlab实现BES-RF秃鹰搜索算法优化随机森林多特征分类预测
目录
- 分类预测 | Matlab实现BES-RF秃鹰搜索算法优化随机森林多特征分类预测
- 效果一览
- 基本介绍
- 程序设计
- 参考资料
效果一览
基本介绍
1.Matlab实现BES-RF秃鹰搜索算法优化随机森林多特征分类预测,二分类及多分类预测,显示模型迭代误差、预测和真实对比、混淆矩阵图,运行环境Matlab2018b及以上;
2.秃鹰搜索算法优化随机森林树木棵树和森林深度,输入12个特征,分四类,可视化展示分类准确率,模型对比输出,可在下载区获取数据和程序内容。
3.excel数据集,main为主程序,其他为函数文件,无需运行。
注:程序和数据放在一个文件夹。
程序设计
- 完整程序和数据下载私信博主回复Matlab实现BES-RF秃鹰搜索算法优化随机森林多特征分类预测
%% 清空环境变量
warning off % 关闭报警信息
close all % 关闭开启的图窗
clear % 清空变量
clc % 清空命令行
%% 读取数据
res = xlsread('数据集.xlsx');
%% 划分训练集和测试集%
P_train = res(1: 260, 1: 12)';
T_train = res(1: 260, 13)';
M = size(P_train, 2);
P_test = res(261: end, 1: 12)';
T_test = res(261: end, 13)';
N = size(P_test, 2);
f_ = size(P_train, 1); % 特征维度
num_class = length(unique(res(:, end))); % 类别数(Excel最后一列放类别)
%% 数据转置
% P_train = P_train'; P_test = P_test';
% T_train = T_train'; T_test = T_test';
%% 数据归一化
[p_train, ps_input] = mapminmax(P_train, 0, 1);
p_test = mapminmax('apply', P_test, ps_input );
t_train = T_train;
t_test = T_test ;
%% 转置以适应模型
p_train = p_train'; p_test = p_test';
t_train = t_train'; t_test = t_test';
%% 参数初始化
pop=6; %种群数量
Max_iter=20; % 设定最大迭代次数
dim = 2;% 维度为2,即优化两个超参数
lb = [1,1];%下边界
ub = [10,f_];%上边界
fobj = @(x) fun(x, p_train, t_train);
[Best_pos,curve,~]=BES(pop,Max_iter,lb,ub,dim,fobj); %开始优化
%% 提取最优参数
n_trees = round(Best_pos.pos(1));
n_layer = round(Best_pos.pos(2));
%% 创建模型
model = classRF_train(p_train, t_train, n_trees, n_layer);
importance = model.importance; % 特征的重要性