This package is the mRMR (minimum-redundancy maximum-relevancy) feature selection method in (Peng et al, 2005 and Ding & Peng, 2005, 2003), whose better performance over the conventional top-ranking method has been demonstrated on a number of data sets in recent publications. This version uses mutual information as a proxy for computing relevance and redundancy among variables (features). Other variations such as using correlation or F-test or distances can be easily implemented within this framework, too.

'm using this algorithm for the first time, but unable to run it.
I'm using matlab 12a
load fisheriris
f = mrmr_mid_d(meas, species, 2)
but i got an error:
undefined function 'mrmr_mid_d' for input arguments of type cell
I also tried another data set where the class is a double matrix and got the same error: undefined function 'mrmr_mid_d' for input arguments of type double
please help.

Thank you for your code.
I followed last comments of sheng (or at least tried to) but I still have a problem with this estpab function, it is notified as "Undefined function 'estpab' for input arguments of type 'int8'"
When it is called by mutualinfo (line 21).

Great code.
If you have any problem using this code please check http://penglab.janelia.org/proj/mRMR/FAQ_mrmr.htm#Q1.2

for 'estpab.dll' problem please download this mi version http://www.mathworks.com/matlabcentral/fileexchange/14888-mutual-information-computation
replace it with the folder mi_0.9(Mex compile if needed), then copy the three mrmr files to directory /mi/,and run it with you data（integer） ,label and num of features you want to select.

Great code.
If you have any problem using this code please check http://penglab.janelia.org/proj/mRMR/FAQ_mrmr.htm#Q1.2

for 'estpab.dll' please download this mi version http://www.mathworks.com/matlabcentral/fileexchange/14888-mutual-information-computation
replace it with the folder mi_0.9(Mex compile if needed), then copy the three mrmr files run it with you data ,label and num of features you want to select.

Warning: Calling MEX-file 'F:\Matlab Process\GEO\mutual
information\mRMR_0.9_compiled\mi_0.9\estpab.dll'.
MEX-files with .dll extensions will not execute in a future version
of MATLAB.
Warning: Calling MEX-file 'F:\Matlab Process\GEO\mutual
information\mRMR_0.9_compiled\mi_0.9\estmutualinfo.dll'.
MEX-files with .dll extensions will not execute in a future version
of MATLAB.

Ok it works now for me. I will tell how it worked. Firstly download and install the compatible compilers (1. Microsoft visual 2.Microsoft Windows SDK - for windows 64 bit) according to your Matlab version. Once it is installed on your machine. Type mex -setup in Matlab. Choose the installed version and confirm by typing y. Now make sure you have all cpp extension and header files. If you don't have them take all from here : http://www.mathworks.com/matlabcentral/fileexchange/14888
Copy all the files which you don't have. Next work is to edit the cpp extension files. Open the files one by one and where you find log() type log(double()) and save. Now go in the directory where you have the m file makeosmex and run it. After this add all the files and folders to the current working directory. Run the mRMR MID/MIQ/BASE files and et voila its done !
If any body has more questions you are free to ask

Hi, I've got the same memory problem:
I downloaded the mRMR package and furthermore downloaded the recent version of the mutual information toolbox from the autor's website, since the old version was not executable.

I got a data matrix <19900x256 double> and a class_vector matrix <19900x1 double> with values eigther 1, 2, 3 or 4.
I want to compute the "best" 50 features out of the 256.

So what I do now is calling test=mrmr_mid_d(data,class_vector,50);
Now it takes a while (at dual core machine E5300 with 2 GB RAM) and the following error occures:
??? Error using ==> estpab
Out of memory. Type HELP MEMORY for your options.

for both of the above problems:
you need to have the folder containing estpab in the same folder as mrmr_mi*_d.m . Otherwise, you can use addpath.
The definition of input variables are included in mrmr_mi*_d

The inputs are explained on the author's faq here,
http://penglab.janelia.org/proj/mRMR/FAQ_mrmr.htm#s4

"Q4.4 What are the input/parameters of the Matlab version?

A. Three arrays, D, F, and K. D is an m*n array of your candidate features, each row is a sample, and each column is a feature/attribute/variable. F is an m*1 vector, specifying the classification variable (i.e. the class information for each of the m samples). K is the maximal number of features you want to select.

D must be pre-discretized as a categorical array, i.e. containing only integers. F must be categorical, indicating the class information."

I have the same question as above: what are d (all datas I think), what are f (features? but if you pu features you put all datas...) and K is the number of features we want to select I supposed.
Another question is that I have "Invalid MEX-file... the application .dll is invalid...". Would you know how to solve that.
Thanks a lot for this software anyway!

There is no comment in the code, would you please help me about what is mrmr_mid_d(d, f, K), d? f? K?
Thanks so much.

Comment only

23 Jun 2008

Maha Sulaeman

Whenever I use the function mrmr_mid_d, the Matlab keeps displaying 'Out of memory'. my dataset is 202x62 & my RAM space is 2G, does the function need more space? and if so,is there any way I can make it work?

Comment only

01 Dec 2007

Andre Pfeuffer

I had problem to get this run under R2007a Matlab. When used the libraries from "Mutual Information computation", same author, it get working. Excellent work!

26 Jul 2007

Henry Lee

cool codes...

30 May 2007

harry Lee

26 Apr 2007

Bob Simpson

25 Apr 2007

Sirley K

There is also an online version and another binary executable for different OS at the author's web site: http://research.janelia.org/peng/proj/mRMR/index.htm

25 Apr 2007

ALI EL AKADI

18 Apr 2007

X Chen

It may need some efforts to understand what are the d and f, which are the data table and class variable. There is another version at author's web site.

18 Apr 2007

X Chen

This is a quite straightforward implementation and just does what it supposes to do. However it would be nicer if some datasets could be included.