[grex~subversion:59] (Commit message missing)

  • From: Tuve.Lofstrom@...
  • To: commits@...
  • Subject: [grex~subversion:59] (Commit message missing)
  • Date: Wed, 24 Feb 2010 13:08:40 +0000

Project:    grex
Repository: subversion
Revision:   59
Author:     Tuve.Lofstrom
Date:       2010-02-24 13:08:01 UTC
Link:       

Log Message:
------------



Revisions:
----------
59


Modified Paths:
---------------
grex/src/weka/gui/Main.java
grex/src/weka/classifiers/functions/neural/NeuralConnection.java
grex/src/weka/classifiers/functions/SMO.java
grex/src/weka/classifiers/meta/RegressionByDiscretization.java
grex/src/weka/classifiers/trees/m5/M5Base.java
grex/src/weka/classifiers/rules/JChipper.java
grex/src/weka/gui/ensembleLibraryEditor/LibrarySerialization.java
grex/src/weka/classifiers/evaluation/ThresholdCurve.java
grex/src/weka/core/Tag.java
grex/src/weka/gui/GenericArrayEditor.java
grex/src/weka/gui/streams/InstanceJoiner.java
grex/src/weka/gui/explorer/Explorer.props
grex/src/weka/core/Queue.java
grex/src/weka/gui/beans/SerializedModelSaverBeanInfo.java
grex/src/weka/gui/beans/Classifier.java
grex/src/weka/classifiers/bayes/net/MarginCalculator.java
grex/src/weka/core/converters/FileSourcedConverter.java
grex/src/weka/filters/unsupervised/attribute/MathExpression.java
grex/src/weka/gui/GenericPropertiesCreator.props
grex/src/weka/classifiers/meta/RuleExtract.java
grex/src/weka/filters/unsupervised/instance/subsetbyexpression/Parser.cup
grex/src/weka/filters/unsupervised/attribute/ClusterMembership.java
grex/src/weka/datagenerators/clusterers/BIRCHCluster.java
grex/src/weka/classifiers/meta/GridSearch.java
grex/src/weka/core/neighboursearch/balltrees/BallNode.java
grex/src/weka/attributeSelection/LatentSemanticAnalysis.java
grex/src/weka/associations/tertius/IndividualInstance.java
grex/src/weka/core/Version.java
grex/src/weka/core/pmml/Discretize.java
grex/src/weka/classifiers/meta/AdaBoostM1.java
grex/src/weka/core/neighboursearch/NearestNeighbourSearch.java
grex/src/weka/gui/explorer/AssociationsPanel.java
grex/src/weka/attributeSelection/WrapperSubsetEval.java
grex/src/weka/classifiers/functions/VotedPerceptron.java
grex/src/weka/gui/SimpleCLI.java
grex/src/weka/core/stemmers/IteratedLovinsStemmer.java
grex/src/weka/experiment/DatabaseUtils.props.mysql
grex/src/weka/core/OptionHandler.java
grex/src/weka/filters/unsupervised/instance/subsetbyexpression/sym.java
grex/src/weka/classifiers/meta/AdditiveRegression.java
grex/src/weka/gui/experiment/SimpleSetupPanel.java
grex/src/weka/core/Tee.java
grex/src/weka/core/Optimization.java
grex/src/weka/core/neighboursearch/kdtrees/MidPointOfWidestDimension.java
grex/src/weka/clusterers/forOPTICSAndDBScan/DataObjects/EuclidianDataObject.java
grex/src/weka/core/pmml/TransformationDictionary.java
grex/src/weka/gui/beans/ClassifierPerformanceEvaluator.java
grex/src/weka/attributeSelection/CostSensitiveSubsetEval.java
grex/src/weka/associations/AprioriItemSet.java
grex/src/weka/experiment/DatabaseUtils.props.mssqlserver
grex/src/weka/classifiers/meta/OrdinalClassClassifier.java
grex/src/weka/gui/beans/TestSetMaker.java
grex/src/weka/core/converters/ArffSaver.java
grex/src/weka/classifiers/IteratedSingleClassifierEnhancer.java
grex/src/weka/filters/unsupervised/instance/RemoveFolds.java
grex/src/weka/core/Javadoc.java
grex/src/weka/filters/unsupervised/attribute/RandomSubset.java
grex/src/weka/classifiers/trees/j48/C45PruneableClassifierTreeG.java
grex/src/weka/attributeSelection/SymmetricalUncertAttributeSetEval.java
grex/src/weka/classifiers/CheckClassifier.java
grex/src/weka/core/SelectedTag.java
grex/src/weka/classifiers/meta/RandomSubSpace.java
grex/src/weka/classifiers/RandomizableClassifier.java
grex/src/weka/gui/GenericObjectEditor.java
grex/src/weka/core/InstanceComparator.java
grex/src/weka/classifiers/mi/MISMO.java
grex/src/weka/classifiers/bayes/BayesianLogisticRegression.java
grex/src/weka/core/SerializationHelper.java
grex/src/weka/classifiers/RandomizableSingleClassifierEnhancer.java
grex/src/weka/filters/SimpleStreamFilter.java
grex/src/weka/core/RandomVariates.java
grex/src/weka/gui/experiment/ExperimenterDefaults.java
grex/src/weka/clusterers/CLOPE.java
grex/src/weka/core/tokenizers/NGramTokenizer.java
grex/src/weka/core/Option.java
grex/src/weka/experiment/ResultMatrix.java
grex/src/weka/clusterers/DensityBasedClusterer.java
grex/src/weka/core/neighboursearch/balltrees/BallSplitter.java
grex/src/weka/core/TechnicalInformationHandlerJavadoc.java
grex/src/weka/classifiers/trees/FT.java
grex/src/weka/clusterers/XMeans.java
grex/src/weka/filters/unsupervised/attribute/NominalToString.java
grex/src/weka/core/matrix/IntVector.java
grex/src/weka/classifiers/functions/supportVector/PrecomputedKernelMatrixKernel.java
grex/src/weka/filters/unsupervised/attribute/TimeSeriesDelta.java
grex/src/weka/filters/unsupervised/attribute/StringToNominal.java
grex/src/weka/core/DistanceFunction.java
grex/src/weka/classifiers/functions/GaussianProcesses.java
grex/src/weka/core/tokenizers/CharacterDelimitedTokenizer.java
grex/src/weka/gui/beans/FilterCustomizer.java
grex/src/weka/core/stemmers/Stemmer.java
grex/src/weka/filters/unsupervised/attribute/AddCluster.java
grex/src/weka/filters/supervised/instance/StratifiedRemoveFolds.java
grex/src/weka/classifiers/meta/EnsembleSelection.java
grex/src/weka/classifiers/trees/REPTree.java
grex/src/weka/core/pmml/MiningSchema.java
grex/src/weka/classifiers/functions/PaceRegression.java
grex/src/weka/core/Trie.java
grex/src/weka/filters/unsupervised/attribute/NumericTransform.java
grex/src/weka/gui/explorer/AttributeSelectionPanel.java
grex/src/weka/gui/boundaryvisualizer/RemoteBoundaryVisualizerSubTask.java
grex/src/weka/gui/visualize/VisualizePanel.java
grex/src/weka/gui/beans/xml/XMLBeans.java
grex/src/weka/clusterers/sIB.java
grex/src/weka/experiment/InstancesResultListener.java
grex/src/weka/classifiers/CheckSource.java
grex/src/weka/core/Instances.java
grex/src/weka/clusterers/Cobweb.java
grex/src/weka/classifiers/meta/Grading.java
grex/src/weka/filters/unsupervised/attribute/PropositionalToMultiInstance.java
grex/src/weka/core/pmml/FieldMetaInfo.java
grex/src/weka/core/AdditionalMeasureProducer.java
grex/src/weka/gui/visualize/Plot2D.java
grex/src/weka/core/NormalizableDistance.java
grex/src/weka/classifiers/mi/MDD.java
grex/src/weka/classifiers/mi/MISVM.java
grex/src/weka/classifiers/functions/LibLINEAR.java
grex/src/weka/classifiers/functions/SimpleLogistic.java
grex/src/weka/estimators/CheckEstimator.java
grex/src/weka/gui/SimpleCLIPanel.java
grex/src/weka/classifiers/IntervalEstimator.java
grex/src/weka/filters/unsupervised/instance/RemovePercentage.java
grex/src/weka/clusterers/FilteredClusterer.java
grex/src/weka/core/stemmers/NullStemmer.java
grex/src/weka/gui/sql/ResultSetHelper.java
grex/src/weka/experiment/DatabaseUtils.props.msaccess
grex/src/weka/clusterers/Clusterer.java
grex/src/weka/core/mathematicalexpression/Scanner.jflex
grex/src/weka/clusterers/SimpleKMeans.java
grex/src/weka/gui/explorer/ClassifierPanel.java
grex/src/weka/gui/beans/Associator.java
grex/src/weka/gui/PropertySheetPanel.java
grex/src/weka/classifiers/EnsembleLibrary.java
grex/src/weka/filters/unsupervised/attribute/ReplaceMissingValues.java
grex/src/weka/classifiers/mi/MIDD.java
grex/src/weka/core/stemmers/LovinsStemmer.java
grex/src/weka/core/xml/XMLInstances.java
grex/src/weka/core/SpecialFunctions.java
grex/src/weka/classifiers/rules/ConjunctiveRule.java
grex/src/weka/clusterers/DBScan.java
grex/src/weka/gui/PropertyPanel.java
grex/src/weka/core/xml/KOML.java
grex/src/weka/core/CheckOptionHandler.java
grex/src/weka/gui/explorer/ClustererPanel.java
grex/src/weka/estimators/MahalanobisEstimator.java
grex/src/weka/gui/beans/Beans.props
grex/src/weka/classifiers/evaluation/MarginCurve.java
grex/src/weka/classifiers/meta/ensembleSelection/EnsembleSelectionLibraryModel.java
grex/src/weka/classifiers/BVDecomposeSegCVSub.java
grex/src/weka/filters/unsupervised/instance/RemoveWithValues.java
grex/src/weka/classifiers/misc/FLR.java
grex/src/weka/filters/unsupervised/attribute/KernelFilter.java
grex/src/weka/attributeSelection/CostSensitiveAttributeEval.java
grex/src/weka/associations/SingleAssociatorEnhancer.java
grex/src/weka/core/pmml/NormDiscrete.java
grex/src/weka/experiment/RegressionSplitEvaluator.java
grex/src/weka/gui/beans/KnowledgeFlowApp.java
grex/src/weka/core/converters/XRFFLoader.java
grex/src/weka/gui/beans/BeanConnection.java
grex/src/weka/classifiers/meta/Bagging.java
grex/src/weka/core/AttributeExpression.java
grex/src/weka/core/Statistics.java
grex/src/weka/core/neighboursearch/balltrees/MedianDistanceFromArbitraryPoint.java
grex/src/weka/experiment/DatabaseUtils.java
grex/src/weka/core/converters/AbstractFileLoader.java
grex/src/weka/filters/unsupervised/instance/SparseToNonSparse.java
grex/src/weka/core/pmml/DerivedFieldMetaInfo.java
grex/src/weka/filters/SimpleBatchFilter.java
grex/src/weka/estimators/DiscreteEstimator.java
grex/src/weka/classifiers/trees/j48/NBTreeSplit.java
grex/src/weka/core/SparseInstance.java
grex/src/weka/classifiers/trees/J48.java
grex/src/weka/classifiers/evaluation/CostCurve.java
grex/src/weka/core/pmml/MiningFieldMetaInfo.java
grex/src/weka/gui/GenericPropertiesCreator.java
grex/src/weka/gui/beans/Filter.java
grex/src/weka/filters/unsupervised/attribute/InterquartileRange.java
grex/src/weka/attributeSelection/ScatterSearchV1.java
grex/src/weka/core/matrix/SingularValueDecomposition.java
grex/src/weka/attributeSelection/ASEvaluation.java
grex/src/weka/classifiers/bayes/DMNBtext.java
grex/src/weka/experiment/InstanceQuery.java
grex/src/weka/core/converters/SerializedInstancesLoader.java
grex/src/weka/core/stemmers/Stemming.java
grex/src/weka/core/AttributeStats.java
grex/src/weka/estimators/Estimator.java
grex/src/weka/classifiers/misc/VFI.java
grex/src/weka/classifiers/trees/j48/NBTreeClassifierTree.java
grex/src/weka/classifiers/bayes/NaiveBayesMultinomial.java
grex/src/weka/gui/beans/ClassAssigner.java
grex/src/weka/classifiers/functions/Logistic.java
grex/src/weka/core/matrix/FlexibleDecimalFormat.java
grex/src/weka/filters/supervised/instance/SpreadSubsample.java
grex/src/weka/classifiers/functions/SMOreg.java
grex/src/weka/classifiers/bayes/NaiveBayesSimple.java
grex/src/weka/classifiers/trees/ft/FTtree.java
grex/src/weka/classifiers/meta/ensembleSelection/large_binary_class.model.xml
grex/src/weka/associations/FilteredAssociator.java
grex/src/weka/core/BinarySparseInstance.java
grex/src/weka/core/Capabilities.props
grex/src/weka/filters/unsupervised/instance/Resample.java
grex/src/weka/gui/beans/Loader.java
grex/src/weka/classifiers/meta/ClassificationViaClustering.java
grex/src/weka/datagenerators/classifiers/classification/LED24.java
grex/src/weka/classifiers/bayes/NaiveBayes.java
grex/src/weka/filters/unsupervised/instance/SubsetByExpression.java
grex/src/weka/core/converters/XRFFSaver.java
grex/src/weka/core/TechnicalInformationHandler.java
grex/src/weka/classifiers/trees/j48/NBTreeNoSplit.java
grex/src/weka/classifiers/functions/supportVector/RegOptimizer.java
grex/src/weka/filters/unsupervised/attribute/RELAGGS.java
grex/src/weka/core/matrix/LUDecomposition.java
grex/src/weka/classifiers/IterativeClassifier.java
grex/src/weka/classifiers/rules/ZeroR.java
grex/src/weka/core/OptionHandlerJavadoc.java
grex/src/weka/core/Utils.java
grex/src/weka/gui/experiment/AlgorithmListPanel.java
grex/src/weka/classifiers/meta/nestedDichotomies/ClassBalancedND.java
grex/src/weka/core/neighboursearch/balltrees/BottomUpConstructor.java
grex/src/weka/classifiers/EnsembleLibraryModelComparator.java
grex/src/weka/classifiers/meta/ClassificationViaRegression.java
grex/src/weka/gui/beans/InstanceStreamToBatchMaker.java
grex/src/weka/gui/boundaryvisualizer/BoundaryVisualizer.java
grex/src/weka/attributeSelection/InfoGainAttributeEval.java
grex/src/weka/classifiers/evaluation/EvaluationUtils.java
grex/src/weka/classifiers/bayes/net/GUI.java
grex/src/weka/core/Memory.java
grex/src/weka/filters/unsupervised/attribute/MergeTwoValues.java
grex/src/weka/classifiers/Evaluation.java
grex/src/weka/gui/FileEditor.java
grex/src/weka/classifiers/trees/j48/PruneableClassifierTree.java
grex/src/weka/classifiers/BVDecompose.java
grex/src/weka/gui/beans/SerializedModelSaver.java
grex/src/weka/gui/PropertyDialog.java
grex/src/weka/classifiers/meta/nestedDichotomies/DataNearBalancedND.java
grex/src/weka/core/converters/AbstractSaver.java
grex/src/weka/core/EditDistance.java
grex/src/weka/core/converters/SerializedInstancesSaver.java
grex/src/weka/classifiers/meta/BaggingGEMS.java
grex/src/weka/core/pmml/TargetMetaInfo.java
grex/src/weka/core/converters/TextDirectoryLoader.java
grex/src/weka/filters/MultiFilter.java
grex/src/weka/core/PropertyPath.java
grex/src/weka/classifiers/rules/DecisionTable.java
grex/src/weka/classifiers/rules/part/MakeDecList.java
grex/src/weka/gui/visualize/BMPWriter.java
grex/src/weka/gui/AttributeSummaryPanel.java
grex/src/weka/experiment/DatabaseUtils.props.hsql
grex/src/weka/gui/GUIEditors.props
grex/src/weka/classifiers/EnsembleLibraryModel.java
grex/src/weka/core/converters/Saver.java
grex/src/weka/gui/beans/InstanceStreamToBatchMakerBeanInfo.java
grex/src/weka/experiment/DatabaseUtils.props.mssqlserver2005
grex/src/weka/gui/beans/IncrementalClassifierEvaluator.java
grex/src/weka/classifiers/lazy/IBk.java
grex/src/weka/core/UnsupportedClassTypeException.java
grex/src/weka/classifiers/trees/RandomTree.java
grex/src/weka/core/neighboursearch/balltrees/TopDownConstructor.java
grex/src/weka/datagenerators/clusterers/SubspaceCluster.java
grex/src/weka/classifiers/functions/IsotonicRegression.java
grex/src/weka/classifiers/misc/HyperPipes.java
grex/src/weka/gui/beans/MetaBean.java
grex/src/weka/core/converters/ConverterUtils.java
grex/src/weka/gui/visualize/ClassPanel.java
grex/src/weka/core/converters/AbstractFileSaver.java
grex/src/weka/gui/treevisualizer/TreeVisualizer.props
grex/src/weka/gui/explorer/PreprocessPanel.java
grex/src/weka/filters/unsupervised/attribute/TimeSeriesTranslate.java
grex/src/weka/core/neighboursearch/kdtrees/MedianOfWidestDimension.java
grex/src/weka/core/UnsupportedAttributeTypeException.java
grex/src/weka/filters/unsupervised/attribute/NumericToNominal.java
grex/src/weka/gui/boundaryvisualizer/BoundaryPanel.java
grex/src/weka/core/CheckScheme.java
grex/src/weka/estimators/PoissonEstimator.java
grex/src/weka/attributeSelection/FilteredSubsetEval.java
grex/src/weka/gui/explorer/ExplorerDefaults.java
grex/src/weka/filters/unsupervised/attribute/Wavelet.java
grex/src/weka/classifiers/trees/BFTree.java
grex/src/weka/core/ListOptions.java
grex/src/weka/gui/beans/CrossValidationFoldMakerBeanInfo.java
grex/src/weka/core/ClassDiscovery.java
grex/src/weka/classifiers/trees/DecisionStump.java
grex/src/weka/gui/beans/FilterBeanInfo.java
grex/src/weka/core/mathematicalexpression/Parser.java
grex/src/weka/attributeSelection/OneRAttributeEval.java
grex/src/weka/core/Range.java
grex/src/weka/core/matrix/CholeskyDecomposition.java
grex/src/weka/classifiers/bayes/net/search/local/LocalScoreSearchAlgorithm.java
grex/src/weka/associations/AbstractAssociator.java
grex/src/weka/classifiers/bayes/WAODE.java
grex/src/weka/gui/beans/ThresholdDataEvent.java
grex/src/weka/gui/BrowserHelper.java
grex/src/weka/experiment/ClassifierSplitEvaluator.java
grex/src/weka/classifiers/meta/ensembleSelection/EnsembleSelectionLibrary.java
grex/src/weka/gui/beans/AbstractDataSink.java
grex/src/weka/filters/unsupervised/attribute/PartitionedMultiFilter.java
grex/src/weka/core/matrix/Matrix.java
grex/src/weka/experiment/DatabaseUtils.props.postgresql
grex/src/weka/core/Debug.java
grex/src/weka/classifiers/meta/Vote.java
grex/src/weka/gui/ConverterFileChooser.java
grex/src/weka/filters/unsupervised/attribute/FirstOrder.java
grex/src/weka/filters/unsupervised/attribute/NominalToBinary.java
grex/src/weka/classifiers/functions/LibSVM.java
grex/src/weka/core/pmml/Constant.java
grex/src/weka/classifiers/trees/LADTree.java
grex/src/weka/associations/Apriori.java
grex/src/weka/core/mathematicalexpression/Scanner.java
grex/src/weka/gui/visualize/ThresholdVisualizePanel.java
grex/src/weka/filters/unsupervised/attribute/MakeIndicator.java
grex/src/weka/core/version.txt
grex/src/weka/filters/unsupervised/attribute/MultiInstanceToPropositional.java
grex/src/weka/core/tokenizers/AlphabeticTokenizer.java
grex/src/weka/core/matrix/Maths.java
grex/src/weka/core/RevisionHandler.java
grex/src/weka/classifiers/trees/ADTree.java
grex/src/weka/experiment/ResultMatrixHTML.java
grex/src/weka/experiment/DatabaseUtils.props.oracle
grex/src/weka/experiment/DensityBasedClustererSplitEvaluator.java
grex/src/weka/classifiers/rules/Prism.java
grex/src/weka/classifiers/meta/ensembleSelection/large_multi_class.model.xml
grex/src/weka/attributeSelection/ReliefFAttributeEval.java
grex/src/weka/filters/Filter.java
grex/src/weka/classifiers/MultipleClassifiersCombiner.java
grex/src/weka/gui/beans/SaverCustomizer.java
grex/src/weka/attributeSelection/LinearForwardSelection.java
grex/src/weka/core/converters/SVMLightLoader.java
grex/src/weka/core/matrix/ExponentialFormat.java
grex/src/weka/core/xml/XStream.java
grex/src/weka/core/StringLocator.java
grex/src/weka/gui/visualize/Visualize.props
grex/src/weka/classifiers/pmml/consumer/PMMLClassifier.java
grex/src/weka/core/pmml/PMMLUtils.java
grex/src/weka/core/Capabilities.java
grex/src/weka/filters/unsupervised/instance/subsetbyexpression/Scanner.java
grex/src/weka/core/xml/XMLOptions.java
grex/src/weka/classifiers/bayes/HNB.java
grex/src/weka/filters/unsupervised/attribute/ChangeDateFormat.java
grex/src/weka/core/xml/XMLSerialization.java
grex/src/weka/gui/graphvisualizer/GraphEdge.java
grex/src/weka/filters/supervised/instance/Resample.java
grex/src/weka/classifiers/trees/m5/PreConstructedLinearModel.java
grex/src/weka/clusterers/FarthestFirst.java
grex/src/weka/core/WeightedInstancesHandler.java
grex/src/weka/filters/supervised/instance/SMOTE.java
grex/src/weka/attributeSelection/GainRatioAttributeEval.java
grex/src/weka/classifiers/mi/MILR.java
grex/src/weka/gui/beans/Startable.java
grex/src/weka/core/neighboursearch/balltrees/PointsClosestToFurthestChildren.java
grex/src/weka/core/Matchable.java
grex/src/weka/core/matrix/FloatingPointFormat.java
grex/src/weka/filters/unsupervised/attribute/StringToWordVector.java
grex/src/weka/attributeSelection/SubsetSizeForwardSelection.java
grex/src/weka/filters/unsupervised/attribute/AddExpression.java
grex/src/weka/filters/unsupervised/instance/RemoveRange.java
grex/src/weka/core/CapabilitiesHandler.java
grex/src/weka/experiment/PairedTTester.java
grex/src/weka/core/WekaException.java
grex/src/weka/classifiers/trees/UserClassifier.java
grex/src/weka/core/converters/DatabaseLoader.java
grex/src/weka/classifiers/bayes/blr/LaplacePriorImpl.java
grex/src/weka/classifiers/trees/LMT.java
grex/src/weka/associations/ItemSet.java
grex/src/weka/classifiers/functions/SimpleLinearRegression.java
grex/src/weka/classifiers/lazy/LBR.java
grex/src/weka/gui/experiment/ResultsPanel.java
grex/src/weka/classifiers/bayes/BayesNet.java
grex/src/weka/core/SerializedObject.java
grex/src/weka/classifiers/CostMatrix.java
grex/src/weka/filters/unsupervised/instance/ReservoirSample.java
grex/src/weka/filters/unsupervised/attribute/Standardize.java
grex/src/weka/core/converters/SVMLightSaver.java
grex/src/weka/classifiers/pmml/consumer/Regression.java
grex/src/weka/classifiers/mi/MIEMDD.java
grex/src/weka/core/FastVector.java
grex/src/weka/core/RevisionUtils.java
grex/src/weka/classifiers/meta/Dagging.java
grex/src/weka/classifiers/lazy/KStar.java
grex/src/weka/classifiers/UpdateableClassifier.java
grex/src/weka/clusterers/AbstractClusterer.java
grex/src/weka/core/Stopwords.java
grex/src/weka/classifiers/functions/supportVector/Kernel.java
grex/src/weka/gui/beans/AssociatorCustomizer.java
grex/src/weka/filters/supervised/attribute/ClassOrder.java
grex/src/weka/classifiers/trees/NBTree.java
grex/src/weka/experiment/ResultMatrixGnuPlot.java
grex/src/weka/attributeSelection/GeneticSearch.java
grex/src/weka/datagenerators/classifiers/classification/BayesNet.java
grex/src/weka/filters/unsupervised/instance/RemoveMisclassified.java
grex/src/weka/core/EnvironmentHandler.java
grex/src/weka/classifiers/SingleClassifierEnhancer.java
grex/src/weka/core/converters/ArffLoader.java
grex/src/weka/classifiers/lazy/IB1.java
grex/src/weka/gui/GenericObjectEditor.props
grex/src/weka/classifiers/functions/PLSClassifier.java
grex/src/weka/classifiers/meta/END.java
grex/src/weka/gui/beans/Clusterer.java
grex/src/weka/core/neighboursearch/covertrees/Stack.java
grex/src/weka/core/ManhattanDistance.java
grex/src/weka/classifiers/trees/ft/FTLeavesNode.java
grex/src/weka/classifiers/lazy/LWL.java
grex/src/weka/classifiers/mi/TLDSimple.java
grex/src/weka/gui/AttributeVisualizationPanel.java
grex/src/weka/core/pmml/NormContinuous.java
grex/src/weka/core/matrix/LinearRegression.java
grex/src/weka/core/NoSupportForMissingValuesException.java
grex/src/weka/gui/beans/ClassifierBeanInfo.java
grex/src/weka/attributeSelection/CostSensitiveASEvaluation.java
grex/src/weka/gui/LogWindow.java
grex/src/weka/core/xml/XMLDocument.java
grex/src/weka/gui/beans/PredictionAppender.java
grex/src/weka/datagenerators/classifiers/regression/MexicanHat.java
grex/src/weka/filters/unsupervised/attribute/Remove.java
grex/src/weka/gui/beans/TrainingSetMaker.java
grex/src/weka/experiment/LearningRateResultProducer.java
grex/src/weka/core/converters/LibSVMSaver.java
grex/src/weka/core/Drawable.java
grex/src/weka/core/neighboursearch/balltrees/MiddleOutConstructor.java
grex/src/weka/classifiers/functions/supportVector/Puk.java
grex/src/weka/gui/beans/CrossValidationFoldMaker.java
grex/src/weka/classifiers/meta/RotationForest.java
grex/src/weka/classifiers/functions/RBFNetwork.java
grex/src/weka/core/pmml/BuiltInString.java
grex/src/weka/classifiers/trees/ft/FTNode.java
grex/src/weka/core/converters/CSVSaver.java
grex/src/weka/core/converters/AbstractLoader.java
grex/src/weka/attributeSelection/ConsistencySubsetEval.java
grex/src/weka/gui/experiment/Experimenter.props
grex/src/weka/clusterers/MakeDensityBasedClusterer.java
grex/src/weka/classifiers/trees/j48/BinC45Split.java
grex/src/weka/core/pmml/PMMLModel.java
grex/src/weka/core/neighboursearch/CoverTree.java
grex/src/weka/core/RelationalLocator.java
grex/src/weka/core/neighboursearch/kdtrees/KDTreeNodeSplitter.java
grex/src/weka/gui/beans/ClassValuePicker.java
grex/src/weka/gui/GUIChooser.java
grex/src/weka/filters/unsupervised/attribute/AddValues.java
grex/src/weka/core/pmml/PMMLFactory.java
grex/src/weka/gui/beans/IncrementalClassifierEvaluatorCustomizer.java
grex/src/weka/core/neighboursearch/KDTree.java
grex/src/weka/filters/unsupervised/attribute/Add.java
grex/src/weka/core/UnassignedClassException.java
grex/src/weka/experiment/DatabaseUtils.props.sqlite3
grex/src/weka/core/GlobalInfoJavadoc.java
grex/src/weka/core/neighboursearch/TreePerformanceStats.java
grex/src/weka/core/xml/XMLBasicSerialization.java
grex/src/weka/gui/experiment/SetupPanel.java
grex/src/weka/classifiers/meta/MetaCost.java
grex/src/weka/classifiers/pmml/consumer/NeuralNetwork.java
grex/src/weka/core/TechnicalInformation.java
grex/src/weka/filters/supervised/attribute/Discretize.java
grex/src/weka/classifiers/mi/MINND.java
grex/src/weka/core/neighboursearch/LinearNNSearch.java
grex/src/weka/core/converters/LibSVMLoader.java
grex/src/weka/experiment/DatabaseResultListener.java
grex/src/weka/experiment/DatabaseUtils.props
grex/src/weka/core/ChebyshevDistance.java
grex/src/weka/gui/beans/Saver.java
grex/src/weka/core/AlgVector.java
grex/src/weka/classifiers/mi/MIBoost.java
grex/src/weka/gui/WekaTaskMonitor.java
grex/src/weka/classifiers/trees/Grex.java
grex/src/weka/clusterers/ClusterEvaluation.java
grex/src/weka/classifiers/rules/DecisionTableHashKey.java
grex/src/weka/experiment/ResultMatrixPlainText.java
grex/src/weka/estimators/KernelEstimator.java
grex/src/weka/filters/unsupervised/attribute/NumericToBinary.java
grex/src/weka/core/xml/PropertyHandler.java
grex/src/weka/core/ProtectedProperties.java
grex/src/weka/experiment/ResultMatrixLatex.java
grex/src/weka/core/xml/XMLSerializationMethodHandler.java
grex/src/weka/classifiers/trees/adtree/ReferenceInstances.java
grex/src/weka/core/ClassloaderUtil.java
grex/src/weka/filters/unsupervised/attribute/ClassAssigner.java
grex/src/weka/core/ContingencyTables.java
grex/src/weka/core/UnassignedDatasetException.java
grex/src/weka/associations/Tertius.java
grex/src/weka/core/converters/DatabaseSaver.java
grex/src/weka/classifiers/RandomizableMultipleClassifiersCombiner.java
grex/src/weka/classifiers/functions/supportVector/StringKernel.java
grex/src/weka/core/stemmers/SnowballStemmer.java
grex/src/weka/classifiers/meta/nestedDichotomies/ND.java
grex/src/weka/classifiers/functions/supportVector/RBFKernel.java
grex/src/weka/classifiers/mi/MIOptimalBall.java
grex/src/weka/experiment/ResultMatrixSignificance.java
grex/src/weka/classifiers/meta/CVParameterSelection.java
grex/src/weka/filters/unsupervised/instance/NonSparseToSparse.java
grex/src/weka/gui/experiment/OutputFormatDialog.java
grex/src/weka/classifiers/functions/supportVector/PolyKernel.java
grex/src/weka/classifiers/trees/Id3.java
grex/src/weka/core/xml/SerialUIDChanger.java
grex/src/weka/core/tokenizers/WordTokenizer.java
grex/src/weka/datagenerators/classifiers/classification/RDG1.java
grex/src/weka/classifiers/meta/StackingC.java
grex/src/weka/classifiers/trees/m5/RuleNode.java
grex/src/weka/gui/beans/DataVisualizer.java
grex/src/weka/gui/beans/BatchClassifierEvent.java
grex/src/weka/associations/HotSpot.java
grex/src/weka/experiment/CostSensitiveClassifierSplitEvaluator.java
grex/src/weka/classifiers/trees/j48/ClassifierTree.java
grex/src/weka/classifiers/trees/ft/FTInnerNode.java
grex/src/weka/classifiers/trees/j48/C45Split.java
grex/src/weka/clusterers/UpdateableClusterer.java
grex/src/weka/attributeSelection/SymmetricalUncertAttributeEval.java
grex/src/weka/classifiers/meta/RacedIncrementalLogitBoost.java
grex/src/weka/core/Copyright.java
grex/src/weka/classifiers/bayes/net/EditableBayesNet.java
grex/src/weka/filters/unsupervised/instance/Normalize.java
grex/src/weka/gui/visualize/AttributePanel.java
grex/src/weka/gui/beans/LoaderCustomizer.java
grex/src/weka/classifiers/functions/MultilayerPerceptron.java
grex/src/weka/filters/AllFilter.java
grex/src/weka/classifiers/Sourcable.java
grex/src/weka/gui/ensembleLibraryEditor/DefaultModelsPanel.java
grex/src/weka/core/converters/CSVLoader.java
grex/src/weka/attributeSelection/PrincipalComponents.java
grex/src/weka/filters/unsupervised/attribute/Obfuscate.java
grex/src/weka/classifiers/rules/JRip.java
grex/src/weka/core/Check.java
grex/src/weka/classifiers/bayes/net/search/local/TAN.java
grex/src/weka/core/tokenizers/Tokenizer.java
grex/src/weka/filters/unsupervised/attribute/RemoveType.java
grex/src/weka/filters/unsupervised/attribute/Reorder.java
grex/src/weka/core/Undoable.java
grex/src/weka/classifiers/functions/neural/LinearUnit.java
grex/src/weka/filters/unsupervised/attribute/AbstractTimeSeries.java
grex/src/weka/core/SingleIndex.java
grex/src/weka/attributeSelection/CfsSubsetEval.java
grex/src/weka/core/MultiInstanceCapabilitiesHandler.java
grex/src/weka/core/pmml/FieldRef.java
grex/src/weka/core/Randomizable.java
grex/src/weka/classifiers/meta/MultiClassClassifier.java
grex/src/weka/core/AllJavadoc.java
grex/src/weka/gui/ensembleLibraryEditor/AddModelsPanel.java
grex/src/weka/core/pmml/DefineFunction.java
grex/src/weka/estimators/NormalEstimator.java
grex/src/weka/core/MathematicalExpression.java
grex/src/weka/classifiers/trees/lmt/LogisticBase.java
grex/src/weka/gui/sql/SqlViewerDialog.java
grex/src/weka/core/matrix/DoubleVector.java
grex/src/weka/core/Environment.java
grex/src/weka/gui/beans/SerializedModelSaverCustomizer.java
grex/src/weka/gui/visualize/PlotData2D.java
grex/src/weka/filters/unsupervised/attribute/AddNoise.java
grex/src/weka/classifiers/trees/SimpleCart.java
grex/src/weka/classifiers/evaluation/NumericPrediction.java
grex/src/weka/core/mathematicalexpression/Parser.cup
grex/src/weka/associations/PredictiveApriori.java
grex/src/weka/gui/SetInstancesPanel.java
grex/src/weka/gui/beans/IncrementalClassifierEvent.java
grex/src/weka/core/AttributeLocator.java
grex/src/weka/filters/unsupervised/attribute/PrincipalComponents.java
grex/src/weka/classifiers/JythonClassifier.java
grex/src/weka/filters/unsupervised/instance/RemoveFrequentValues.java
grex/src/weka/filters/unsupervised/attribute/RandomProjection.java
grex/src/weka/filters/unsupervised/instance/subsetbyexpression/Parser.java
grex/src/weka/core/AbstractStringDistanceFunction.java
grex/src/weka/core/neighboursearch/kdtrees/KDTreeNode.java
grex/src/weka/attributeSelection/ClassifierSubsetEval.java
grex/src/weka/classifiers/rules/OneR.java
grex/src/weka/gui/beans/AssociatorBeanInfo.java
grex/src/weka/gui/boundaryvisualizer/BoundaryPanelDistributed.java
grex/src/weka/classifiers/meta/Stacking.java
grex/src/weka/classifiers/bayes/AODE.java
grex/src/weka/gui/beans/LogPanel.java
grex/src/weka/filters/unsupervised/attribute/Normalize.java
grex/src/weka/filters/unsupervised/attribute/Center.java
grex/src/weka/classifiers/bayes/net/BayesNetGenerator.java
grex/src/weka/core/Summarizable.java
grex/src/weka/classifiers/meta/RandomCommittee.java
grex/src/weka/gui/visualize/JPEGWriter.java
grex/src/weka/filters/supervised/attribute/AttributeSelection.java
grex/src/weka/classifiers/RandomizableIteratedSingleClassifierEnhancer.java
grex/src/weka/filters/supervised/attribute/NominalToBinary.java
grex/src/weka/datagenerators/classifiers/regression/Expression.java
grex/src/weka/core/Instance.java
grex/src/weka/gui/beans/ClustererBeanInfo.java
grex/src/weka/classifiers/meta/FilteredClassifier.java
grex/src/weka/gui/beans/CostBenefitAnalysis.java
grex/src/weka/core/FindWithCapabilities.java
grex/src/weka/gui/graphvisualizer/GraphNode.java
grex/src/weka/classifiers/bayes/net/estimate/MultiNomialBMAEstimator.java
grex/src/weka/classifiers/pmml/consumer/GeneralRegression.java
grex/src/weka/core/neighboursearch/balltrees/BallTreeConstructor.java
grex/src/weka/classifiers/trees/J48graft.java
grex/src/weka/core/Copyable.java
grex/src/weka/filters/supervised/attribute/AddClassification.java
grex/src/weka/core/neighboursearch/BallTree.java
grex/src/weka/core/converters/C45Saver.java
grex/src/weka/gui/visualize/PNGWriter.java
grex/src/weka/experiment/DatabaseUtils.props.odbc
grex/src/weka/attributeSelection/ChiSquaredAttributeEval.java
grex/src/weka/core/neighboursearch/kdtrees/KMeansInpiredMethod.java
grex/src/weka/experiment/Experiment.java
grex/src/weka/core/neighboursearch/PerformanceStats.java
grex/src/weka/core/pmml/BuiltInArithmetic.java
grex/src/weka/gui/beans/ClassifierCustomizer.java
grex/src/weka/core/converters/Loader.java
grex/src/weka/classifiers/functions/LeastMedSq.java
grex/src/weka/filters/unsupervised/attribute/Copy.java
grex/src/weka/gui/beans/FlowRunner.java
grex/src/weka/gui/beans/ClustererCustomizer.java
grex/src/weka/datagenerators/classifiers/classification/Agrawal.java
grex/src/weka/classifiers/functions/neural/NeuralNode.java
grex/src/weka/classifiers/mi/SimpleMI.java
grex/src/weka/clusterers/OPTICS.java
grex/src/weka/core/Attribute.java
grex/src/weka/classifiers/meta/CostSensitiveClassifier.java
grex/src/weka/experiment/ResultMatrixCSV.java
grex/src/weka/core/TestInstances.java
grex/src/weka/attributeSelection/LFSMethods.java
grex/src/weka/classifiers/meta/Decorate.java
grex/src/weka/core/matrix/QRDecomposition.java
grex/src/weka/filters/unsupervised/attribute/RemoveUseless.java
grex/src/weka/core/SystemInfo.java
grex/src/weka/core/pmml/Apply.java
grex/src/weka/classifiers/rules/PART.java
grex/src/weka/core/matrix/EigenvalueDecomposition.java
grex/src/weka/classifiers/misc/SerializedClassifier.java
grex/src/weka/core/EuclideanDistance.java
grex/src/weka/core/Matrix.java
grex/src/weka/classifiers/rules/NNge.java
grex/src/weka/core/neighboursearch/balltrees/MedianOfWidestDimension.java
grex/src/weka/core/CheckGOE.java
grex/src/weka/core/Copyright.props
grex/src/weka/classifiers/Classifier.java
grex/src/weka/attributeSelection/FilteredAttributeEval.java
grex/src/weka/classifiers/mi/CitationKNN.java
grex/src/weka/classifiers/trees/j48/C45ModelSelection.java
grex/src/weka/classifiers/bayes/ComplementNaiveBayes.java
grex/src/weka/classifiers/meta/LogitBoost.java
grex/src/weka/classifiers/trees/j48/C45PruneableClassifierTree.java
grex/src/weka/gui/InstancesSummaryPanel.java
grex/src/weka/gui/arffviewer/ArffTableModel.java
grex/src/weka/gui/treevisualizer/TreeVisualizer.java
grex/src/weka/filters/unsupervised/attribute/AddID.java
grex/src/weka/classifiers/functions/LinearRegression.java
grex/src/weka/classifiers/trees/j48/BinC45ModelSelection.java
grex/src/weka/filters/unsupervised/attribute/NumericCleaner.java
grex/src/weka/filters/unsupervised/attribute/Discretize.java
grex/src/weka/clusterers/forOPTICSAndDBScan/DataObjects/ManhattanDataObject.java
grex/src/weka/core/mathematicalexpression/sym.java
grex/src/weka/core/pmml/MappingInfo.java
grex/src/weka/datagenerators/classifiers/classification/RandomRBF.java
grex/src/weka/core/converters/C45Loader.java
grex/src/weka/associations/GeneralizedSequentialPatterns.java
grex/src/weka/classifiers/meta/MultiScheme.java
grex/src/weka/classifiers/rules/Ridor.java
grex/src/weka/filters/supervised/attribute/PLSFilter.java
grex/src/weka/core/xml/MethodHandler.java
grex/src/weka/core/neighboursearch/kdtrees/SlidingMidPointOfWidestSide.java
grex/src/weka/classifiers/mi/TLD.java
grex/src/weka/classifiers/evaluation/Prediction.java
grex/src/weka/classifiers/functions/Winnow.java
grex/src/weka/classifiers/mi/supportVector/MIPolyKernel.java
grex/src/weka/core/logging/FileLogger.java
grex/src/weka/core/converters/DatabaseConnection.java
grex/src/weka/gui/beans/BeanCommon.java
grex/src/weka/classifiers/bayes/AODEsr.java
grex/src/weka/filters/unsupervised/instance/Randomize.java
grex/src/weka/filters/unsupervised/attribute/SwapValues.java
grex/src/weka/filters/unsupervised/instance/subsetbyexpression/Scanner.jflex
grex/src/weka/classifiers/trees/RandomForest.java


