relational.classifier
Class Acmclassifier

java.lang.Object
  extended byrelational.classifier.Acmclassifier

public class Acmclassifier
extends java.lang.Object

Main class. All the procedures are called from here.


Field Summary
 double acc
           
 double[] accuracy
           
 int dataSet
           
 int dataSetSize
           
 double f1
           
 edu.uci.ics.jung.graph.impl.SparseGraph g
           
 Iterative iter
           
 double macro_f1
           
 double macro_precision
           
 double macro_recall
           
 int maxIterations
           
 int maxNumNeighbors
           
 double micro_f1
           
 double micro_precision
           
 double micro_recall
           
 double minWeight
           
 int neighb
           
 int numMax
           
 double precision
           
 java.util.HashMap probabilities
           
 double recall
           
 java.util.HashMap result
           
 weka.core.FastVector test
           
 int testSize
           
 weka.core.FastVector train
           
 int trainSize
           
static java.lang.String type
           
static java.util.HashMap weights
           
 java.util.HashMap weightsMap
           
static java.lang.Object[] weightsTrain
           
 
Constructor Summary
Acmclassifier(edu.uci.ics.jung.graph.impl.SparseGraph g, boolean multiLabel, java.util.HashMap labels, java.lang.String type)
           
 
Method Summary
 void combineModelsVoting(java.util.HashMap[] models, int numFolds)
          Combine models by using Voting
 void combineModelsVotingMulti(int numFolds, double th, java.util.HashMap[] models)
          Combine models by using Voting
 double evaluate(int numRuns, java.lang.String algorithm, java.util.HashMap labels, weka.core.FastVector[] traintest, java.util.HashMap weightsMap)
          Calls the classification algorithms and evaluates the results
 void evaluateMultiLabel(java.lang.String algorithm, int numRuns, java.util.HashMap labels, weka.core.FastVector[] traintest, java.util.HashMap weightsMap, double th)
          Calls the classification algorithms and evaluates the results (in the case of multilabel problem)
 void evaluateWithStacking(int numFolds, java.util.HashMap[] models)
          Combine models by using Stacking
 void evaluateWithStackingMulti(int numFolds, java.util.HashMap[] models, double th)
          Combine models by using Stacking
 java.util.HashMap initializeWithLocalClassification(weka.core.FastVector test, java.util.HashMap probs, double th, int Class)
          Initializes the test instances with the results of a local classifier (nominal initialization)(for binary classification)
 java.util.HashMap initializeWithLocalProbs(weka.core.FastVector test, java.util.HashMap probs)
          Initializes the test instances with the results of a local classifier
 java.util.HashMap initializeWithLocalProbsBin(weka.core.FastVector test, java.util.HashMap probs, int Class)
          Initializes the test instances with the results of a local classifier (binary classification)
 java.util.HashMap initializeWithPriorClass(weka.core.FastVector test, double[] priors)
          Initializes the test instances with the prior class calculated from the train set
 java.util.HashMap initializeWithPriorClass(weka.core.FastVector test, double[] priors, int Class)
          Initializes the test instances with the prior probability of the train set
 java.util.HashMap initializeWithPriors(weka.core.FastVector test, double[] priors)
          Initializes the test instances with the prior probability of the train set
 java.util.HashMap initializeWithPriors(weka.core.Instances test, double[] priors)
          Initializes the test instances with the prior probability of the train set
 java.util.HashMap initializeWithZero(weka.core.FastVector test)
          Initializes the test instances with zero
 java.util.HashMap initializeWithZero(weka.core.Instances test)
          Initializes the test instances with zero
 java.util.HashMap initializeWithZeroMulti(weka.core.FastVector test)
          Initializes the test instances with zero
static void main(java.lang.String[] args)
           
static weka.core.Instances setupInstances(weka.core.FastVector items, java.util.HashMap labels)
          Creates new instances
 weka.core.Instances setupInstancesBin(weka.core.FastVector items, int Class)
          Creates instances for binary classification (one-vs.rest approach)
 weka.core.Instances setupInstancesBinStack(weka.core.FastVector items, int klasse, java.util.HashMap[] models)
          Creates new instances for Stacking (binary classification)
