can reliefF() function deal with NaNs in my matrix?

1 visualizzazione (ultimi 30 giorni)
Hello,
I have an (n*m double) matrix, where n (rows) is the number of my samples and m (columns) is the number of my features, which are all discrete (i.e. categorical). The mth column in the data represents my binary outcome. I have tried using relieff() function to return the importance of my predictor features based on my outcome feature.
This is what my data looks like (let's say for simplicity's sake: I have 4 predictor and 1 outcome feature for 3 samples):
matrixdata = [1, 2, 3, NaN, 2; 5, 1, NaN, 2, 1; NaN, 3, NaN, 2, 1];
This is how I call the relieff() on my data:
X = matrixdata(:,1:(end-1));
Ylogical = matrixdata(:,end)== 1;
[ranked,weights] = relieff(X,Ylogical,10, 'categoricalx', 'on');
In this case, does relieff() disregard the NaNs in the data or does it treat NaNs as a separate category of that predictor feature column? Obviously, the former is what I would prefer.
Many thanks, Berkan

Risposta accettata

Wayne King
Wayne King il 4 Mar 2012
Hi Berkan, relieff() removes NaNs in both your predictor and response variables. So your preference is the way it is implemented.

Più risposte (1)

Berkan Sesen
Berkan Sesen il 5 Mar 2012
Hi, apparently the reliefF function has a sub function removeNaNs(X,Y) as below:
function [X,Y] = removeNaNs(X,Y)
% Remove observations with missing data
NaNidx = bsxfun(@or,isnan(Y),any(isnan(X),2));
X(NaNidx,:) = [];
Y(NaNidx,:) = [];
This effectively gets rid of all rows that contain any NaNs and is not ideal, especially for my case, since it leaves me with X=[] and Y=[] (i.e. no observations!)
How can I tackle this? Would replacing all NaN's with a random category, e.g. 99999, help? By doing this, I am introducing a new node state for all the predictor features so I guess it is not ideal.
Thanks, Berkan

Categorie

Scopri di più su Data Distribution Plots in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by