[GRASS-SVN] r67110 - grass-addons/grass7/vector/v.mrmr

svn_grass at osgeo.org svn_grass at osgeo.org
Sun Dec 13 20:53:55 PST 2015


Author: spawley
Date: 2015-12-13 20:53:55 -0800 (Sun, 13 Dec 2015)
New Revision: 67110

Added:
   grass-addons/grass7/vector/v.mrmr/Makefile
   grass-addons/grass7/vector/v.mrmr/v.mrmr.html
   grass-addons/grass7/vector/v.mrmr/v.mrmr.py
Log:


Added: grass-addons/grass7/vector/v.mrmr/Makefile
===================================================================
--- grass-addons/grass7/vector/v.mrmr/Makefile	                        (rev 0)
+++ grass-addons/grass7/vector/v.mrmr/Makefile	2015-12-14 04:53:55 UTC (rev 67110)
@@ -0,0 +1,7 @@
+MODULE_TOPDIR = ../..
+
+PGM = v.mrmr
+
+include $(MODULE_TOPDIR)/include/Make/Script.make
+
+default: script


Property changes on: grass-addons/grass7/vector/v.mrmr/Makefile
___________________________________________________________________
Added: svn:eol-style
   + native

Added: grass-addons/grass7/vector/v.mrmr/v.mrmr.html
===================================================================
--- grass-addons/grass7/vector/v.mrmr/v.mrmr.html	                        (rev 0)
+++ grass-addons/grass7/vector/v.mrmr/v.mrmr.html	2015-12-14 04:53:55 UTC (rev 67110)
@@ -0,0 +1,53 @@
+<h2>DESCRIPTION</h2>
+
+<em><b>v.mrmr</b></em> is a simple GUI for exporting data to the Minimum
+Redundancy Maximum Relevance (mRMR) feature selection command line tool
+(Peng et al., 2005). mRMR is designed to select features that have the
+maximal statistical "dependency" on the classification variable, while
+simultaneously minimizing the redundancy among the selected features.
+
+<h2>NOTES</h2>
+
+<p>The command line tool needs to be installed separately in a
+location that is recognized by the system or in the PATH. The command
+line tool can be installed on windows (binaries available), linux and OS
+X (needs compilation). Installation instructions are provided on <a
+href="http://penglab.janelia.org/proj/mRMR/">Peng's Website</a>.
+
+<p>The module requires data within a vector attribute table to be
+arranged in a specific order. The classification variable (i.e., class
+labels) need to be in the first column, except for the cat attribute
+which is not exported. The class label also needs to be in numerical
+form, i.e., 1, 2, 3.... rather than 'forest' or 'urban'.
+	
+<p>The algorithm outputs a tab-separated list of attributes, ranked
+by the most important feature first. The <i> method </i> parameter
+allows a choice between the Maximum Information Difference (MID) and
+Mutual Information Quotient (MIQ) feature evaluation criteria, which
+respectively represent the relevancy and redundancy of the features. The
+algorithm also shows the ranking of the features based on the
+conventional maximum relevance method. Additional user options include
+<i>nfeatures</i> which specifies the number of features that you want to
+select; <i>nsamples</i> limits the maximum number of samples to base the
+feature selection, and <i>maxvar</i> limits the maximum number of
+attributes, both of which can therefore reduce the computation for very
+large datasets. <i>threshold</i> is the discretization threshold to
+apply to the continuous variable data, i.e., mean +/- threshold *
+standard deviation. <i> layer </i> is the attribute layer to be used in
+the feature selection process.
+
+<h2>EXAMPLE</h2>
+
+v.mrmr.py vector=vector_layer layer=1 thres=1.0
+nfeatures=50 nsamples=10000 maxvar=10000 method=MID
+
+<h2>REFERENCES</h2>
+
+Peng, H.; Fulmi Long; Ding, C., "Feature selection
+based on mutual information criteria of max-dependency, max-relevance,
+and min-redundancy," in Pattern Analysis and Machine Intelligence, IEEE
+Transactions on , vol.27, no.8, pp.1226-1238, Aug. 2005
+
+<h2>AUTHOR</h2>
+
+Steven Pawley <br><i>Last changed: Saturday 12 December 2015</i>
\ No newline at end of file


