net.sf.jdmf.algorithms.classification
Class PRISMAlgorithm

java.lang.Object
  extended by net.sf.jdmf.algorithms.AbstractDataMiningAlgorithm
      extended by net.sf.jdmf.algorithms.classification.PRISMAlgorithm
All Implemented Interfaces:
DataMiningAlgorithm

public class PRISMAlgorithm
extends AbstractDataMiningAlgorithm

Implements the PRISM classification algorithm as described in Data Mining: Practical Machine Learning Tools and Techniques (Second Edition) by Ian H. Witten and Eibe Frank (Morgan Kaufmann, 2005). The algorithm finds rules that cover as many instances as possible. All rules should be 100% accurate (not always possible). A list of rules is generated for each decision value (the order of rules is IMPORTANT).

 1. Take a decision value.
 2. Start with a rule: IF true THEN ( decisionName = decisionValue ).
 3. Calculate the current rule's accuracy.
 4. If accuracy = 0% or there are no attributes left, output the current rule
 list.
 5. If accuracy = 100%, remove all instances covered by this rule, add the 
 rule to the list and continue point 2 with the remaining instances.
 6. If 0% < accuracy < 100%, extend the current rule for each attribute
 value from remaining attributes.
 7. Find an extended rule with the highest accuracy and make it the current
 rule. 
 8. Remove the attribute involved in the extended rule.
 9. Repeat 3-8.
 10. Repeat 1-9 for all decision values.
 

Author:
quorthon

Constructor Summary
PRISMAlgorithm()
           
 
Method Summary
 DataMiningModel analyze(InputData inputData)
          Analyzes input data (attributes and decisions) and produces output data (rules, decision trees, clusters, ...).
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

PRISMAlgorithm

public PRISMAlgorithm()
Method Detail

analyze

public DataMiningModel analyze(InputData inputData)
Description copied from interface: DataMiningAlgorithm
Analyzes input data (attributes and decisions) and produces output data (rules, decision trees, clusters, ...).

See Also:
DataMiningAlgorithm.analyze(net.sf.jdmf.data.input.InputData)