"Toward Talent Scientist: Sharing and Learning Together" --- Jingwei Too
-
This toolbox offers more than 40 wrapper feature selection methods
-
The
A_Mainfile provides the examples of how to apply these methods on benchmark dataset -
Source code of these methods are written based on pseudocode & paper
-
Main goals of this toolbox are:
- Knowledge sharing on wrapper feature selection
- Assists others in data mining projects
The main function jfs is adopted to perform feature selection. You may switch the algorithm by changing the 'pso' to other abbreviations
- If you wish to use particle swarm optimization ( see example 1 ) then you may write
FS = jfs('pso',feat,label,opts);
- If you want to use slime mould algorithm ( see example 2 ) then you may write
FS = jfs('sma',feat,label,opts);
feat: feature vector matrix ( Instance x Features )label: label matrix ( Instance x 1 )opts: parameter settingsN: number of solutions / population size ( for all methods )T: maximum number of iterations ( for all methods )k: k-value in k-nearest neighbor
Acc: accuracy of validation modelFS: feature selection model ( It contains several results )sf: index of selected featuresff: selected featuresnf: number of selected featuresc: convergence curvet: computational time (s)
Some methods have their specific parameters ( example: PSO, GA, DE ), and if you do not set them then they will be defined as default settings
- you may open the m.file to view or change the parameters
- you may use
optsto set the parameters of method ( see example 1 or refer here ) - you may also change the fitness function in
jFitnessFunctionfile
% Common parameter settings
opts.k = 5; % Number of k in K-nearest neighbor
opts.N = 10; % number of solutions
opts.T = 100; % maximum number of iterations
% Parameters of PSO
opts.c1 = 2;
opts.c2 = 2;
opts.w = 0.9;
% Load dataset
load ionosphere.mat;
% Ratio of validation data
ho = 0.2;
% Divide data into training and validation sets
HO = cvpartition(label,'HoldOut',ho);
opts.Model = HO;
% Perform feature selection
FS = jfs('pso',feat,label,opts);
% Define index of selected features
sf_idx = FS.sf;
% Accuracy
Acc = jknn(feat(:,sf_idx),label,opts);
% Plot convergence
plot(FS.c); grid on;
xlabel('Number of Iterations');
ylabel('Fitness Value');
title('PSO');
% Common parameter settings
opts.k = 5; % Number of k in K-nearest neighbor
opts.N = 10; % number of solutions
opts.T = 100; % maximum number of iterations
% Load dataset
load ionosphere.mat;
% Ratio of validation data
ho = 0.2;
% Divide data into training and validation sets
HO = cvpartition(label,'HoldOut',ho);
opts.Model = HO;
% Perform feature selection
FS = jfs('sma',feat,label,opts);
% Define index of selected features
sf_idx = FS.sf;
% Accuracy
Acc = jknn(feat(:,sf_idx),label,opts);
% Plot convergence
plot(FS.c); grid on;
xlabel('Number of Iterations');
ylabel('Fitness Value');
title('SMA');
% Common parameter settings
opts.k = 5; % Number of k in K-nearest neighbor
opts.N = 10; % number of solutions
opts.T = 100; % maximum number of iterations
% Parameter of WOA
opts.b = 1;
% Load dataset
load ionosphere.mat;
% Ratio of validation data
ho = 0.2;
% Divide data into training and validation sets
HO = cvpartition(label,'HoldOut',ho);
opts.Model = HO;
% Perform feature selection
FS = jfs('woa',feat,label,opts);
% Define index of selected features
sf_idx = FS.sf;
% Accuracy
Acc = jknn(feat(:,sf_idx),label,opts);
% Plot convergence
plot(FS.c); grid on;
xlabel('Number of Iterations');
ylabel('Fitness Value');
title('WOA');
- MATLAB 2014 or above
- Statistics and Machine Learning Toolbox
- Note that the methods are altered so that they can be used in feature selection tasks
- The extra parameters represent the parameter(s) other than population size and maximum number of iterations
- Click on the name of method to view the extra parameter(s)
- Use the
optsto set the specific parameter(s)
| No. | Abbreviation | Name | Year | Extra Parameters |
|---|---|---|---|---|
| 43 | 'mpa' |
Marine Predators Algorithm | 2020 | Yes |
| 42 | 'gndo' |
Generalized Normal Distribution Optimization | 2020 | No |
| 41 | 'sma' |
Slime Mould Algorithm | 2020 | No |
| 40 | 'mrfo' |
Manta Ray Foraging Optimization | 2020 | Yes |
| 39 | 'eo' |
Equilibrium Optimizer | 2020 | Yes |
| 38 | 'aso' |
Atom Search Optimization | 2019 | Yes |
| 37 | 'hgso' |
Henry Gas Solubility Optimization | 2019 | Yes |
| 36 | 'hho' |
Harris Hawks Optimization | 2019 | No |
| 35 | 'pfa' |
Path Finder Algorithm | 2019 | No |
| 34 | 'pro' |
Poor And Rich Optimization | 2019 | Yes |
| 33 | 'boa' |
Butterfly Optimization Algorithm | 2018 | Yes |
| 32 | 'epo' |
Emperor Penguin Optimizer | 2018 | Yes |
| 31 | 'tga' |
Tree Growth Algorithm | 2018 | Yes |
| 30 | 'abo' |
Artificial Butterfly Optimization | 2017 | Yes |
| 29 | 'ssa' |
Salp Swarm Algorithm | 2017 | No |
| 28 | 'wsa' |
Weighted Superposition Attraction | 2017 | Yes |
| 27 | 'sbo' |
Satin Bower Bird Optimization | 2017 | Yes |
| 26 | 'ja' |
Jaya Algorithm | 2016 | No |
| 25 | 'csa' |
Crow Search Algorithm | 2016 | Yes |
| 24 | 'sca' |
Sine Cosine Algorithm | 2016 | Yes |
| 23 | 'woa' |
Whale Optimization Algorithm | 2016 | Yes |
| 22 | 'alo' |
Ant Lion Optimizer | 2015 | No |
| 21 | 'hlo' |
Human Learning Optimization | 2015 | Yes |
| 20 | 'mbo' |
Monarch Butterfly Optimization | 2015 | Yes |
| 19 | 'mfo' |
Moth Flame Optimization | 2015 | Yes |
| 18 | 'mvo' |
Multiverse Optimizer | 2015 | Yes |
| 17 | 'tsa' |
Tree Seed Algorithm | 2015 | Yes |
| 16 | 'gwo' |
Grey Wolf Optimizer | 2014 | No |
| 15 | 'sos' |
Symbiotic Organisms Search | 2014 | No |
| 14 | 'fpa' |
Flower Pollination Algorithm | 2012 | Yes |
| 13 | 'foa' |
Fruitfly Optimization Algorithm | 2012 | No |
| 12 | 'ba' |
Bat Algorithm | 2010 | Yes |
| 11 | 'fa' |
Firefly Algorithm | 2010 | Yes |
| 10 | 'cs' |
Cuckoo Search Algorithm | 2009 | Yes |
| 09 | 'gsa' |
Gravitational Search Algorithm | 2009 | Yes |
| 08 | 'abc' |
Artificial Bee Colony | 2007 | Yes |
| 07 | 'hs' |
Harmony Search | - | Yes |
| 06 | 'de' |
Differential Evolution | 1997 | Yes |
| 05 | 'aco' |
Ant Colony Optimization | - | Yes |
| 04 | 'acs' |
Ant Colony System | - | Yes |
| 03 | 'pso' |
Particle Swarm Optimization | 1995 | Yes |
| 02 | 'ga'/'gat' |
Genetic Algorithm | - | Yes |
| 01 | 'sa' |
Simulated Annealing | - | Yes |