static weka.core.Instances setupInstancesCosineSimBin(weka.core.FastVector items, int Class, java.util.HashMap sim)
          Creates instances containing the cosine similarity to neighbors (IndRVS algorithm)
static weka.core.Instances setupInstancesCount(weka.core.FastVector items, java.util.HashMap count)
          Creates new instances containing the values for the aggregation function WeightedCount
static weka.core.Instances setupInstancesCountBin(weka.core.FastVector items, int Class, java.util.HashMap count, java.lang.String traintest)
          Creates new instances containing the values for the aggregation function WeightedCount (binary classification)
static weka.core.Instances setupInstancesStack(weka.core.FastVector items, java.util.HashMap labels, java.util.HashMap[] models)
          Creates new instances for Stacking
static weka.core.Instances setupInstancesWithNeighbors(weka.core.FastVector items, java.util.HashMap labels, java.util.HashMap id2label, int numMaxNeighbors, java.util.HashMap weightsMap, java.util.HashMap nodes, java.lang.String traintest)
          Creates new instances for WeightedNaiveBayes
 weka.core.Instances setupInstancesWithNeighborsBin(weka.core.FastVector items, java.util.HashMap id2labels, int numMaxNeighbors, int klasse, java.util.HashMap weightsMap, java.util.HashMap nodes, java.lang.String traintest)
          Creates new instances WeightedNaiveBayes (binary classification)
 weka.core.Instance setupInstTest(BipartiteNode item, java.util.HashMap id2labels, weka.core.Instance v, int klasse, int numMaxNeighbors, java.util.HashMap weightsMap)
           
static weka.core.Instance setupInstTestHet(BipartiteNode item, java.util.HashMap id2label, weka.core.Instance v, int numMaxNeighbors, java.util.HashMap weightsMap)
           
static weka.core.Instance setupInstTestHom(Node item, java.util.HashMap id2label, weka.core.Instance v, int numMaxNeighbors, java.util.HashMap weightsMap)
           
 weka.core.Instance setupInstTestHom(Node item, java.util.HashMap id2labels, weka.core.Instance v, int klasse, int numMaxNeighbors, java.util.HashMap weightsMap)
           
 weka.core.Instance setupInstTrain(BipartiteNode item, java.util.HashMap id2labels, weka.core.Instance v, int klasse, int numMaxNeighbors, java.util.HashMap weightsMap)
           
static weka.core.Instance setupInstTrainHet(BipartiteNode item, java.util.HashMap id2label, weka.core.Instance v, int numMaxNeighbors, java.util.HashMap weightsMap)
           
static weka.core.Instance setupInstTrainHom(Node item, java.util.HashMap id2label, weka.core.Instance v, int numMaxNeighbors, java.util.HashMap weightsMap)
           
 weka.core.Instance setupInstTrainHom(Node item, java.util.HashMap id2labels, weka.core.Instance v, int klasse, int numMaxNeighbors, java.util.HashMap weightsMap)
           
static weka.core.SparseInstance setupSparseInstHet(BipartiteNode item, weka.core.SparseInstance v)
           
static weka.core.SparseInstance setupSparseInstHom(Node item, weka.core.SparseInstance v)
           
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

train

public weka.core.FastVector train

test

public weka.core.FastVector test

result

public java.util.HashMap result

weightsTrain

public static java.lang.Object[] weightsTrain

g

public edu.uci.ics.jung.graph.impl.SparseGraph g

neighb

public int neighb

dataSet

public int dataSet

weights

public static java.util.HashMap weights

minWeight

public double minWeight

probabilities

public java.util.HashMap probabilities

maxIterations

public int maxIterations

numMax

public int numMax

weightsMap

public java.util.HashMap weightsMap

micro_f1

public double micro_f1

macro_f1

public double macro_f1

micro_recall

public double micro_recall

iter

public Iterative iter

macro_recall

