Example usage for weka.core Instance value

List of usage examples for weka.core Instance value

Introduction

In this page you can find the example usage for weka.core Instance value.

Prototype

public double value(Attribute att);

Source Link

Document

Returns an instance's attribute value in internal format.

Usage

From source file:org.iobserve.analysis.behavior.clustering.hierarchical.ElbowMethod.java

License:Apache License

/**
 * Calculate within-cluster sum-of-square (WSS) for a given cluster.
 *
 * @param cluster//  ww w.j  a v a2 s .  c o  m
 *            Calculate the WSS for this cluster.
 * @return WSS
 **/
public double calcWSS(final List<Integer> cluster) {

    final DistanceFunction distanceFunction = this.hierarchicalClusterer.getDistanceFunction();
    final double[] sumAttValues = new double[this.instances.numAttributes()];
    for (int i = 0; i < cluster.size(); i++) {
        final Instance instance = this.instances.instance(cluster.get(i));
        // Sum up all values of all instances.
        for (int j = 0; j < this.instances.numAttributes(); j++) {
            sumAttValues[j] += instance.value(j);
        }
    }
    // Get average value of each attribute value.
    for (int j = 0; j < sumAttValues.length; j++) {
        sumAttValues[j] /= cluster.size();
    }

    /*
     * Create a centroid of this cluster by setting the average attributes of this cluster as
     * its own.
     */
    final Instance centroid = (Instance) this.instances.instance(cluster.get(0)).copy();
    for (int j = 0; j < this.instances.numAttributes(); j++) {
        centroid.setValue(j, sumAttValues[j]);
    }
    // Sum up distances of each data point in cluster to centroid to get WSS.
    double clusterWSS = 0.0;
    for (int i = 0; i < cluster.size(); i++) {
        final Instance instance = this.instances.instance(cluster.get(i));
        clusterWSS += Math.pow(distanceFunction.distance(centroid, instance), 2);
    }
    return clusterWSS;
}

From source file:org.iobserve.analysis.behavior.clustering.hierarchical.GapStatisticMethod.java

License:Apache License

/**
 * Finds min and max values for each attribute of the instances.
 */// ww w.  j  a v a 2  s .co  m
private void findBoundaryValues() {
    final List<Double> minBoundaryValues = new ArrayList<>();
    final List<Double> maxBoundaryValues = new ArrayList<>();

    for (int i = 0; i < this.instances.numInstances(); i++) {
        final Instance instance = this.instances.instance(i);
        for (int j = 0; j < instance.numAttributes(); j++) {
            // Initialization of both min and max lists.
            if (minBoundaryValues.size() == j) {
                minBoundaryValues.add(j, Double.POSITIVE_INFINITY);
            }
            if (maxBoundaryValues.size() == j) {
                maxBoundaryValues.add(j, Double.NEGATIVE_INFINITY);
            }
            final double minValue = minBoundaryValues.get(j);
            final double maxValue = maxBoundaryValues.get(j);
            final double attributeValue = instance.value(j);
            if (attributeValue < minValue) {
                minBoundaryValues.remove(j);
                minBoundaryValues.add(j, attributeValue);
            }
            if (attributeValue >= maxValue) {
                maxBoundaryValues.remove(j);
                maxBoundaryValues.add(j, attributeValue);
            }
        }
    }
    this.setMinAttributeValues(minBoundaryValues);
    this.setMaxAttributeValues(maxBoundaryValues);
}

From source file:org.iobserve.analysis.behavior.clustering.hierarchical.GapStatisticMethod.java

License:Apache License

/**
 * Calculated error sum-of-squares (ESS) for a given cluster.
 *
 * @param cluster/*  w  w  w . jav  a2 s .co  m*/
 *            Calculate the ESS for this cluster
 * @return ESS
 **/
