Changes for version 0.05

  • Fixed a concurrency problem that occurred when making more than one decision tree. All tree data is now stored as member data, not class data.
  • DecisionTree.pm is now pure-perl again (though Instance.pm still has an XS component).
  • Fixed a one-off bug in the Instance.xs code that could create garbage data.
  • Handles "sparse" data better. Sparse data means that every attribute doesn't have to be defined for every training/test instance. This can now be a meaningful property - the absence of a value is currently equivalent to a special "<undef>" value.
  • Don't trigger warnings when undefined attribute values are encountered (as happens with sparse data).
  • Added documentation for the 'prune' parameter to new()
  • More consistent with memory allocation in Instance.xs - uses the perl memory macros/functions from `perldoc perlclib` instead of raw malloc/realloc/free.
  • Catches possible infinite loop situations when growing the tree (which shouldn't usually happen, but other mistakes can cause it)
  • The Instance class now has a numeric-only interface, without string translation. String translation is done in the main DecisionTree class. This isn't really a user-visible change.

Modules

Automatically Learns Decision Trees
C-struct wrapper for training instances

Examples