Class WekaUtil


  • public class WekaUtil
    extends java.lang.Object
    • Method Detail

      • getBasicLearners

        public static java.util.Collection<java.lang.String> getBasicLearners()
      • getBasicClassifiers

        public static java.util.Collection<java.lang.String> getBasicClassifiers()
      • getNativeMultiClassClassifiers

        public static java.util.Collection<java.lang.String> getNativeMultiClassClassifiers()
      • getBinaryClassifiers

        public static java.util.Collection<java.lang.String> getBinaryClassifiers()
      • getFeatureEvaluators

        public static java.util.Collection<java.lang.String> getFeatureEvaluators()
      • getSearchers

        public static java.util.Collection<java.lang.String> getSearchers()
      • getMetaLearners

        public static java.util.Collection<java.lang.String> getMetaLearners()
      • isValidPreprocessorCombination

        public static boolean isValidPreprocessorCombination​(java.lang.String searcher,
                                                             java.lang.String evaluator)
      • getAdmissibleSearcherEvaluatorCombinationsForAttributeSelection

        public static java.util.Collection<java.util.List<java.lang.String>> getAdmissibleSearcherEvaluatorCombinationsForAttributeSelection()
        Determines all attribute selection variants (search/evaluator combinations with default parametrization)
        Returns:
        Throws:
        org.api4.java.algorithm.exceptions.AlgorithmExecutionCanceledException
        java.lang.InterruptedException
        org.api4.java.algorithm.exceptions.AlgorithmTimeoutedException
      • needsBinarization

        public static boolean needsBinarization​(weka.core.Instances wekaInstances,
                                                boolean ignoreClassAttribute)
        Returns true if there is at least one nominal attribute in the given dataset that has more than 2 values.
        Parameters:
        wekaInstances - dataset that is checked
        ignoreClassAttribute - if true class attribute is ignored.
      • getPossibleClassValues

        public static java.util.Collection<java.lang.String> getPossibleClassValues​(weka.core.Instance instance)
      • getClassifierDescriptor

        public static java.lang.String getClassifierDescriptor​(weka.classifiers.Classifier c)
      • getPreprocessorDescriptor

        public static java.lang.String getPreprocessorDescriptor​(weka.attributeSelection.ASSearch c)
      • getPreprocessorDescriptor

        public static java.lang.String getPreprocessorDescriptor​(weka.attributeSelection.ASEvaluation c)
      • getDescriptor

        public static java.lang.String getDescriptor​(java.lang.Object o)
      • getOptionsOfWekaAlgorithm

        public static java.util.Collection<weka.core.Option> getOptionsOfWekaAlgorithm​(java.lang.Object o)
      • getClassNames

        public static java.util.List<java.lang.String> getClassNames​(weka.core.Instance instance)
      • getClassNameToIDMap

        public static java.util.Map<java.lang.String,​java.lang.Integer> getClassNameToIDMap​(weka.core.Instance instance)
      • getIntValOfClassName

        public static int getIntValOfClassName​(weka.core.Instance instance,
                                               java.lang.String className)
      • getClassSplitAssignments

        public static java.lang.String getClassSplitAssignments​(java.util.List<weka.core.Instances> split)
      • getInstancesOfClass

        public static weka.core.Instances getInstancesOfClass​(weka.core.Instances data,
                                                              java.util.Collection<java.lang.String> classNames)
      • getInstancesOfClass

        public static weka.core.Instances getInstancesOfClass​(weka.core.Instances data,
                                                              java.lang.String className)
      • getClassName

        public static java.lang.String getClassName​(weka.core.Instance instance)
      • getInstancesPerClass

        public static java.util.Map<java.lang.String,​weka.core.Instances> getInstancesPerClass​(weka.core.Instances data)
      • getNumberOfInstancesPerClass

        public static java.util.Map<java.lang.String,​java.lang.Integer> getNumberOfInstancesPerClass​(weka.core.Instances data)
      • getNumberOfInstancesFromClass

        public static int getNumberOfInstancesFromClass​(weka.core.Instances data,
                                                        java.lang.String c)
      • getNumberOfInstancesFromClass

        public static int getNumberOfInstancesFromClass​(weka.core.Instances data,
                                                        java.util.Collection<java.lang.String> cs)
      • getRelativeNumberOfInstancesFromClass

        public static double getRelativeNumberOfInstancesFromClass​(weka.core.Instances data,
                                                                   java.lang.String c)
      • getRelativeNumberOfInstancesFromClass

        public static double getRelativeNumberOfInstancesFromClass​(weka.core.Instances data,
                                                                   java.util.Collection<java.lang.String> cs)
      • getArbitrarySplit

        public static java.util.Collection<java.lang.Integer>[] getArbitrarySplit​(IWekaInstances data,
                                                                                  java.util.Random rand,
                                                                                  double... portions)
      • realizeSplit

        public static java.util.List<IWekaInstances> realizeSplit​(IWekaInstances data,
                                                                  java.util.Collection<java.lang.Integer>[] split)
      • realizeSplit

        public static java.util.List<weka.core.Instances> realizeSplit​(weka.core.Instances data,
                                                                       java.util.List<java.util.List<java.lang.Integer>> split)
      • realizeSplitAsCopiedInstances

        public static java.util.List<weka.core.Instances> realizeSplitAsCopiedInstances​(weka.core.Instances data,
                                                                                        java.util.List<java.util.List<java.lang.Integer>> split)
      • realizeSplitAsCopiedInstances

        public static java.util.List<IWekaInstances> realizeSplitAsCopiedInstances​(IWekaInstances data,
                                                                                   java.util.Collection<java.lang.Integer>[] split)
      • splitToJsonArray

        public static com.fasterxml.jackson.databind.node.ArrayNode splitToJsonArray​(java.util.Collection<java.lang.Integer>[] splitDecision)
      • getStratifiedSplit

        public static java.util.List<weka.core.Instances> getStratifiedSplit​(weka.core.Instances data,
                                                                             long seed,
                                                                             double portionOfFirstFold)
                                                                      throws org.api4.java.ai.ml.core.dataset.splitter.SplitFailedException,
                                                                             java.lang.InterruptedException
        Throws:
        org.api4.java.ai.ml.core.dataset.splitter.SplitFailedException
        java.lang.InterruptedException
      • getStratifiedSplit

        public static java.util.List<IWekaInstances> getStratifiedSplit​(IWekaInstances data,
                                                                        long seed,
                                                                        double portionOfFirstFold)
                                                                 throws org.api4.java.ai.ml.core.dataset.splitter.SplitFailedException,
                                                                        java.lang.InterruptedException
        Throws:
        org.api4.java.ai.ml.core.dataset.splitter.SplitFailedException
        java.lang.InterruptedException
      • getStratifiedSplit

        public static java.util.List<IWekaInstances> getStratifiedSplit​(IWekaInstances data,
                                                                        java.util.Random random,
                                                                        double portionOfFirstFold)
                                                                 throws org.api4.java.ai.ml.core.dataset.splitter.SplitFailedException,
                                                                        java.lang.InterruptedException
        Throws:
        org.api4.java.ai.ml.core.dataset.splitter.SplitFailedException
        java.lang.InterruptedException
      • getDatasetsInFolder

        public static java.util.List<java.io.File> getDatasetsInFolder​(java.io.File folder)
                                                                throws java.io.IOException
        Throws:
        java.io.IOException
      • getRefactoredInstances

        public static weka.core.Instances getRefactoredInstances​(weka.core.Instances data,
                                                                 java.util.Map<java.lang.String,​java.lang.String> classMap)
      • getRefactoredInstance

        public static weka.core.Instance getRefactoredInstance​(weka.core.Instance instance)
      • getRefactoredInstance

        public static weka.core.Instance getRefactoredInstance​(weka.core.Instance instance,
                                                               java.util.List<java.lang.String> classes)
      • getEmptySetOfInstancesWithRefactoredClass

        public static weka.core.Instances getEmptySetOfInstancesWithRefactoredClass​(weka.core.Instances instances)
      • getEmptySetOfInstancesWithRefactoredClass

        public static weka.core.Instances getEmptySetOfInstancesWithRefactoredClass​(weka.core.Instances instances,
                                                                                    java.util.List<java.lang.String> classes)
      • getAttributes

        public static java.util.List<weka.core.Attribute> getAttributes​(weka.core.Instances inst,
                                                                        boolean includeClassAttribute)
      • getAttributes

        public static java.util.List<weka.core.Attribute> getAttributes​(weka.core.Instance inst)
      • hasOnlyNumericAttributes

        public static boolean hasOnlyNumericAttributes​(weka.core.Instances instances)
      • getNewClassAttribute

        public static weka.core.Attribute getNewClassAttribute​(weka.core.Attribute attribute)
      • getNewClassAttribute

        public static weka.core.Attribute getNewClassAttribute​(weka.core.Attribute attribute,
                                                               java.util.List<java.lang.String> classes)
      • getReplacedAttributeList

        public static java.util.List<weka.core.Attribute> getReplacedAttributeList​(java.util.List<weka.core.Attribute> attributes,
                                                                                   weka.core.Attribute classAttribute)
      • mergeClassesOfInstances

        public static weka.core.Instances mergeClassesOfInstances​(weka.core.Instances data,
                                                                  java.util.Collection<java.lang.String> cluster1,
                                                                  java.util.Collection<java.lang.String> cluster2)
      • mergeClassesOfInstances

        public static weka.core.Instances mergeClassesOfInstances​(weka.core.Instances data,
                                                                  java.util.List<java.util.Set<java.lang.String>> instancesCluster)
      • getClassesDeclaredInDataset

        public static java.util.List<java.lang.String> getClassesDeclaredInDataset​(weka.core.Instances data)
      • getClassesActuallyContainedInDataset

        public static java.util.Collection<java.lang.String> getClassesActuallyContainedInDataset​(weka.core.Instances data)
      • getClassesAsArray

        public static double[] getClassesAsArray​(weka.core.Instances inst)
      • getClassesAsList

        public static java.util.List<java.lang.Double> getClassesAsList​(weka.core.Instances inst)
      • areInstancesEqual

        public static boolean areInstancesEqual​(weka.core.Instance a,
                                                weka.core.Instance b)
      • instancesToJsonString

        public static java.lang.String instancesToJsonString​(weka.core.Instances data)
      • jsonStringToInstances

        public static weka.core.Instances jsonStringToInstances​(java.lang.String json)
                                                         throws java.lang.Exception
        Throws:
        java.lang.Exception
      • getIndicesOfContainedInstances

        public static int[] getIndicesOfContainedInstances​(weka.core.Instances dataset,
                                                           weka.core.Instances subset)
        Compute indices of instances of the original data set that are contained in the given subset. This does only work for data sets that contain an instance at most once!
        Parameters:
        dataset -
        subset -
        Returns:
      • useFilterOnSingleInstance

        public static weka.core.Instance useFilterOnSingleInstance​(weka.core.Instance instance,
                                                                   weka.filters.Filter filter)
                                                            throws java.lang.Exception
        Throws:
        java.lang.Exception
      • removeAttribute

        public static weka.core.Instances removeAttribute​(weka.core.Instances data,
                                                          int attribute)
                                                   throws java.lang.Exception
        Throws:
        java.lang.Exception
      • removeAttributes

        public static weka.core.Instances removeAttributes​(weka.core.Instances data,
                                                           java.util.Collection<java.lang.Integer> attributes)
                                                    throws java.lang.Exception
        Throws:
        java.lang.Exception
      • removeClassAttribute

        public static weka.core.Instances removeClassAttribute​(weka.core.Instances data)
                                                        throws java.lang.Exception
        Throws:
        java.lang.Exception
      • removeClassAttribute

        public static weka.core.Instance removeClassAttribute​(weka.core.Instance inst)
                                                       throws java.lang.Exception
        Throws:
        java.lang.Exception
      • cloneClassifier

        public static weka.classifiers.Classifier cloneClassifier​(weka.classifiers.Classifier c)
                                                           throws java.lang.Exception
        Throws:
        java.lang.Exception
      • getIndicesOfSubset

        public static int[] getIndicesOfSubset​(weka.core.Instances data,
                                               weka.core.Instances subset)
      • printNestedWekaClassifier

        public static java.lang.String printNestedWekaClassifier​(weka.classifiers.Classifier c)
      • isDebug

        public static boolean isDebug()
      • setDebug

        public static void setDebug​(boolean debug)
      • instances2matrix

        public static org.nd4j.linalg.api.ndarray.INDArray instances2matrix​(weka.core.Instances inst)
                                                                     throws java.lang.Exception
        Binarizes nominal features and returns an ND4J matrix
        Parameters:
        inst -
        Returns:
        Throws:
        java.lang.Exception