public double calcESS(final List<Integer> cluster) {

    if ((cluster.size() == 0) || (cluster.size() == 1)) {
        return 0.0;
    }
    final DistanceFunction distanceFunction = this.hierarchicalClusterer.getDistanceFunction();
    final double[] sumAttValues = new double[this.instances.numAttributes()];
    for (int i = 0; i < cluster.size(); i++) {
        final Instance instance = this.instances.instance(cluster.get(i));
        // Sum up all values of all instances.
        for (int j = 0; j < this.instances.numAttributes(); j++) {
            sumAttValues[j] += instance.value(j);
        }
    }
    // Get average value of each attribute value.
    for (int j = 0; j < this.instances.numAttributes(); j++) {
        sumAttValues[j] /= cluster.size();
    }

    /*
     * Create a centroid of this cluster by setting the average attributes of this cluster as
     * its own.
     */
    final Instance centroid = (Instance) this.instances.instance(cluster.get(0)).copy();
    for (int j = 0; j < this.instances.numAttributes(); j++) {
        centroid.setValue(j, sumAttValues[j]);
    }
    // Sum up distances of each data point in cluster to centroid to get ESS.
    double clusterESS = 0.0;
    for (int i = 0; i < cluster.size(); i++) {
        final Instance instance = this.instances.instance(cluster.get(i));
        clusterESS += distanceFunction.distance(centroid, instance);
    }
    return clusterESS / cluster.size();
}

From source file:org.iobserve.analysis.behavior.filter.BehaviorModelCreationStage.java

License:Apache License

/**
 * create a BehaviorModel from Instance.
 *
 * @param instances/* w  w  w  .  j  a v a2s .c  o m*/
 *            instances containing the attribute names
 * @param instance
 *            instance containing the attributes
 * @return behavior model if relevant
 */
private Optional<BehaviorModel> createBehaviorModel(final Instances instances, final Instance instance) {
    final int size = instance.numAttributes();
    final BehaviorModel behaviorModel = new BehaviorModel();

    for (int i = 0; i < size; i++) {
        final Attribute attribute = instances.attribute(i);

        final String attributeName = attribute.name();
        final Double attributeValue = instance.value(attribute);

        if (this.matchEdge(attributeName)) {
            final Optional<EntryCallEdge> edge = this.createEdge(attributeName, attributeValue);

            if (edge.isPresent()) {
                behaviorModel.addEdge(edge.get(), true);
            }

        } else if (this.matchNode(attributeName)) {
            final Optional<EntryCallNode> node = this.createNode(attributeName, attributeValue);

            if (node.isPresent()) {
                behaviorModel.addNode(node.get(), true);
            }
        }
    }

    if (behaviorModel.getEdges().isEmpty() && behaviorModel.getNodes().isEmpty()) {
        return Optional.empty();
    }

    return Optional.of(behaviorModel);
}

From source file:org.iobserve.analysis.behavior.filter.ClusterMerger.java

License:Apache License

private void printInstances(final Instances instances) {
    for (int i = 0; i < instances.numInstances(); i++) {
        ClusterMerger.LOGGER.debug("***************************");
        ClusterMerger.LOGGER.debug("Cluster {}", i);
        ClusterMerger.LOGGER.debug("***************************");
        final Instance instance = instances.instance(i);
        for (int a = 0; a < instance.numAttributes(); a++) {
            ClusterMerger.LOGGER.debug("{} : {}", instances.attribute(a).name(), instance.value(a));
        }/*w w w  .j  a v a 2  s. c  o m*/
    }
}

From source file:org.iobserve.analysis.behavior.filter.VectorQuantizationClusteringStage.java

License:Apache License

private void printInstances(final ClusteringResults results) {
    results.printClusteringResults();//from   w  w  w. j  a v  a2  s  . co  m
    final Instances centroids = results.getClusteringMetrics().getCentroids();
    for (int i = 0; i < centroids.numInstances(); i++) {
        String logString = "";
        logString += "***************************";
        logString += "Cluster " + i;
        logString += "***************************";
        final Instance instance = centroids.instance(i);
        for (int a = 0; a < instance.numAttributes(); a++) {
            logString += centroids.attribute(a).name() + " : " + instance.value(a);
        }
        VectorQuantizationClusteringStage.LOGGER.info(logString);
    }
}

From source file:org.knime.knip.suise.node.boundarymodel.contourdata.IntervalRule.java

License:Open Source License

/**
 * {@inheritDoc}/*from   ww w.ja  v  a2  s  .co m*/
 */