public double macro_recall

micro_precision

public double micro_precision

macro_precision

public double macro_precision

accuracy

public double[] accuracy

dataSetSize

public int dataSetSize

testSize

public int testSize

trainSize

public int trainSize

acc

public double acc

f1

public double f1

recall

public double recall

precision

public double precision

type

public static java.lang.String type

maxNumNeighbors

public int maxNumNeighbors
Constructor Detail

Acmclassifier

public Acmclassifier(edu.uci.ics.jung.graph.impl.SparseGraph g,
                     boolean multiLabel,
                     java.util.HashMap labels,
                     java.lang.String type)
              throws java.io.IOException,
                     javax.xml.parsers.ParserConfigurationException,
                     org.xml.sax.SAXException
Method Detail

setupInstancesBin

public weka.core.Instances setupInstancesBin(weka.core.FastVector items,
                                             int Class)
Creates instances for binary classification (one-vs.rest approach)

Parameters:
items - - data instances
Class - - the category
Returns:
Instances

setupInstancesBinStack

public weka.core.Instances setupInstancesBinStack(weka.core.FastVector items,
                                                  int klasse,
                                                  java.util.HashMap[] models)
Creates new instances for Stacking (binary classification)

Parameters:
items - - data instances
models - - the models to be combined
Returns:
Instances

setupInstancesStack

public static weka.core.Instances setupInstancesStack(weka.core.FastVector items,
                                                      java.util.HashMap labels,
                                                      java.util.HashMap[] models)
Creates new instances for Stacking

Parameters:
items - - data instances
labels - - classes contained in the data set
models - - the models to be combined
Returns:
Instances

setupInstancesCosineSimBin

public static weka.core.Instances setupInstancesCosineSimBin(weka.core.FastVector items,
                                                             int Class,
                                                             java.util.HashMap sim)
Creates instances containing the cosine similarity to neighbors (IndRVS algorithm)

Parameters:
items - - data instances
Class - - the category
sim - - calculated similarities
Returns:
Instances

setupInstancesCount

public static weka.core.Instances setupInstancesCount(weka.core.FastVector items,
                                                      java.util.HashMap count)
Creates new instances containing the values for the aggregation function WeightedCount

Parameters:
items - - data instances
count - - the weighted counts (regarding the classes of the neighbors)
Returns:
Instances

setupInstancesCountBin

public static weka.core.Instances setupInstancesCountBin(weka.core.FastVector items,
                                                         int Class,
                                                         java.util.HashMap count,
                                                         java.lang.String traintest)
Creates new instances containing the values for the aggregation function WeightedCount (binary classification)

Parameters:
items - - data
Class - - the category
count - - the weighted counts (regarding the classes of the neighbors)
Returns:
Instances

setupInstances

public static weka.core.Instances setupInstances(weka.core.FastVector items,
                                                 java.util.HashMap labels)
Creates new instances

Parameters:
items - - data
labels - - the classes contained in the data set
Returns:
Instances

setupSparseInstHet

public static weka.core.SparseInstance setupSparseInstHet(BipartiteNode item,
                                                          weka.core.SparseInstance v)

setupSparseInstHom

public static weka.core.SparseInstance setupSparseInstHom(Node item,
                                                          weka.core.SparseInstance v)

setupInstancesWithNeighbors

public static weka.core.Instances setupInstancesWithNeighbors(weka.core.FastVector items,
                                                              java.util.HashMap labels,
                                                              java.util.HashMap id2label,
                                                              int numMaxNeighbors,
                                                              java.util.HashMap weightsMap,
                                                              java.util.HashMap nodes,
                                                              java.lang.String traintest)
Creates new instances for WeightedNaiveBayes

Parameters:
items - - data
labels - - the classe of the data set
id2label - - contains initialization for test set
numMaxNeighbors - - the maximal number of neighbors to be considered
weightsMap - - contains the weigths of the graph
nodes - - nodes of the graph
traintest - - file path to the training and test data
Returns:
Instances

setupInstTrainHet

