diff options
Diffstat (limited to 'FEAST/MIToolbox/demonstration_algorithms/mRMR_D.m')
-rw-r--r-- | FEAST/MIToolbox/demonstration_algorithms/mRMR_D.m | 69 |
1 files changed, 0 insertions, 69 deletions
diff --git a/FEAST/MIToolbox/demonstration_algorithms/mRMR_D.m b/FEAST/MIToolbox/demonstration_algorithms/mRMR_D.m deleted file mode 100644 index 50b14bc..0000000 --- a/FEAST/MIToolbox/demonstration_algorithms/mRMR_D.m +++ /dev/null @@ -1,69 +0,0 @@ -function selectedFeatures = mRMR_D(k, featureMatrix, classColumn) -%function selectedFeatures = mRMR_D(k, featureMatrix, classColumn) -% -%Selects optimal features according to the mRMR-D algorithm from -%"Feature Selection Based on Mutual Information: Criteria of Max-Dependency, Max-Relevance, and Min-Redundancy" -%by H. Peng et al. (2005) -% -%Calculates the top k features -%a dataset featureMatrix with n training examples and m features -%with the classes held in classColumn (an n x 1 vector) - -noOfTraining = size(classColumn,1); -noOfFeatures = size(featureMatrix,2); -unselectedFeatures = ones(noOfFeatures,1); - -classMI = zeros(noOfFeatures,1); -answerFeatures = zeros(k,1); -highestMI = 0; -highestMICounter = 0; -currentHighestFeature = 0; - -featureMIMatrix = -(ones(k,noOfFeatures)); - -%setup the mi against the class -for n = 1 : noOfFeatures - classMI(n) = mi(featureMatrix(:,n),classColumn); - if classMI(n) > highestMI - highestMI = classMI(n); - highestMICounter = n; - end -end - -answerFeatures(1) = highestMICounter; -unselectedFeatures(highestMICounter) = 0; - -%iterate over the number of features to select -for i = 2:k - score = -100; - currentHighestFeature = 0; - iMinus = i-1; - for j = 1 : noOfFeatures - if unselectedFeatures(j) == 1 - currentMIScore = 0; - for m = 1 : iMinus - if featureMIMatrix(m,j) == -1 - featureMIMatrix(m,j) = mi(featureMatrix(:,j),featureMatrix(:,answerFeatures(m))); - end - currentMIScore = currentMIScore + featureMIMatrix(m,j); - end - currentScore = classMI(j) - (currentMIScore/iMinus); - - if (currentScore > score) - score = currentScore; - currentHighestFeature = j; - end - end - end - - if score < 0 - disp(['at selection ' int2str(j) ' mRMRD is negative with value ' num2str(score)]); - end - - %now highest feature is selected in currentHighestFeature - %store it - unselectedFeatures(currentHighestFeature) = 0; - answerFeatures(i) = currentHighestFeature; -end - -selectedFeatures = answerFeatures; |