@Override
public void updateClassifier(Instance instance) throws Exception {
    if (m_min == null || m_max == null) {
        m_min = new DenseInstance(1.0, instance.toDoubleArray());
        m_max = new DenseInstance(1.0, instance.toDoubleArray());
    } else {
        for (int a = 0; a < instance.numAttributes() - 1; a++) {
            m_min.setValue(a, Math.min(instance.value(a), m_min.value(a)));
            m_max.setValue(a, Math.max(instance.value(a), m_max.value(a)));
        }
    }

}

From source file:org.knime.knip.suise.node.boundarymodel.contourdata.IntervalRule.java

License:Open Source License

/**
 * {@inheritDoc}/*from w ww .j  a  v  a2s. com*/
 */
@Override
public double[] distributionForInstance(Instance instance) throws Exception {
    for (int a = 0; a < instance.numAttributes() - 1; a++) {
        if (instance.value(a) < m_min.value(a) || instance.value(a) > m_max.value(a)) {
            return new double[] { 1, 0 };
        }
    }
    return new double[] { 0, 1 };

    // int fit = 0;
    // for (int a = 0; a < instance.numAttributes() - 1; a++) {
    // if (instance.value(a) >= m_min.value(a)
    // || instance.value(a) <= m_max.value(a)) {
    // fit++;
    // }
    // }
    // double r = (double) fit / (instance.numAttributes() - 1);
    // return new double[] { 1 - r, r };

}

From source file:org.knime.knip.suise.node.boundarymodel.contourdata.IRI.java

License:Open Source License

/**
 * {@inheritDoc}/*from   ww  w . j  av a2  s.  c o  m*/
 */
@Override
public void buildClassifier(Instances miData) throws Exception {

    // can classifier handle the data?
    getCapabilities().testWithFail(miData);

    final Instances tmpMiData = new Instances(miData);
    final Instances flatData = toSingleInstanceDataset(miData, null);

    int numPosBags = 0;
    for (Instance bag : miData) {
        if (bag.value(2) == 1) {
            numPosBags++;
        }
    }

    int remainingNumPosBags = numPosBags;
    Future<Pair<IntervalRule, Double>>[] futures = new Future[m_numThreads];
    ExecutorService pool = Executors.newFixedThreadPool(m_numThreads);

    while (remainingNumPosBags / (double) numPosBags > 1 - m_coverRate) {

        final int numIterations = ((int) (m_sampleRate * remainingNumPosBags)) / m_numThreads + 1;

        for (int t = 0; t < m_numThreads; t++) {
            futures[t] = pool.submit(new Callable<Pair<IntervalRule, Double>>() {
                @Override
                public Pair<IntervalRule, Double> call() throws Exception {
                    return createRule(flatData, tmpMiData, numIterations);
                }
            });
        }

        // select the best rule from the threads
        double score = -Double.MAX_VALUE;
        IntervalRule rule = null;
        for (int f = 0; f < futures.length; f++) {
            if (futures[f].get().getB() > score) {
                score = futures[f].get().getB();
                rule = futures[f].get().getA();
            }
        }

        m_rules.add(rule);

        // only keep the bags whose instances are not covered by this rule
        Instances tmp = new Instances(tmpMiData);
        tmpMiData.clear();
        boolean covered;
        remainingNumPosBags = 0;
        for (Instance bag : tmp) {
            covered = false;
            for (Instance inst : bag.relationalValue(1)) {
                double[] distr;
                distr = rule.distributionForInstance(inst);
                if (distr[1] > distr[0]) {
                    covered = true;
                    break;
                }
            }
            if (!covered) {
                tmpMiData.add(bag);
                if (bag.value(2) == 1) {
                    remainingNumPosBags++;
                }
            }
        }
        flatData.clear();
        toSingleInstanceDataset(tmpMiData, flatData);
    }

    pool.shutdown();

}

From source file:org.lappsgrid.eval.metric.BinaryGoldStandardAttribute.java

License:Apache License

public boolean isCorrect(Instance instance) {
    return gs_att.value((int) instance.value(gs_att)).equals(CORRECT);
}