Example usage for weka.core Instance numAttributes

List of usage examples for weka.core Instance numAttributes

Introduction

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

Prototype

public int numAttributes();

Source Link

Document

Returns the number of attributes.

Usage

From source file:org.if4071.myann.TopologyModel.java

public void insertDataToInputNodes(Instance inputData) {
    for (int i = 0; i < inputData.numAttributes() - 1; i++) {
        nodes.get(i).setOutput(inputData.value(i));
    }// w w  w.  j  a  v a2 s . com
}

From source file:org.iobserve.analysis.behavior.clustering.birch.model.ClusteringFeature.java

License:Apache License

/** Constructor for a clustering feature
 * representing an instance vector.//w w w .j av a 2s . c o m
 * @param instance the instance to represent.
 */
public ClusteringFeature(final Instance instance) {
    this.number = 1;
    this.linearSum = new double[instance.numAttributes()];
    this.squareSum = new double[instance.numAttributes()];

    for (int i = 0; i < instance.numAttributes(); i++) {
        this.linearSum[i] = instance.value(i);
        this.squareSum[i] = this.linearSum[i] * this.linearSum[i];
    }
}

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.
 *///  w  w  w.ja va  2  s. c o 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.filter.BehaviorModelCreationStage.java

License:Apache License

/**
 * create a BehaviorModel from Instance.
 *
 * @param instances//from ww w .ja v a 2 s  . c om
 *            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

@Override
protected void execute(final Map<Integer, List<Pair<Instance, Double>>> clustering) throws Exception {
    /**/*from  w w  w  .  j a v a2 s. c om*/
     * simply pick the first instance of every cluster lookup attributes to build a new
     * instances Object
     */
    Instance instance = clustering.entrySet().iterator().next().getValue().get(0).getElement1();
    final FastVector attributes = new FastVector();
    for (int j = 0; j < instance.numAttributes(); j++) {
        attributes.addElement(instance.attribute(j));
    }

    final Instances result = new Instances("Clustering Result", attributes, clustering.size());

    for (final List<Pair<Instance, Double>> entry : clustering.values()) {
        if (!entry.isEmpty()) {
            instance = entry.get(0).getElement1();
            result.add(instance);
        }
    }

    if (ClusterMerger.LOGGER.isDebugEnabled()) {
        this.printInstances(result);
    }
    this.outputPort.send(result);
}

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  ava2s.  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 ww.j a  v a2  s .  c  o  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   w ww  .  ja va 2 s.c om
 */
@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}/*w w  w  .  j av a2s  .c  o  m*/
 */
@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.ops.BuildTrainingData.java

License:Open Source License

/**
 * {@inheritDoc}//from w  w w. j  a v  a  2 s.  co m
 */
@Override
public Instances compute(RandomAccessibleInterval<LabelingType<L>> lab, Img<T> img, Instances r) {
    Random rand = new Random();

    double[] extent = new double[lab.numDimensions()];
    for (int d = 0; d < m_dimIndices.length; d++) {
        extent[m_dimIndices[d]] = lab.max(m_dimIndices[d]);
    }
    RectangleRegionOfInterest roi = new RectangleRegionOfInterest(new double[lab.numDimensions()], extent);

    Cursor<LabelingType<L>> labCur = roi.getIterableIntervalOverROI(lab).localizingCursor();
    OutOfBounds<T> imgRA = new OutOfBoundsBorder<T>(img);

    LabelRegions<L> regions = new LabelRegions<L>(lab);
    // get the class distributions
    Map<L, Double> classDistr = null;
    if (m_balanceInstancePerClass) {
        long sum = 0;
        long area;
        Collection<L> labels = regions.getExistingLabels();
        classDistr = new HashMap<L, Double>(labels.size());
        for (L label : labels) {
            area = regions.getLabelRegion(label).size();
            sum += area;
            classDistr.put(label, new Double(area));
        }
        // determine the new sampling rate for each class individually
        double instancesPerClass = (double) sum / (double) labels.size();
        for (L label : labels) {
            Double sampleRate = instancesPerClass / classDistr.get(label) * m_samplingRate;
            classDistr.put(label, sampleRate);
        }
    }

    long[] tmpPos = new long[imgRA.numDimensions()];
    while (labCur.hasNext()) {
        labCur.fwd();
        for (int d = 0; d < m_dimIndices.length; d++) {
            imgRA.setPosition(labCur.getLongPosition(m_dimIndices[d]), m_dimIndices[d]);
            if (imgRA.isOutOfBounds()) {
                imgRA.localize(tmpPos);
                NodeLogger.getLogger(getClass()).warn("Labeling reaches beyond the feature image. Position "
                        + Arrays.toString(tmpPos) + " skipped.");
                continue;
            }

        }
        if (!labCur.get().isEmpty()) {

            if (m_balanceInstancePerClass) {
                if (rand.nextDouble() >= classDistr.get(labCur.get().iterator().next())) {
                    continue;
                }
            } else {
                if (rand.nextDouble() >= m_samplingRate) {
                    continue;
                }
            }

            double[] featVec = new double[(int) img.dimension(m_featDim)];
            for (int f = 0; f < img.dimension(m_featDim); f++) {
                imgRA.setPosition(f, m_featDim);
                featVec[f] = imgRA.get().getRealDouble();
            }
            for (L classLabel : labCur.get()) {
                Instance instance = new DenseInstance(1.0, featVec);
                instance.insertAttributeAt(instance.numAttributes());
                instance.setDataset(r);
                instance.setClassValue(classLabel.toString());

                r.add(instance);

            }
        }
    }
    return r;
}