MEE 5: What looks more like a cow than another cow?
This is an adapated version of GPL'ed Quinlan's See5, especially for the runtime (after learning).
Quinlan does provide a "publicly available" (http://www.rulequest.com/see5-public.zip) runtime as a standalone executable (named See5Sam) that reads the cases to classify from a file.
This scheme hardly fits my needs to classify a case generated on the fly at a fast pace. What is needed is an API to which we could give the attributes of a case and to receive the classification class predicted by the tree (or rules). Of course, this API must be available from some library and in the most popular programming languages.
Another drawback with See5Sam is the impossibility to have more than one application tree at the same time. An application is read from files each time the executable is run and is stored in global variables here and there. Mee5 uses a very simple object orientation scheme to encapsulate an application tree instance in a C++ class. Furthermore two different tree instances may be executed in parallel.
I therefore started this small project mainly to free the runtime from these limitations. As I see it, this simply means to free it.
Original code "see5-public" code has been published under the GPL licence by RuleQuest. Therefore this code is also published under the GPL licence.
If you intend to commercially use See5, that is without making your own project open and free, please ask RuleQuest for an official licence.
If you intend to commercially use Mee5, that is without making your own project open and free, first please ask RuleQuest for an official licence of See5, then just send me email (firstname.lastname@example.org). There shouldn't be much problem in what concerns me.
The latest Mee5 distribution may be downloaded from this link:
Mee5 API is available for these programming languages :
- C++ API This is the Mee5 bare implementation language. Everything is declared and defined in inline methods header files. So there is no binary library for this API. You recompile everything every time.
- C API The C++ object oriented API has been ported to the C language. The API is the same as the C++ one except that the instance must be manually provided as the first parameter of all of the services under the type of a void pointer (that may be seen as a "hadle").
- Python API A Python binding is provided through ctypes. The Python API is almost the same as the C++ one.
The See5.0 learning algorithm is embodied by an executable name C5.0. The source code for this executable is published under the GPL (http://www.rulequest.com/GPL/C50.tgz). It is said to be the single thread Linux-only version. You may compile it under Windows in the Cygwin environment. It worked in a snap for me.
So you are all set to use See5 in a GPL project under Windows too, both at learning time and execution time.