List of usage examples for weka.core Instance value
public double value(Attribute att);
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); }