Added Paths:
------------
grex/src/weka/attributeSelection/TabuSearch.java
grex/src/weka/classifiers/collective/meta/CollectiveNeighbor.java
grex/src/weka/classifiers/collective/meta/TwoStageCollective.java
grex/src/weka/classifiers/collective/util/TriangleFlipper.java
grex/src/weka/classifiers/collective/trees/model/DecisionTreeNode.java
grex/src/weka/classifiers/collective/util/Splitter.java
grex/src/weka/classifiers/collective/functions/LLGC.java
grex/src/weka/attributeSelection/ClassifierAttributeEval.java
grex/src/weka/classifiers/collective/trees/model/DecisionTreeModel.java
grex/src/weka/classifiers/collective/util
grex/src/weka/gui/visualize/plugins/ErrorVisualizePlugin.java
grex/src/weka/classifiers/collective/trees/model/CollectiveTreeNode.java
grex/src/weka/experiment/ExplicitTestsetResultProducer.java
grex/src/weka/classifiers/collective/CollectiveRandomizableSingleClassifierEnhancer.java
grex/src/weka/core/converters/MatlabLoader.java
grex/src/weka/classifiers/collective/CollectiveClassifier.java
grex/src/weka/classifiers/collective/util/FlipHistory.java
grex/src/weka/gui/beans/ConfigurationListener.java
grex/src/weka/gui/visualize/InstanceInfoFrame.java
grex/src/weka/gui/images/cut.gif
grex/src/weka/classifiers/pmml/consumer/TreeModel.java
grex/src/weka/core/converters/MatlabSaver.java
grex/src/weka/filters/unsupervised/attribute/SortLabels.java
grex/src/weka/classifiers/collective/CollectiveRandomizableClassifier.java
grex/src/weka/gui/beans/ConfigurationProducer.java
grex/src/weka/gui/images/paste.gif
grex/src/weka/classifiers/collective/trees/model/CollectiveTreeModel.java
grex/src/weka/filters/unsupervised/attribute/MILESFilter.java
grex/src/weka/classifiers/rules/FURIA.java
grex/src/weka/classifiers/collective/meta/YATSI.java
grex/src/weka/gui/weka_icon.png
grex/src/weka/classifiers/collective/meta/OracleClassifier.java
grex/src/weka/classifiers/collective/lazy
grex/src/weka/core/converters/JSONSaver.java
grex/src/weka/core/converters/JSONLoader.java
grex/src/weka/classifiers/ParallelIteratedSingleClassifierEnhancer.java
grex/src/weka/gui/images/stop.gif
grex/src/weka/estimators/UnivariateIntervalEstimator.java
grex/src/weka/classifiers/rules/OLM.java
grex/src/weka/estimators/UnivariateNormalEstimator.java
grex/src/weka/classifiers/collective/meta/SaveToFile.java
grex/src/weka/classifiers/collective/trees/CollectiveWoods.java
grex/src/weka/classifiers/collective/util/1vs2.sh
grex/src/weka/gui/DocumentPrinting.java
grex/src/weka/gui/images/new.gif
grex/src/weka/classifiers/collective/meta/SimpleCollective.java
grex/src/weka/classifiers/collective/trees/CollectiveForest.java
grex/src/weka/core/WekaEnumeration.java
grex/src/weka/classifiers/collective/trees/RandomWoods.java
grex/src/weka/experiment/remote.policy.example
grex/src/weka/experiment/remote.policy
grex/src/weka/estimators/UnivariateEqualFrequencyHistogramEstimator.java
grex/src/weka/classifiers/meta/RealAdaBoost.java
grex/src/weka/classifiers/collective/util/CollectiveLog.java
grex/src/weka/gui/visualize/InstanceInfo.java
grex/src/weka/gui/ReaderToTextPane.java
grex/src/weka/classifiers/collective/util/RankedInstance.java
grex/src/weka/gui/explorer/AbstractPlotInstances.java
grex/src/weka/classifiers/collective/meta/CollectiveEM.java
grex/src/weka/classifiers/collective/meta/Chopper.java
grex/src/weka/filters/unsupervised/attribute/MergeManyValues.java
grex/src/weka/classifiers/collective/meta/Weighting.java
grex/src/weka/classifiers/functions/MultilayerPerceptronCS.java
grex/src/weka/filters/unsupervised/attribute/RenameAttribute.java
grex/src/weka/classifiers/RandomizableParallelIteratedSingleClassifierEnhancer.java
grex/src/weka/classifiers/collective/trees/CollectiveTree.java
grex/src/weka/filters/unsupervised/attribute/EMImputation.java
grex/src/weka/classifiers/collective/meta/CollectiveWrapper.java
grex/src/weka/core/DenseInstance.java
grex/src/weka/estimators/UnivariateKernelEstimator.java
grex/src/weka/classifiers/collective/RestartableCollectiveClassifier.java
grex/src/weka/classifiers/collective/util/SimpleFlipper.java
grex/src/weka/classifiers/collective/functions
grex/src/weka/classifiers/pmml/consumer/RuleSetModel.java
grex/src/weka/estimators/UnivariateDensityEstimator.java
grex/src/weka/classifiers/IAccessBaseClassifiers.java
grex/src/weka/classifiers/collective/util/Clock.java
grex/src/weka/classifiers/collective/util/CollectiveHelper.java
grex/src/weka/classifiers/collective/meta
grex/src/weka/classifiers/collective/util/CollectiveInstances.java
grex/src/weka/filters/unsupervised/attribute/RemoveByName.java
grex/src/weka/classifiers/AbstractClassifier.java
grex/src/weka/classifiers/collective/meta/AdvancedCollective.java
grex/src/weka/classifiers/collective/util/RankedList.java
grex/src/weka/gui/images/print.gif
grex/src/weka/gui/explorer/ClassifierErrorsPlotInstances.java
grex/src/weka/classifiers/collective/CollectiveRandomizableMultipleClassifiersCombiner.java
grex/src/weka/classifiers/ParallelMultipleClassifiersCombiner.java
grex/src/weka/gui/beans/ConfigurationEvent.java
grex/src/weka/gui/images/run.gif
grex/src/weka/classifiers/ConditionalDensityEstimator.java
grex/src/weka/core/MinkowskiDistance.java
grex/src/weka/classifiers/misc/OSDL.java
grex/src/weka/gui/visualize/plugins/GraphVisualizePlugin.java
grex/src/weka/experiment/CrossValidationSplitResultProducer.java
grex/src/weka/classifiers/RandomizableParallelMultipleClassifiersCombiner.java
grex/src/weka/classifiers/collective/trees/model
grex/src/weka/gui/beans/EnvironmentField.java
grex/src/weka/attributeSelection/SignificanceAttributeEval.java
grex/src/weka/clusterers/HierarchicalClusterer.java
grex/src/weka/classifiers/collective/lazy/CollectiveIBk.java
grex/src/weka/core/AbstractInstance.java
grex/src/weka/gui/images/redo.gif
grex/src/weka/gui/images/delete.gif
grex/src/weka/classifiers/collective/util/RankedInstanceComparator.java
grex/src/weka/classifiers/collective/lazy/ibk
grex/src/weka/classifiers/collective/util/Flipper.java
grex/src/weka/estimators/UnivariateQuantileEstimator.java
grex/src/weka/classifiers/collective
grex/src/weka/classifiers/collective/util/ConfidentFlipper.java
grex/src/weka/classifiers/collective/meta/CollectiveBagging.java
grex/src/weka/classifiers/collective/meta/FilteredCollectiveClassifier.java
grex/src/weka/associations/FPGrowth.java
grex/src/weka/classifiers/collective/lazy/ibk/Neighbors.java
grex/src/weka/core/pmml/Array.java
grex/src/weka/classifiers/collective/trees
grex/src/weka/classifiers/collective/util/rms.sh
grex/src/weka/classifiers/functions/SPegasos.java
grex/src/weka/classifiers/meta/VotedFolds.java
grex/src/weka/gui/visualize/plugins/TreeVisualizePlugin.java
grex/src/weka/classifiers/meta/OneClassClassifier.java
grex/src/weka/gui/weka_icon.icns
grex/src/weka/gui/explorer/ClustererAssignmentsPlotInstances.java