public static weka.core.Instance setupInstTrainHet(BipartiteNode item,
                                                   java.util.HashMap id2label,
                                                   weka.core.Instance v,
                                                   int numMaxNeighbors,
                                                   java.util.HashMap weightsMap)

setupInstTrainHom

public static weka.core.Instance setupInstTrainHom(Node item,
                                                   java.util.HashMap id2label,
                                                   weka.core.Instance v,
                                                   int numMaxNeighbors,
                                                   java.util.HashMap weightsMap)

setupInstTestHet

public static weka.core.Instance setupInstTestHet(BipartiteNode item,
                                                  java.util.HashMap id2label,
                                                  weka.core.Instance v,
                                                  int numMaxNeighbors,
                                                  java.util.HashMap weightsMap)

setupInstTestHom

public static weka.core.Instance setupInstTestHom(Node item,
                                                  java.util.HashMap id2label,
                                                  weka.core.Instance v,
                                                  int numMaxNeighbors,
                                                  java.util.HashMap weightsMap)

setupInstancesWithNeighborsBin

public weka.core.Instances setupInstancesWithNeighborsBin(weka.core.FastVector items,
                                                          java.util.HashMap id2labels,
                                                          int numMaxNeighbors,
                                                          int klasse,
                                                          java.util.HashMap weightsMap,
                                                          java.util.HashMap nodes,
                                                          java.lang.String traintest)
Creates new instances WeightedNaiveBayes (binary classification)

Parameters:
items - - data
numMaxNeighbors - - the maximal number of neighbors to be considered
weightsMap - - contains the weigths of the graph
nodes - - nodes of the graph
traintest - - file path to the training and test data
Returns:
Instances

setupInstTrain

public weka.core.Instance setupInstTrain(BipartiteNode item,
                                         java.util.HashMap id2labels,
                                         weka.core.Instance v,
                                         int klasse,
                                         int numMaxNeighbors,
                                         java.util.HashMap weightsMap)

setupInstTrainHom

public weka.core.Instance setupInstTrainHom(Node item,
                                            java.util.HashMap id2labels,
                                            weka.core.Instance v,
                                            int klasse,
                                            int numMaxNeighbors,
                                            java.util.HashMap weightsMap)

setupInstTest

public weka.core.Instance setupInstTest(BipartiteNode item,
                                        java.util.HashMap id2labels,
                                        weka.core.Instance v,
                                        int klasse,
                                        int numMaxNeighbors,
                                        java.util.HashMap weightsMap)

setupInstTestHom

public weka.core.Instance setupInstTestHom(Node item,
                                           java.util.HashMap id2labels,
                                           weka.core.Instance v,
                                           int klasse,
                                           int numMaxNeighbors,
                                           java.util.HashMap weightsMap)

evaluate

public double evaluate(int numRuns,
                       java.lang.String algorithm,
                       java.util.HashMap labels,
                       weka.core.FastVector[] traintest,
                       java.util.HashMap weightsMap)
                throws java.lang.Exception
Calls the classification algorithms and evaluates the results

Parameters:
numRuns - - number of folds for cross validation
algorithm - - the algorithm to be performed
labels - - contains categories
traintest - - contains train and test sets
weightsMap - - contains the weigths of the graph
Returns:
double accuracy
Throws:
java.lang.Exception

evaluateMultiLabel

public void evaluateMultiLabel(java.lang.String algorithm,
                               int numRuns,
                               java.util.HashMap labels,
                               weka.core.FastVector[] traintest,
                               java.util.HashMap weightsMap,
                               double th)
                        throws java.lang.Exception
Calls the classification algorithms and evaluates the results (in the case of multilabel problem)

Parameters:
algorithm - - the algorithm to be performed
numRuns - - number of folds for cross validation
labels - - contains categories
traintest - - contains train and test sets
weightsMap - - contains the weigths of the graph
th - - threshold
Returns:
double accuracy
Throws:
java.lang.Exception

initializeWithLocalProbsBin