Property changes on: grass-addons/grass7/vector/v.mrmr/v.mrmr.html
___________________________________________________________________
Added: svn:eol-style
   + native

Added: grass-addons/grass7/vector/v.mrmr/v.mrmr.py
===================================================================
--- grass-addons/grass7/vector/v.mrmr/v.mrmr.py	                        (rev 0)
+++ grass-addons/grass7/vector/v.mrmr/v.mrmr.py	2015-12-14 04:53:55 UTC (rev 67110)
@@ -0,0 +1,122 @@
+#!/usr/bin/env python
+#
+##############################################################################
+#
+# MODULE:       Minimum Redundancy Maximum Relevance Feature Selection
+#
+# AUTHOR(S):    Steven Pawley
+#
+##############################################################################
+#%module
+#% description: Perform Minimum Redundancy Maximum Relevance Feature Selection on a GRASS Attribute Table 
+#%end
+
+#%option G_OPT_V_INPUT
+#% description: Vector features
+#% key: table
+#% required : yes
+#%end
+
+#%option G_OPT_V_FIELD
+#% key: layer
+#% required : yes
+#%end
+
+#%option
+#% description: Discretization threshold
+#% key: threshold
+#% type: double
+#% answer: 1.0
+#% required : no
+#% guisection: Options
+#%end
+
+#%option
+#% description: Number of features (attributes)
+#% key: nfeatures
+#% type: integer
+#% answer: 50
+#% required : yes
+#% guisection: Options
+#%end
+
+#%option
+#% description: Maximum number of samples
+#% key: nsamples
+#% type: integer
+#% answer: 1000
+#% required : yes
+#% guisection: Options
+#%end
+
+#%option
+#% description: Maximum number of variables/attributes
+#% key: maxvar
+#% type: integer
+#% answer: 10000
+#% required : yes
+#% guisection: Options
+#%end
+
+#%option
+#% description: Feature selection method
+#% key: method
+#% type: string
+#% options: MID,MIQ 
+#% answer: MID
+#% required : yes
+#% guisection: Options
+#%end
+
+import sys
+import os
+import subprocess
+import shutil
+
+import grass.script as grass
+import tempfile
+import atexit
+import os.path
+  
+# env = grass.gisenv()
+# gisdbase = env['GISDBASE']
+# location = env['LOCATION_NAME']
+# mapset = env['MAPSET']
+# path = os.path.join(gisdbase, location, mapset, 'sqlite.db')
+
+tmpdir = tempfile.mkdtemp()
+tmptable = "mrmrdat.csv"
+
+def cleanup():
+    shutil.rmtree(tmpdir)
+    return 0
+
+def main():
+    table = options['table']
+    layer = options['layer']
+    threshold = options['threshold']
+    nfeatures = options['nfeatures']
+    maxvar = options['maxvar']
+    nsamples = options['nsamples']
+    method = options['method']
+
+    os.chdir(tmpdir)
+
+    grass.run_command("v.out.ogr",
+                      input = table,
+                      layer= layer,
+                      type = 'auto',
+                      output = tmpdir + '/' + tmptable,
+                      format = 'CSV',
+                      flags = 's')
+
+    mrmrcmd = 'mrmr -i ' + tmptable +' -m ' + method + ' -t ' + threshold + ' -n ' + nfeatures + ' -s ' + nsamples + ' -v ' + maxvar
+
+    subprocess.call(mrmrcmd, shell=True)
+
+    return 0
+
+if __name__ == "__main__":
+    options, flags = grass.parser()
+    atexit.register(cleanup)
+    sys.exit(main())


Property changes on: grass-addons/grass7/vector/v.mrmr/v.mrmr.py
___________________________________________________________________
Added: svn:executable
   + *
Added: svn:eol-style
   + native



More information about the grass-commit mailing list