NCA feature selection method

조회 수: 14 (최근 30일)
Alaa Almazroey
Alaa Almazroey 2019년 9월 11일
댓글: Alexis 2020년 9월 29일
i tried to use NCA feature selection method to select the most relitive features from 16483 features, but i always got all features because the bestlambda and bestloss are always 0. how can work in this problem.
another question how can i set the lambdavals, is there a rule or something for linspace () parameter? as well how can i select the best value for 'tol' ?
cvx=cvpartition(size(Features,1),'kfold',5);
numvalidsets = cvx.NumTestSets;
n = cvx.TrainSize(1);
lambdavals=(linspace(0,20,20)./n;
lossvals = zeros(length(lambdavals),numvalidsets);
for w = 1:length(lambdavals)
for p =1:numvalidsets
train=1;
test=1;
indextrain=training(cvx,p);
for i=1:size(Features,1)
if indextrain(i)==1
XTrain(train,:)=Features(i,:);
YTrain(train)=label(i);
train=train+1;
else
XTest(test,:)=Features(i,:);
YTest(test)=label(i);
test=test+1;
end
end
TrainData= XTrain,YTrain;
TestData =XTest,YTest;
nca = fscnca(XTrain,YTrain,'FitMethod','exact', ...
'Solver','sgd','Lambda',lambdavals(w), ...
'IterationLimit',1,'Standardize',true);
lossvals(w,p) = loss(nca,XTest,YTest,'LossFunction','classiferror');
end
end
%%
meanloss = mean(lossvals,2);
[~,idx] = min(meanloss) % Find the index
bestlambda = lambdavals(idx) % Find the best lambda value
bestloss = meanloss(idx)
nca = fscnca(XTrain,YTrain,'FitMethod','exact','Solver','sgd',...
'Lambda',bestlambda,'Standardize',true,'Verbose',1);
tol = 0.55;
selidx = find(nca.FeatureWeights > tol*max(1,max(nca.FeatureWeights)))
Best_Features_train = XTrain(:,selidx);
  댓글 수: 1
Alexis
Alexis 2020년 9월 29일
I have this same problem. Without an error message or warning it's not clear to me where to start. I have 14 features and over 5,000 observations.

댓글을 달려면 로그인하십시오.

답변 (0개)

카테고리

Help CenterFile Exchange에서 Fit Postprocessing에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by