Feature selection for svm classifier

hi
i have a training data , size 380 x 88 ( 380 is the number of samples and 88 the number of features)
and its class matrix is a 380 x 1 (class -1 and class +1)
how i can selecting its best features for svm classifier ?
thank you ♥

Answers (1)

For SVM, Sequential Feature Selection is a suitable feature selection method because it recursively adds the most important features based on the weights assigned by the Machine Learning model (SVM). These weights inherently capture the interactions between features effectively, thus using them for feature selection helps identify the most significant features.
You can use the sequentialfs function in MATLAB to implement it as shown below:
% Sample data
X = randn(380, 88); % 380 samples, 88 features
y = randi([0, 1], 380, 1) * 2 - 1; % Class labels -1 and +1
cv = cvpartition(y,"KFold",10);
myFunHandle = @(XTrain,yTrain,XTest,yTest) ...
loss(fitcsvm(XTrain,yTrain),XTest,yTest)*size(XTest,1);
% Perform sequential feature selection
opts = statset('display', 'iter'); % Display iteration information
[selectedFeatures, history] = sequentialfs(myFunHandle, X, y, 'CV',cv,'options', opts);
% Display selected features
disp('Selected Features:');
disp(find(selectedFeatures));
The function uses a custom criterion function (SVM model here) to select the features.Refer to the following documentation to read about the sequentialfs function:
After the features are selected, the final training set can be constituted using them and train a SVM model.

Categories

Find more on Statistics and Machine Learning Toolbox in Help Center and File Exchange

Asked:

on 22 Jan 2020

Answered:

on 29 Aug 2024

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!