Diffs:
------
Index: grex/src/weka/associations/Tertius.java
===================================================================
--- grex/src/weka/associations/Tertius.java     (revision 58)
+++ grex/src/weka/associations/Tertius.java     (revision 59)
@@ -146,7 +146,7 @@
  <!-- options-end -->
  *
  * @author <a href="mailto:adeltour@...";>Amelie Deltour</a>
- * @version $Revision: 5504 $
+ * @version $Revision: 5444 $
  */
 
 public class Tertius 
@@ -2011,7 +2011,7 @@
    * @return           the revision
    */
   public String getRevision() {
-    return RevisionUtils.extract("$Revision: 5504 $");
+    return RevisionUtils.extract("$Revision: 5444 $");
   }
 
   /**
Index: grex/src/weka/associations/AprioriItemSet.java
===================================================================
--- grex/src/weka/associations/AprioriItemSet.java      (revision 58)
+++ grex/src/weka/associations/AprioriItemSet.java      (revision 59)
@@ -43,7 +43,7 @@
  *
  * @author Eibe Frank (eibe@...)
  * @author Stefan Mutter (mutter@...)
- * @version $Revision: 1.6 $
+ * @version $Revision: 5130 $
  */
 public class AprioriItemSet 
   extends ItemSet 
@@ -453,7 +453,8 @@
    * @return a set of item sets, each containing a single item
    * @exception Exception if singletons can't be generated successfully
    */