public java.util.HashMap initializeWithLocalProbsBin(weka.core.FastVector test,
                                                     java.util.HashMap probs,
                                                     int Class)
Initializes the test instances with the results of a local classifier (binary classification)

Parameters:
test - - test set
probs - - results (probabilities) achieved by local classifier
Class - - category
Returns:
the initialized test instances

initializeWithLocalProbs

public java.util.HashMap initializeWithLocalProbs(weka.core.FastVector test,
                                                  java.util.HashMap probs)
Initializes the test instances with the results of a local classifier

Parameters:
test - - test set
probs - - results (probabilities) achieved by local classifier
Returns:
the initialized test instances

initializeWithLocalClassification

public java.util.HashMap initializeWithLocalClassification(weka.core.FastVector test,
                                                           java.util.HashMap probs,
                                                           double th,
                                                           int Class)
Initializes the test instances with the results of a local classifier (nominal initialization)(for binary classification)

Parameters:
test - - test set
probs - - results (probabilities) achieved by local classifier
th - - threshold
Class - - the category
Returns:
the initialized test instances

initializeWithPriors

public java.util.HashMap initializeWithPriors(weka.core.Instances test,
                                              double[] priors)
Initializes the test instances with the prior probability of the train set

Parameters:
test - - test set
priors - - prior probability calculated from the train set
Returns:
the initialized test instances

initializeWithPriors

public java.util.HashMap initializeWithPriors(weka.core.FastVector test,
                                              double[] priors)
Initializes the test instances with the prior probability of the train set

Parameters:
test - - test set
priors - - prior probability calculated from the train set
Returns:
the initialized test instances

initializeWithPriorClass

public java.util.HashMap initializeWithPriorClass(weka.core.FastVector test,
                                                  double[] priors)
Initializes the test instances with the prior class calculated from the train set

Parameters:
test - - test set
priors - - prior probability calculated from the train set
Returns:
the initialized test instances

initializeWithPriorClass

public java.util.HashMap initializeWithPriorClass(weka.core.FastVector test,
                                                  double[] priors,
                                                  int Class)
Initializes the test instances with the prior probability of the train set

Parameters:
test - - test set
priors - - prior probability calculated from the train set
Class - - the category
Returns:
the initialized test instances

initializeWithZero

public java.util.HashMap initializeWithZero(weka.core.Instances test)
Initializes the test instances with zero

Parameters:
test - - test set
Returns:
the initialized test instances

initializeWithZero

public java.util.HashMap initializeWithZero(weka.core.FastVector test)
Initializes the test instances with zero

Parameters:
test - - test set
Returns:
the initialized test instances

initializeWithZeroMulti

public java.util.HashMap initializeWithZeroMulti(weka.core.FastVector test)
Initializes the test instances with zero

Parameters:
test - - test set
Returns:
the initialized test instances

combineModelsVoting

public void combineModelsVoting(java.util.HashMap[] models,
                                int numFolds)
Combine models by using Voting

Parameters:
models - - results of the base classifiers
numFolds - - number of folds in cross-validation

combineModelsVotingMulti

public void combineModelsVotingMulti(int numFolds,
                                     double th,
                                     java.util.HashMap[] models)
Combine models by using Voting

Parameters:
numFolds - - number of folds in cross-validation
th - - threshold
models - - results of the base classifiers

evaluateWithStackingMulti

public void evaluateWithStackingMulti(int numFolds,
                                      java.util.HashMap[] models,
                                      double th)
                               throws java.lang.Exception
Combine models by using Stacking

Parameters:
numFolds - - number of folds in cross-validation
models - - results of the base classifiers
th - - threshold
Throws:
java.lang.Exception

evaluateWithStacking

public void evaluateWithStacking(int numFolds,
                                 java.util.HashMap[] models)
                          throws java.lang.Exception
Combine models by using Stacking

Parameters:
numFolds - - number of folds in cross-validation
models - - results of the base classifiers
Throws:
java.lang.Exception

main

public static void main(java.lang.String[] args)
                 throws java.lang.Exception
Throws:
java.lang.Exception