-  public static FastVector singletons(Instances instances) throws Exception {
+  public static FastVector singletons(Instances instances,
+      boolean treatZeroAsMissing) throws Exception {
 
     FastVector setOfItemSets = new FastVector();
     ItemSet current;
@@ -461,8 +462,10 @@
     for (int i = 0; i < instances.numAttributes(); i++) {
       if (instances.attribute(i).isNumeric())
        throw new Exception("Can't handle numeric attributes!");
-      for (int j = 0; j < instances.attribute(i).numValues(); j++) {
+      int j = (treatZeroAsMissing) ? 1 : 0;
+      for (; j < instances.attribute(i).numValues(); j++) {
        current = new AprioriItemSet(instances.numInstances());
+       current.setTreatZeroAsMissing(treatZeroAsMissing);
        current.m_items = new int[instances.numAttributes()];
        for (int k = 0; k < instances.numAttributes(); k++)
          current.m_items[k] = -1;
@@ -537,6 +540,6 @@
    * @return           the revision
    */
   public String getRevision() {
-    return RevisionUtils.extract("$Revision: 1.6 $");
+    return RevisionUtils.extract("$Revision: 5130 $");
   }
 }
Index: grex/src/weka/associations/FPGrowth.java
===================================================================
--- grex/src/weka/associations/FPGrowth.java    (revision 0)
+++ grex/src/weka/associations/FPGrowth.java    (revision 59)
@@ -0,0 +1,2243 @@
+/*
+ *    This program is free software; you can redistribute it and/or modify
+ *    it under the terms of the GNU General Public License as published by
+ *    the Free Software Foundation; either version 2 of the License, or
+ *    (at your option) any later version.
+ *
+ *    This program is distributed in the hope that it will be useful,
+ *    but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *    GNU General Public License for more details.
+ *
+ *    You should have received a copy of the GNU General Public License
+ *    along with this program; if not, write to the Free Software
+ *    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+/*
+ *    FPGrowth.java
+ *    Copyright (C) 2009 University of Waikato, Hamilton, New Zealand
+ *
+ */
+
+package weka.associations;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.Vector;
+
+import weka.core.Attribute;
+import weka.core.Capabilities;
+import weka.core.Instance;
+import weka.core.Instances;
+import weka.core.Option;
+import weka.core.OptionHandler;
+import weka.core.RevisionUtils;
+import weka.core.SelectedTag;
+import weka.core.SparseInstance;
+import weka.core.Tag;
+import weka.core.TechnicalInformation;
+import weka.core.TechnicalInformationHandler;
+import weka.core.Utils;
+import weka.core.Capabilities.Capability;
+import weka.core.TechnicalInformation.Field;
+import weka.core.TechnicalInformation.Type;
+
+/**
+ <!-- globalinfo-start -->
+ * Class implementing the FP-growth algorithm for finding large item sets 
without candidate generation. Iteratively reduces the minimum support until 
it finds the required number of rules with the given minimum metric. For more 
information see:<br/>
+ * <br/>
+ * J. Han, J.Pei, Y. Yin: Mining frequent patterns without candidate 
generation. In: Proceedings of the 2000 ACM-SIGMID International Conference 
on Management of Data, 1-12, 2000.
+ * <p/>
+ <!-- globalinfo-end -->
+ * 
+ <!-- technical-bibtex-start -->
+ * BibTeX:
+ * <pre>
+ * &#64;inproceedings{Han2000,
+ *    author = {J. Han and J.Pei and Y. Yin},
+ *    booktitle = {Proceedings of the 2000 ACM-SIGMID International 
Conference on Management of Data},
+ *    pages = {1-12},
+ *    title = {Mining frequent patterns without candidate generation},
+ *    year = {2000}
+ * }
+ * </pre>
+ * <p/>
+ <!-- technical-bibtex-end -->
+ *
+ <!-- options-start -->
+ * Valid options are: <p/>
+ * 
+ * <pre> -P &lt;attribute index of positive value&gt;
+ *  Set the index of the attribute value to consider as 'positive'
+ *  for binary attributes in normal dense instances. Index 2 is always
+ *  used for sparse instances. (default = 2)</pre>
+ * 
+ * <pre> -I &lt;max items&gt;
+ *  The maximum number of items to include in large items sets (and rules). 
(default = -1, i.e. no limit.)</pre>
+ * 
+ * <pre> -N &lt;require number of rules&gt;
+ *  The required number of rules. (default = 10)</pre>
+ * 
+ * <pre> -T &lt;0=confidence | 1=lift | 2=leverage | 3=Conviction&gt;
+ *  The metric by which to rank rules. (default = confidence)</pre>
+ * 
+ * <pre> -C &lt;minimum metric score of a rule&gt;
+ *  The minimum metric score of a rule. (default = 0.9)</pre>
+ * 
+ * <pre> -U &lt;upper bound for minimum support&gt;
+ *  Upper bound for minimum support. (default = 1.0)</pre>
+ * 
+ * <pre> -M &lt;lower bound for minimum support&gt;
+ *  The lower bound for the minimum support. (default = 0.1)</pre>
+ * 
+ * <pre> -D &lt;delta for minimum support&gt;
+ *  The delta by which the minimum support is decreased in
+ *  each iteration. (default = 0.05)</pre>
+ * 
+ * <pre> -S
+ *  Find all rules that meet the lower bound on
+ *  minimum support and the minimum metric constraint.
+ *  Turning this mode on will disable the iterative support reduction
+ *  procedure to find the specified number of rules.</pre>
+ * 
+ <!-- options-end -->
+ *
+ * @author Mark Hall (mhall{[at]}pentaho{[dot]}com)
+ * @version $Revision: 6158 $
+ */
+public class FPGrowth extends AbstractAssociator 
+  implements OptionHandler, TechnicalInformationHandler {
+  
+  /** For serialization */
+  private static final long serialVersionUID = 3620717108603442911L;
+
+  /**
+   * Inner class that handles a single binary item
+   */
+  public static class BinaryItem implements Serializable, 
Comparable<BinaryItem> {
+    
+    /** For serialization */
+    private static final long serialVersionUID = -3372941834914147669L;
+    
+    /** The frequency of the item */
+    protected int m_frequency;
+    
+    /** The attribute that the item corresponds to */
+    protected Attribute m_attribute;
+    
+    /** The index of the value considered to be positive */
+    protected int m_valueIndex;
+    
+    public BinaryItem(Attribute att, int valueIndex) throws Exception {
+      if (att.isNumeric() || (att.isNominal() && att.numValues() > 2)) {
+        throw new Exception("BinaryItem must be constructed using a nominal 
attribute" +
+                       " with at most 2 values!");
+      }
+      m_attribute = att;
+      if (m_attribute.numValues() == 1) {
+        m_valueIndex = 0; // unary attribute (? used to indicate absence 
from a basket)
+      } else {
+        m_valueIndex = valueIndex;
+      }
+    }
+    
+    /**
+     * Increase the frequency of this item.
+     * 
+     * @param f the amount to increase the frequency by.
+     */
+    public void increaseFrequency(int f) {
+      m_frequency += f;
+    }
+    
+    /**
+     * Decrease the frequency of this item.
+     * 
+     * @param f the amount by which to decrease the frequency.
+     */
+    public void decreaseFrequency(int f) {
+      m_frequency -= f;
+    }
+    
+    /**
+     * Increment the frequency of this item.
+     */
+    public void increaseFrequency() {
+      m_frequency++;
+    }
+    
+    /**
+     * Decrement the frequency of this item.
+     */
+    public void decreaseFrequency() {
+      m_frequency--;
+    }
+    
+    /**
+     * Get the frequency of this item.
+     * 
+     * @return the frequency.
+     */
+    public int getFrequency() {
+      return m_frequency;
+    }
+    
+    /**
+     * Get the attribute that this item corresponds to.
+     * 
+     * @return the corresponding attribute.
+     */
+    public Attribute getAttribute() {
+      return m_attribute;
+    }
+    
+    /**
+     * Get the value index for this item.
+     * 
+     * @return the value index.
+     */
+    public int getValueIndex() {
+      return m_valueIndex;
+    }
+    
+    /**
+     * A string representation of this item.
+     * 
+     * @return a string representation of this item.
+     */
+    public String toString() {
+      return toString(false);
+    }
+    
+    /**
+     * A string representation of this item.
+     * 
+     * @param freq true if the frequency should be included.
+     * @return a string representation of this item. 
+     */
+    public String toString(boolean freq) {
+      String result = m_attribute.name() + "=" + 
m_attribute.value(m_valueIndex);
+      if (freq) {
+        result += ":" + m_frequency;
+      }
+      return result;
+    }
+    
+    /**
+     * Ensures that items will be sorted in descending order of frequency.
+     * Ties are ordered by attribute name.
+     * 
+     * @param comp the BinaryItem to compare against.
+     */
+    public int compareTo(BinaryItem comp) {
+      if (m_frequency == comp.getFrequency()) {
+        // sort by name
+        return -1 * m_attribute.name().compareTo(comp.getAttribute().name());
+      }
+      if (comp.getFrequency() < m_frequency) {
+        return -1;
+      }
+      return 1;
+    }
+    
+    public boolean equals(Object compareTo) {
+      if (!(compareTo instanceof BinaryItem)) {
+        return false;
+      }
+      
+      BinaryItem b = (BinaryItem)compareTo;
+      if (m_attribute.equals(b.getAttribute()) && m_frequency == 
b.getFrequency()) {
+        return true;
+      }
+      
+      return false;
+    }
+    
+    public int hashCode() {
+      return (m_attribute.name().hashCode() ^ 
+          m_attribute.numValues()) * m_frequency;
+    }
+  }
+  
+  /**
+   * Class for maintaining a frequent item set.
+   */
+  protected static class FrequentBinaryItemSet 
+    implements Serializable, Cloneable {
+    
+    /** For serialization */
+    private static final long serialVersionUID = -6543815873565829448L;
+
+    /** The list of items in the item set */
+    protected ArrayList<BinaryItem> m_items = new ArrayList<BinaryItem>();
+    
+    /** the support of this item set **/
+    protected int m_support;
+    
+    /**
+     * Constructor
+     * 
+     * @param items the items that make up the frequent item set.
+     * @param support the support of this item set.
+     */
+    public FrequentBinaryItemSet(ArrayList<BinaryItem> items, int support) {
+      m_items = items;
+      m_support = support;
+      Collections.sort(m_items);
+    }
+    
+    /**
+     * Add an item to this item set.
+     * 
+     * @param i the item to add.
+     */
+    public void addItem(BinaryItem i) {
+      m_items.add(i);
+      Collections.sort(m_items);
+    }
+    
+    /**
+     * Set the support for this item set.
+     * 
+     * @param support the support for this item set.
+     */
+    public void setSupport(int support) {
+      m_support = support;
+    }
+    
+    /**
+     * Get the support of this item set.
+     * 
+     * @return the support of this item set.
+     */
+    public int getSupport() {
+      return m_support;
+    }
+    
+    /**
+     * Get the items in this item set.
+     * 
+     * @return the items in this item set.
+     */
+    public Collection<BinaryItem> getItems() {
+      return m_items;
+    }
+    
+    /**
+     * Get a particular item from this item set.
+     * 
+     * @param index the index of the item to get.
+     * @return the item.
+     */
+    public BinaryItem getItem(int index) {
+      return m_items.get(index);
+    }
+    
+    /**
+     * Get the number of items in this item set.
+     * 
+     * @return the number of items in this item set.
+     */
+    public int numberOfItems() {
+      return m_items.size();
+    }
+    
+    /**
+     * Get a textual description of this item set.
+     * 
+     * @return a textual description of this item set.
+     */
+    public String toString() {
+      StringBuffer buff = new StringBuffer();
+      Iterator<BinaryItem> i = m_items.iterator();
+      
+      while (i.hasNext()) {
+        buff.append(i.next().toString() + " ");        
+      }
+      buff.append(": " + m_support);
+      return buff.toString();
+    }
+    
+    /**
+     * Make a copy of this item set.
+     * 
+     * @return a copy of this item set.
+     */
+    public Object clone() {
+      ArrayList<BinaryItem> items = new ArrayList<BinaryItem>(m_items);
+      return new FrequentBinaryItemSet(items, m_support);
+    }
+  }
+  
+  /**
+   * Maintains a list of frequent item sets.
+   */
+  protected static class FrequentItemSets implements Serializable {
+    
+    /** For serialization */
+    private static final long serialVersionUID = 4173606872363973588L;
+
+    /** The list of frequent item sets */
+    protected ArrayList<FrequentBinaryItemSet> m_sets = 
+      new ArrayList<FrequentBinaryItemSet>();
+    
+    /** The total number of transactions in the data */
+    protected int m_numberOfTransactions;
+    
+    /**
+     * Constructor.
+     * 
+     * @param numTransactions the total number of transactions in the data.
+     */
+    public FrequentItemSets(int numTransactions) {
+      m_numberOfTransactions = numTransactions;
+    }
+    
+    /**
+     * Get an item set.
+     * 
+     * @param index the index of the item set to get.
+     * @return an item set.
+     */
+    public FrequentBinaryItemSet getItemSet(int index) {
+      return m_sets.get(index);
+    }
+    
+    /**
+     * Get an iterator that can be used to access all the item sets.
+     * 
+     * @return an iterator.
+     */
+    public Iterator<FrequentBinaryItemSet> iterator() {
+      return m_sets.iterator();
+    }
+    
+    /**
+     * Get the total number of transactions in the data that the item
+     * sets were derived from.
+     * 
+     * @return the total number of transactions in the data.
+     */
+    public int getNumberOfTransactions() {
+      return m_numberOfTransactions;
+    }
+    
+    /**
+     * Add an item set.
+     * 
+     * @param setToAdd the item set to add.
+     */
+    public void addItemSet(FrequentBinaryItemSet setToAdd) {
+      m_sets.add(setToAdd);
+    }
+    
+    /**
+     * Sort the item sets according to the supplied comparator.
+     * 
+     * @param comp the comparator to use.
+     */
+    public void sort(Comparator<FrequentBinaryItemSet> comp) {
+      Collections.sort(m_sets, comp);
+    }
+    
+    /**
+     * Get the number of item sets.
+     * 
+     * @return the number of item sets.
+     */
+    public int size() {
+      return m_sets.size();
+    }
+    
+    /**
+     * Sort the item sets. Sorts by item set length. Ties are broken by 
comparing
+     * the items in the two item sets.
+     */
+    public void sort() {
+      Comparator<FrequentBinaryItemSet> compF = new 
Comparator<FrequentBinaryItemSet>() {
+        public int compare(FrequentBinaryItemSet one, FrequentBinaryItemSet 
two) {
+          Collection<BinaryItem> compOne = one.getItems();
+          Collection<BinaryItem> compTwo = two.getItems();
+          
+//          if (one.getSupport() == two.getSupport()) {
+            // if supports are equal then list shorter item sets before 
longer ones
+            if (compOne.size() < compTwo.size()) {
+              return -1;
+            } else if (compOne.size() > compTwo.size()) {
+              return 1;
+            } else {
+              // compare items
+              Iterator<BinaryItem> twoIterator = compTwo.iterator();
+              for (BinaryItem oneI : compOne) {
+                BinaryItem twoI = twoIterator.next();
+                int result = oneI.compareTo(twoI);
+                if (result != 0) {
+                  return result;
+                }
+              }
+              return 0; // equal
+            }
+            
+//            return 0;
+    /*      } else if (one.getSupport() > two.getSupport()) {
+            // reverse ordering (i.e. descending by support)
+            return -1;
+          } */
+          
+    //      return 1;
+        }
+      };
+      
+      sort(compF);
+    }
+    
+    /**
+     * Get a textual description of this list of item sets.
+     * 
+     * @param numSets the number of item sets to display.
+     * @return a textual description of the item sets.
+     */
+    public String toString(int numSets) {
+      if (m_sets.size() == 0) {
+        return "No frequent items sets found!";
+      }
+      
+      StringBuffer result = new StringBuffer();
+      result.append("" + m_sets.size() + " frequent item sets found");
+      if (numSets > 0) {
+        result.append(" , displaying " + numSets);
+      }
+      result.append(":\n\n");
+      
+      int count = 0;
+      for (FrequentBinaryItemSet i : m_sets) {
+        if (numSets > 0 && count > numSets) {
+          break;
+        }
+        result.append(i.toString() + "\n");
+        count++;
+      }
+      
+      return result.toString();
+    }
+  }
+  
+  /**
+   * This class holds the counts for projected tree nodes
+   * and header lists.
+   */
+  protected static class ShadowCounts implements Serializable {
+    
+    /** For serialization */
+    private static final long serialVersionUID = 4435433714185969155L;
+    
+    /** Holds the counts at different recursion levels */
+    private ArrayList<Integer> m_counts = new ArrayList<Integer>();
+    
+    /**
+     * Get the count at the specified recursion depth.
+     * 
+     * @param recursionLevel the depth of the recursion.
+     * @return the count.
+     */
+    public int getCount(int recursionLevel) {
+      if (recursionLevel >= m_counts.size()) {
+        return 0;
+      } else {
+        return m_counts.get(recursionLevel);
+      }
+    }
+    
+    /**
+     * Increase the count at a given recursion level.
+     * 
+     * @param recursionLevel the level at which to increase the count.
+     * @param incr the amount by which to increase the count.
+     */
+    public void increaseCount(int recursionLevel, int incr) {
+      // basically treat the list like a stack where we
+      // can add a new element, or increment the element
+      // at the top
+      
+      if (recursionLevel == m_counts.size()) {
+        // new element
+        m_counts.add(incr);
+      } else if (recursionLevel == m_counts.size() - 1) {
+        // otherwise increment the top
+        int n = m_counts.get(recursionLevel).intValue();
+        m_counts.set(recursionLevel, (n + incr));
+      }
+    }
+    
+    /**
+     * Remove the count at the given recursion level.
+     * 
+     * @param recursionLevel the level at which to remove the count.
+     */
+    public void removeCount(int recursionLevel) {
+      if (recursionLevel < m_counts.size()) {
+        m_counts.remove(recursionLevel);
+      }
+    }
+  }
+  
+  /**
+   * A node in the FP-tree.
+   */
+  protected static class FPTreeNode implements Serializable {
+                
+    /** For serialization */
+    private static final long serialVersionUID = 4396315323673737660L;
+
+    /** link to another sibling at this level in the tree */
+    protected FPTreeNode m_levelSibling;
+    
+    /** link to the parent node */
+    protected FPTreeNode m_parent;
+    
+    /** item at this node */
+    protected BinaryItem m_item;
+    
+    /** ID (for graphing the tree) */
+    protected int m_ID;
+    
+    /** the children of this node */
+    protected Map<BinaryItem, FPTreeNode> m_children = 
+      new HashMap<BinaryItem, FPTreeNode>();
+    
+    /** counts associated with projected versions of this node */
+    protected ShadowCounts m_projectedCounts = new ShadowCounts();
+    
+    /**
+     * Construct a new node with the given parent link and item.
+     * 
+     * @param parent a pointer to the parent of this node.
+     * @param item the item at this node.
+     */
+    public FPTreeNode(FPTreeNode parent, BinaryItem item) {
+      m_parent = parent;
+      m_item = item;
+    }
+    
+    /**
+     * Insert an item set into the tree at this node. Removes the first item
+     * from the supplied item set and makes a recursive call to insert the
+     * remaining items.
+     * 
+     * @param itemSet the item set to insert.
+     * @param headerTable the header table for the tree.
+     * @param incr the amount by which to increase counts.
+     */
+    public void addItemSet(Collection<BinaryItem> itemSet, 
+        Map<BinaryItem, FPTreeRoot.Header> headerTable, int incr) {
+     
+      Iterator<BinaryItem> i = itemSet.iterator();
+      
+      if (i.hasNext()) {
+        BinaryItem first = i.next();
+        
+        FPTreeNode aChild;
+        if (!m_children.containsKey(first)) {
+          // not in the tree, so add it.
+          aChild = new FPTreeNode(this, first);
+          m_children.put(first, aChild);
+          
+          // update the header
+          if (!headerTable.containsKey(first)) {
+            headerTable.put(first, new FPTreeRoot.Header());
+          }
+          
+          // append new node to header list
+          headerTable.get(first).addToList(aChild);
+        } else {
+          // get the appropriate child node
+          aChild = m_children.get(first);
+        }
+        
+        // update counts in header table
+        headerTable.get(first).getProjectedCounts().increaseCount(0, incr);
+        
+        // increase the child's count
+        aChild.increaseProjectedCount(0, incr);
+        
+        // proceed recursively
+        itemSet.remove(first);        
+        aChild.addItemSet(itemSet, headerTable, incr);
+      }
+    }
+    
+    /**
+     * Increase the projected count at the given recursion level at this
+     * node
+     * 
+     * @param recursionLevel the recursion level to increase the node count
+     * at.
+     * @param incr the amount by which to increase the count.
+     */
+    public void increaseProjectedCount(int recursionLevel, int incr) {
+      m_projectedCounts.increaseCount(recursionLevel, incr);
+    }
+    
+    /**
+     * Remove the projected count at the given recursion level for this
+     * node.
+     * 
+     * @param recursionLevel the recursion level at which to remove the 
count.
+     */
+    public void removeProjectedCount(int recursionLevel) {
+      m_projectedCounts.removeCount(recursionLevel);
+    }
+    
+    /**
+     * Get the projected count at the given recursion level for this node.
+     * 
+     * @param recursionLevel the recursion level at which to get the count.
+     * @return the count.
+     */
+    public int getProjectedCount(int recursionLevel) {
+      return m_projectedCounts.getCount(recursionLevel);
+    }
+    
+    /**
+     * Get the parent node.
+     * 
+     * @return the parent node.
+     */
+    public FPTreeNode getParent() {
+      return m_parent;
+    }
+    
+    /**
+     * Get the item at this node.
+     * 
+     * @return the item at this node.
+     */
+    public BinaryItem getItem() {
+      return m_item;
+    }    
+    
+    /**
+     * Return a textual description of this node for a given recursion
+     * level.
+     * 
+     * @param recursionLevel the recursion depth to use.
+     * @return a textual description of this node.
+     */
+    public String toString(int recursionLevel) {
+      return toString("", recursionLevel);
+    }
+
+    /**
+     * Return a textual description of this node for a given recursion
+     * level.
+     * 
+     * @param prefix a prefix string to prepend.
+     * @param recursionLevel the recursion level to use.
+     * @return a textual description of this node. 
+     */
+    public String toString(String prefix, int recursionLevel) {
+      StringBuffer buffer = new StringBuffer();
+      buffer.append(prefix);
+      buffer.append("|  ");
+      buffer.append(m_item.toString());
+      buffer.append(" (");
+      buffer.append(m_projectedCounts.getCount(recursionLevel));
+      buffer.append(")\n");
+      
+      for (FPTreeNode node : m_children.values()) {
+        buffer.append(node.toString(prefix + "|  ", recursionLevel));
+      }
+      return buffer.toString();
+    }
+    
+    protected int assignIDs(int lastID) {
+      int currentLastID = lastID + 1;
+      m_ID = currentLastID;
+      if (m_children != null) {
+        Collection<FPTreeNode> kids = m_children.values();
+        for (FPTreeNode n : kids) {
+          currentLastID = n.assignIDs(currentLastID);
+        }
+      }
+      return currentLastID;
+    }
+    
+    /**
+     * Generate a dot graph description string for the tree.
+     * 
+     * @param text a StringBuffer to store the graph description
+     * in.
+     */
+    public void graphFPTree(StringBuffer text) {
+      if (m_children != null) {
+        Collection<FPTreeNode> kids = m_children.values();
+        for (FPTreeNode n : kids) {
+          text.append("N" + n.m_ID);
+          text.append(" [label=\"");
+          text.append(n.getItem().toString() + " (" + n.getProjectedCount(0) 
+ ")\\n");
+          text.append("\"]\n");
+          n.graphFPTree(text);
+          text.append("N" + m_ID + "->" + "N" + n.m_ID + "\n");
+        }
+      }
+    }
+  }
+  
+  /**
+   * Root of the FPTree
+   */
+  private static class FPTreeRoot extends FPTreeNode {
+    
+    /** For serialization */
+    private static final long serialVersionUID = 632150939785333297L;
+
+    /**
+     * Stores a header entry for an FPTree 
+     */
+    protected static class Header implements Serializable {
+      
+      /** For serialization */
+      private static final long serialVersionUID = -6583156284891368909L;
+      
+      /** The list of pointers into the tree structure */
+      protected List<FPTreeNode> m_headerList = new LinkedList<FPTreeNode>();
+      
+      /** Projected header counts for this entry */
+      protected ShadowCounts m_projectedHeaderCounts = new ShadowCounts();
+      
+      /**
+       * Add a tree node into the list for this header entry.
+       * 
+       * @param toAdd the node to add.
+       */
+      public void addToList(FPTreeNode toAdd) {
+        m_headerList.add(toAdd);
+      }
+      
+      /**
+       * Get the list of nodes for this header entry.
+       * 
+       * @return the list of nodes for this header entry.
+       */
+      public List<FPTreeNode> getHeaderList() {
+        return m_headerList;
+      }
+      
+      /**
+       * Get the projected counts for this header entry.
+       * 
+       * @return the projected counts for this header entry.
+       */
+      public ShadowCounts getProjectedCounts() {
+        return m_projectedHeaderCounts;
+      }
+    }
+    
+    /** Stores the header table as mapped Header entries */
+    protected Map<BinaryItem, Header> m_headerTable = 
+      new HashMap<BinaryItem, Header>();
+    
+    /**
+     * Create a new FPTreeRoot.
+     */
+    public FPTreeRoot() {
+      super(null, null);
+    }
+    
+    /**
+     * Insert an item set into the tree.
+     * 
+     * @param itemSet the item set to insert into the tree.
+     * @param incr the increment by which to increase counters.
+     */
+    public void addItemSet(Collection<BinaryItem> itemSet, int incr) {
+      super.addItemSet(itemSet, m_headerTable, incr);
+    }
+    
+    /**
+     * Get the header table for this tree.
+     * 
+     * @return the header table for this tree.
+     */
+    public Map<BinaryItem, Header> getHeaderTable() {
+      return m_headerTable;
+    }
+    
+    public boolean isEmpty(int recursionLevel) {
+      for (FPTreeNode c : m_children.values()) {
+        if (c.getProjectedCount(recursionLevel) > 0) {
+          return false;
+        }
+      }
+      return true;
+    }
+    
+    /**
+     * Get a textual description of the tree at a given recursion
+     * (projection) level.
+     * 
+     * @param pad the string to use as a prefix for indenting nodes.
+     * @param recursionLevel the recursion level (projection) to use.
+     * @return the textual description of the tree.
+     */
+    public String toString(String pad, int recursionLevel) {
+      StringBuffer result = new StringBuffer();
+      result.append(pad);
+      result.append("+ ROOT\n");
+
+      for (FPTreeNode node : m_children.values()) {
+        result.append(node.toString(pad + "|  ", recursionLevel));
+      }
+      return result.toString();
+    }
+
+    /**
+     * Get a textual description of the header table for this tree.
+     * 
+     * @param recursionLevel the recursion level to use.
+     * @return a textual description of the header table for this
+     * tree at a given recursion level.
+     */
+    public String printHeaderTable(int recursionLevel) {
+      StringBuffer buffer = new StringBuffer();
+      for (BinaryItem item : m_headerTable.keySet()) {
+        buffer.append(item.toString());
+        buffer.append(" : ");
+        
buffer.append(m_headerTable.get(item).getProjectedCounts().getCount(recursionLevel));
+        buffer.append("\n");
+      }
+      return buffer.toString();
+    }
+    
+    public void graphHeaderTable(StringBuffer text, int maxID) {
+
+      for (BinaryItem item : m_headerTable.keySet()) {
+        Header h = m_headerTable.get(item);
+        List<FPTreeNode> headerList = h.getHeaderList();
+        if (headerList.size() > 1) {
+          text.append("N" + maxID + " [label=\"" + 
headerList.get(0).getItem().toString() 
+              + " (" + h.getProjectedCounts().getCount(0) + ")"
+              + "\" shape=plaintext]\n");
+
+          text.append("N" + maxID + "->" + "N" + headerList.get(1).m_ID + 
"\n");
+          for (int i = 1; i < headerList.size() - 1; i++) {
+            text.append("N" + headerList.get(i).m_ID + "->" + "N" + 
headerList.get(i+1).m_ID + "\n");
+          }
+          maxID++;
+        }
+      }
+    }
+  }
+  
+  /**
+   * Class for storing and manipulating an association rule. Also has a 
utility
+   * routine for generating (by brute force) all the association rules that 
meet
+   * a given metric threshold from a list of large item sets.
+   * 
+   * @author Mark Hall (mhall{[at]}pentaho{[dot]}com).
+   */
+  /**
+   * @author mhall
+   *
+   */
+  public static class AssociationRule implements Serializable, 
Comparable<AssociationRule> {
+    
+    /** For serialization */
+    private static final long serialVersionUID = -661269018702294489L;
+
+    /** Enum for holding different metric types */
+    public static enum METRIC_TYPE {
+      CONFIDENCE("conf") {
+        double compute(int premiseSupport, int consequenceSupport, 
+            int totalSupport, int totalTransactions) {
+          
+          return (double)totalSupport / (double)premiseSupport;
+        }
+      },
+      LIFT("lift") {
+        double compute(int premiseSupport, int consequenceSupport, 
+            int totalSupport, int totalTransactions) {
+          
+          double confidence = 
+            METRIC_TYPE.CONFIDENCE.compute(premiseSupport, 
consequenceSupport, 
+                totalSupport, totalTransactions);
+          return confidence / ((double)consequenceSupport /
+              (double)totalTransactions);
+        }
+      },
+      LEVERAGE("lev") {
+        double compute(int premiseSupport, int consequenceSupport, 
+            int totalSupport, int totalTransactions) {
+          
+          double coverageForItemSet = (double)totalSupport /
+            (double)totalTransactions;
+          double expectedCoverageIfIndependent = 
+            ((double)premiseSupport / (double)totalTransactions) *
+            ((double)consequenceSupport / (double)totalTransactions);
+          return coverageForItemSet - expectedCoverageIfIndependent;
+        }
+      },
+      CONVICTION("conv") {
+        double compute(int premiseSupport, int consequenceSupport, 
+            int totalSupport, int totalTransactions) {
+          
+          double num = 
+            (double)premiseSupport * (double)(totalTransactions - 
consequenceSupport) /
+            (double)totalTransactions;
+          double denom = premiseSupport - totalSupport + 1;
+          return num / denom;
+        }
+      };
+      
+      private final String m_stringVal;
+      METRIC_TYPE(String name) {
+        m_stringVal = name;
+      }
+      
+      abstract double compute(int premiseSupport, int consequenceSupport, 
+          int totalSupport, int totalTransactions);
+      
+      public String toString() {
+        return m_stringVal;
+      }
+      
+      public String toStringMetric(int premiseSupport, int 
consequenceSupport,
+          int totalSupport, int totalTransactions) {
+        return m_stringVal + ":(" + 
Utils.doubleToString(compute(premiseSupport, consequenceSupport,
+            totalSupport, totalTransactions), 2) + ")";
+      }
+    }
+    
+    /** Tags for display in the GUI */
+    public static final Tag[] TAGS_SELECTION = {
+      new Tag(METRIC_TYPE.CONFIDENCE.ordinal(), "Confidence"),
+      new Tag(METRIC_TYPE.LIFT.ordinal(), "Lift"),
+      new Tag(METRIC_TYPE.LEVERAGE.ordinal(), "Leverage"),
+      new Tag(METRIC_TYPE.CONVICTION.ordinal(), "Conviction")
+    };
+    
+    /** The metric type for this rule */
+    protected METRIC_TYPE m_metricType = METRIC_TYPE.CONFIDENCE;
+    
+    /** The premise of the rule */
+    protected Collection<BinaryItem> m_premise;
+    
+    /** The consequence of the rule */
+    protected Collection<BinaryItem> m_consequence;
+    
+    /** The support for the premise */
+    protected int m_premiseSupport;
+    
+    /** The support for the consequence */
+    protected int m_consequenceSupport;
+    
+    /** The total support for the item set (premise + consequence) */
+    protected int m_totalSupport;
+    
+    /** The total number of transactions in the data */
+    protected int m_totalTransactions;
+    
+    /**
+     * Construct a new association rule.
+     * 
+     * @param premise the premise of the rule
+     * @param consequence the consequence of the rule
+     * @param metric the metric for the rule
+     * @param premiseSupport the support of the premise
+     * @param consequenceSupport the support of the consequence
+     * @param totalSupport the total support of the rule
+     * @param totalTransactions the number of transactions in the data
+     */
+    public AssociationRule(Collection<BinaryItem> premise, 
+        Collection<BinaryItem> consequence, METRIC_TYPE metric,
+        int premiseSupport, int consequenceSupport,
+        int totalSupport, int totalTransactions) {
+      m_premise = premise;
+      m_consequence = consequence;
+      m_metricType = metric;
+      m_premiseSupport = premiseSupport;
+      m_consequenceSupport = consequenceSupport;
+      m_totalSupport = totalSupport;
+      m_totalTransactions = totalTransactions;
+    }
+    
+    /**
+     * Get the premise of this rule.
+     * 
+     * @return the premise of this rule.
+     */
+    public Collection<BinaryItem> getPremise() {
+      return m_premise;
+    }
+    
+    /**
+     * Get the consequence of this rule.
+     * 
+     * @return the consequence of this rule.
+     */
+    public Collection<BinaryItem> getConsequence() {
+      return m_consequence;
+    }
+    
+    /**
+     * Get the metric type of this rule (e.g. confidence).
+     * 
+     * @return the metric type of this rule.
+     */
+    public METRIC_TYPE getMetricType() {
+      return m_metricType;
+    }
+    
+    /**
+     * Get the value of the metric for this rule. 
+     * 
+     * @return the value of the metric for this rule.
+     */
+    public double getMetricValue() {
+      return m_metricType.compute(m_premiseSupport, m_consequenceSupport, 
+          m_totalSupport, m_totalTransactions);
+    }
+    
+    /**
+     * Get the support for the premise.
+     * 
+     * @return the support for the premise.
+     */
+    public int getPremiseSupport() {
+      return m_premiseSupport;
+    }
+    
+    /**
+     * Get the support for the consequence.
+     * 
+     * @return the support for the consequence.
+     */
+    public int getConsequenceSupport() {
+      return m_consequenceSupport;
+    }
+    
+    /**
+     * Get the total support for this rule (premise + consequence).
+     * 
+     * @return the total support for this rule.
+     */
+    public int getTotalSupport() {
+      return m_totalSupport;
+    }
+    
+    /**
+     * Get the total number of transactions in the data.
+     * 
+     * @return the total number of transactions in the data.
+     */
+    public int getTotalTransactions() {
+      return m_totalTransactions;
+    }
+    
+    /**
+     * Compare this rule to the supplied rule.
+     * 
+     * @param other the rule to compare to.
+     * @return the result of the comparison.
+     */
+    public int compareTo(AssociationRule other) {
+      return -Double.compare(getMetricValue(), other.getMetricValue());
+    }
+    
+    /**
+     * Return true if this rule is equal to the supplied one.
+     * 
+     * @return true if this rule is the same as the supplied rule.
+     */
+    public boolean equals(Object other) {
+      if (!(other instanceof AssociationRule)) {
+        return false;
+      }
+      
+      AssociationRule otherRule = (AssociationRule)other;
+      boolean result = m_premise.equals(otherRule.getPremise()) &&
+        m_consequence.equals(otherRule.getConsequence()) && 
+        (getMetricValue() == otherRule.getMetricValue());
+      
+      return result;
+    }
+    
+    /**
+     * Get a textual description of this rule.
+     * 
+     * @return a textual description of this rule.
+     */
+    public String toString() {
+      StringBuffer result = new StringBuffer();
+      
+      result.append(m_premise.toString() + ": " + m_premiseSupport 
+          + " ==> " + m_consequence.toString() + ": " + m_totalSupport 
+          + "   ");
+      for (METRIC_TYPE m : METRIC_TYPE.values()) {
+        if (m.equals(m_metricType)) {
+          result.append("<" + 
+              m.toStringMetric(m_premiseSupport, m_consequenceSupport, 
+                  m_totalSupport, m_totalTransactions) + "> ");
+        } else {
+          result.append("" + 
+              m.toStringMetric(m_premiseSupport, m_consequenceSupport, 
+                  m_totalSupport, m_totalTransactions) + " ");
+        }
+      }
+      return result.toString();
+    }
+    
+    private static void nextSubset(boolean[] subset) {
+      for (int i = 0; i < subset.length; i++) {
+        if (!subset[i]) {
+          subset[i] = true;
+          break;
+        } else {
+          subset[i] = false;
+        }
+      }
+    }
+    
+    private static Collection<BinaryItem> getPremise(FrequentBinaryItemSet 
fis, 
+        boolean[] subset) {
+      boolean ok = false;
+      for (int i = 0; i < subset.length; i++){
+        if (!subset[i]) {
+          ok = true;
+          break;
+        }
+      }      
+      
+      if (!ok) {
+        return null;
+      }
+      
+      List<BinaryItem> premise = new ArrayList<BinaryItem>();
+      ArrayList<BinaryItem> items = new 
ArrayList<BinaryItem>(fis.getItems());
+
+      
+      for (int i = 0; i < subset.length; i++) {
+        if (subset[i]) {
+          premise.add(items.get(i));
+        }
+      }
+      return premise;
+    }
+    
+    private static Collection<BinaryItem> 
getConsequence(FrequentBinaryItemSet fis,
+        boolean[] subset) {
+      List<BinaryItem> consequence = new ArrayList<BinaryItem>();
+      ArrayList<BinaryItem> items = new 
ArrayList<BinaryItem>(fis.getItems());
+      
+      for (int i = 0; i < subset.length; i++) {
+        if (!subset[i]) {
+          consequence.add(items.get(i));
+        }
+      }
+      return consequence;
+    }
+    
+    
+    /**
+     * Generate all association rules, from the supplied frequet item sets,
+     * that meet a given minimum metric threshold. Uses a brute force 
approach.
+     * 
+     * @param largeItemSets the set of frequent item sets
+     * @param metricToUse the metric to use
+     * @param metricThreshold the threshold value that a rule must meet
+     * @param totalTransactions the total number of transactions in the data
+     * @return a list of association rules
+     */
+    public static List<AssociationRule> 
+      generateRulesBruteForce(FrequentItemSets largeItemSets, METRIC_TYPE 
metricToUse, 
+          double metricThreshold, int totalTransactions) {
+      
+      List<AssociationRule> rules = new ArrayList<AssociationRule>();
+      largeItemSets.sort();
+      Map<Collection<BinaryItem>, Integer> frequencyLookup =
+        new HashMap<Collection<BinaryItem>, Integer>();
+      
+      Iterator<FrequentBinaryItemSet> setI = largeItemSets.iterator();
+      // process each large item set
+      while (setI.hasNext()) {
+        FrequentBinaryItemSet fis = setI.next();
+        frequencyLookup.put(fis.getItems(), fis.getSupport());
+        if (fis.getItems().size() > 1) {
+          // generate all the possible subsets for the premise
+          boolean[] subset = new boolean[fis.getItems().size()];
+          Collection<BinaryItem> premise = null;
+          Collection<BinaryItem> consequence = null;
+          while ((premise = getPremise(fis, subset)) != null) {
+            if (premise.size() > 0 && premise.size() < 
fis.getItems().size()) {
+              consequence = getConsequence(fis, subset);
+              int totalSupport = fis.getSupport();
+              int supportPremise = frequencyLookup.get(premise).intValue();
+              int supportConsequence = 
frequencyLookup.get(consequence).intValue();
+              
+              // a candidate rule
+              AssociationRule candidate = 
+                new AssociationRule(premise, consequence, metricToUse, 
supportPremise,
+                    supportConsequence, totalSupport, totalTransactions);
+              if (candidate.getMetricValue() > metricThreshold) {
+                // accept this rule
+                rules.add(candidate);
+              }              
+            }
+            nextSubset(subset);
+          }
+        }
+      }
+      
+      return rules;
+    }
+  }
+  
+  /** The number of rules to find */
+  protected int m_numRulesToFind = 10;
+  //protected double m_upperBoundMinSupport = 0.36;
+  
+  /** The upper bound on the minimum support */
+  protected double m_upperBoundMinSupport = 1.0;
+  
+  /** The lower bound on minimum support */
+  protected double m_lowerBoundMinSupport = 0.1;
+  
+  /** The amount by which to decrease the support in each iteration */
+  protected double m_delta = 0.05;
+  
+  /** 
+   * If true, just all rules meeting the lower bound on the minimum
+   * support will be found. The number of rules to find will be
+   * ignored and the iterative reduction of support will not
+   * be done. 
+   */
+  protected boolean m_findAllRulesForSupportLevel = false;
+  
+  //protected double m_lowerBoundMinSupport = 0.0;
+  
+  /** The index (1 based) of binary attributes to treat as the positive 
value */
+  protected int m_positiveIndex = 2;
+  
+  protected AssociationRule.METRIC_TYPE m_metric = 
+    AssociationRule.METRIC_TYPE.CONFIDENCE;
+  
+  protected double m_metricThreshold = 0.9;
+  
+  /** Holds the large item sets found */
+  protected FrequentItemSets m_largeItemSets;
+  
+  /** Holds the rules */
+  protected List<AssociationRule> m_rules;
+  
+  // maximum number of items in a large item set (zero means no limit)
+  protected int m_maxItems = -1;
+  
+  /**
+   * Returns default capabilities of the classifier.
+   *
+   * @return      the capabilities of this classifier
+   */
+  public Capabilities getCapabilities() {
+    Capabilities result = super.getCapabilities();
+    result.disableAll();
+
+    // enable what we can handle
+    
+    // attributes
+    result.enable(Capability.UNARY_ATTRIBUTES);
+    result.enable(Capability.BINARY_ATTRIBUTES);
+    result.enable(Capability.MISSING_VALUES);
+
+    result.enable(Capability.NO_CLASS);
+    
+    return result;
+  }
+  
+  /**
+   * Returns a string describing this associator
+   * 
+   * @return a description of the evaluator suitable for
+   * displaying in the explorer/experimenter gui
+   */
+  public String globalInfo() {
+    return "Class implementing the FP-growth algorithm for finding" +
+               " large item sets without candidate generation. Iteratively" +
+               " reduces the minimum support until it finds the required" +
+               " number of rules with the given minimum metric." +
+               " For more information see:\n\n" +
+               getTechnicalInformation().toString();
+  }
+  
+  /**
+   * Returns an instance of a TechnicalInformation object, containing 
+   * detailed information about the technical background of this class,
+   * e.g., paper reference or book this class is based on.
+   * 
+   * @return the technical information about this class
+   */
+  public TechnicalInformation getTechnicalInformation() {
+    TechnicalInformation        result;
+    
+    result = new TechnicalInformation(Type.INPROCEEDINGS);
+    result.setValue(Field.AUTHOR, "J. Han and J.Pei and Y. Yin");
+    result.setValue(Field.TITLE, "Mining frequent patterns without candidate 
generation");
+    result.setValue(Field.BOOKTITLE, "Proceedings of the 2000 ACM-SIGMID 
International" +
+               " Conference on Management of Data");
+    result.setValue(Field.YEAR, "2000");
+    result.setValue(Field.PAGES, "1-12");
+    
+    return result;
+  }
+  
+  
+  /**
+   * Get the singleton items in the data
+   * 
+   * @param data the Instances to process
+   * @return a list of singleton item sets
+   * @throws Exception if the singletons can't be found for some reason
+   */
+  protected ArrayList<BinaryItem> getSingletons(Instances data) throws 
Exception {
+    ArrayList<BinaryItem> singletons = new ArrayList<BinaryItem>();
+    
+    for (int i = 0; i < data.numAttributes(); i++) {
+      singletons.add(new BinaryItem(data.attribute(i), m_positiveIndex - 1));
+    }
+    
+    for (int i = 0; i < data.numInstances(); i++) {
+      Instance current = data.instance(i);
+      if (current instanceof SparseInstance) {
+        for (int j = 0; j < current.numValues(); j++) {
+          int attIndex = current.index(j);
+          singletons.get(attIndex).increaseFrequency();
+        }
+      } else {
+        for (int j = 0; j < data.numAttributes(); j++) {
+          if (!current.isMissing(j)) {
+            if (current.attribute(j).numValues() == 1 
+                || current.value(j) == m_positiveIndex - 1) {
+              singletons.get(j).increaseFrequency();
+            }
+          }
+        }
+      }
+    }
+    
+    return singletons;
+  }
+  
+  /*protected ArrayList<BinaryItem> getFrequent(ArrayList<BinaryItem> items, 
int minSupport) {
+    ArrayList<BinaryItem> frequent = new ArrayList<BinaryItem>();
+    for (BinaryItem b : items) {
+      if (b.getFrequency() > minSupport) {
+        frequent.add(b);
+      }
+    }
+    
+    // sort in descending order of support
+    Collections.sort(frequent);
+    return frequent;
+  } */
+  
+  /**
+   * Construct the frequent pattern tree by inserting each transaction
+   * in the data into the tree. Only those items from each transaction that
+   * meet the minimum support threshold are inserted.
+   * 
+   * @param singletons the singleton item sets
+   * @param data the Instances containing the transactions
+   * @param minSupport the minimum support
+   * @return the root of the tree
+   */
+  protected FPTreeRoot buildFPTree(ArrayList<BinaryItem> singletons, 
+      Instances data, int minSupport) {
+    
+    FPTreeRoot tree = new FPTreeRoot();
+   
+    for (int i = 0; i < data.numInstances(); i++) {
+      Instance current = data.instance(i);
+      ArrayList<BinaryItem> transaction = new ArrayList<BinaryItem>();
+      if (current instanceof SparseInstance) {
+        for (int j = 0; j < current.numValues(); j++) {
+          int attIndex = current.index(j);
+          if (singletons.get(attIndex).getFrequency() >= minSupport) {
+            transaction.add(singletons.get(attIndex));
+          }
+        }
+        Collections.sort(transaction);
+  
[truncated due to length]



[grex~subversion:59] (Commit message missing)

Tuve . Lofstrom 02/24/2010
  • Mysql
  • Glassfish
  • Jruby
  • Rails
  • Nblogo
Terms of Use; Privacy Policy;
© 2013, Oracle Corporation and/or its affiliates
(revision 20140418.2d69abc)
 
 
Close
loading
Please Confirm
Close