List of usage examples for weka.core Instance classValue
public double classValue();
From source file:edu.oregonstate.eecs.mcplan.abstraction.PairDataset.java
License:Open Source License
public static <S, X extends FactoredRepresentation<S>, A extends VirtualConstructor<A>> ArrayList<PairInstance> makePairDataset( final RandomGenerator rng, final int max_pairwise_instances, final Instances single) { final ReservoirSampleAccumulator<PairInstance> negative = new ReservoirSampleAccumulator<PairInstance>(rng, max_pairwise_instances);//from w w w.j a v a2 s . com final ReservoirSampleAccumulator<PairInstance> positive = new ReservoirSampleAccumulator<PairInstance>(rng, max_pairwise_instances); for (int i = 0; i < single.size(); ++i) { for (int j = i + 1; j < single.size(); ++j) { final Instance ii = single.get(i); final Instance ij = single.get(j); final int label; if (ii.classValue() == ij.classValue()) { label = 1; if (positive.acceptNext()) { final PairInstance pair_instance = new PairInstance(ii.toDoubleArray(), ij.toDoubleArray(), label); positive.addPending(pair_instance); } } else { label = 0; if (negative.acceptNext()) { final PairInstance pair_instance = new PairInstance(ii.toDoubleArray(), ij.toDoubleArray(), label); negative.addPending(pair_instance); } } } } final ArrayList<PairInstance> result = new ArrayList<PairInstance>(negative.n() + positive.n()); result.addAll(negative.samples()); result.addAll(positive.samples()); return result; }
From source file:edu.oregonstate.eecs.mcplan.abstraction.PairDataset.java
License:Open Source License
public static <S, X extends FactoredRepresentation<S>, A extends VirtualConstructor<A>> Instances makePairDataset( final RandomGenerator rng, final int max_pairwise_instances, final Instances single, final InstanceCombiner combiner) { // final int max_pairwise = config.getInt( "training.max_pairwise" ); final ReservoirSampleAccumulator<Instance> negative = new ReservoirSampleAccumulator<Instance>(rng, max_pairwise_instances);//from w w w. j a va2 s . c o m final ReservoirSampleAccumulator<Instance> positive = new ReservoirSampleAccumulator<Instance>(rng, max_pairwise_instances); for (int i = 0; i < single.size(); ++i) { // if( i % 100 == 0 ) { // System.out.println( "i = " + i ); // } for (int j = i + 1; j < single.size(); ++j) { final Instance ii = single.get(i); final Instance ij = single.get(j); final int label; if (ii.classValue() == ij.classValue()) { label = 1; if (positive.acceptNext()) { final Instance pair_instance = combiner.apply(ii, ij, label); positive.addPending(pair_instance); } } else { label = 0; if (negative.acceptNext()) { final Instance pair_instance = combiner.apply(ii, ij, label); negative.addPending(pair_instance); } } } } final int N = Math.min(negative.samples().size(), positive.samples().size()); final String dataset_name = "train_" + combiner.keyword() + "_" + max_pairwise_instances; final Instances x = new Instances(dataset_name, combiner.attributes(), 2 * N); x.setClassIndex(x.numAttributes() - 1); for (final Instance ineg : negative.samples()) { x.add(ineg); } for (final Instance ipos : positive.samples()) { x.add(ipos); } return x; // return new PairDataset( x, combiner ); }
From source file:edu.oregonstate.eecs.mcplan.abstraction.PairDataset.java
License:Open Source License
/** * Constructs one positive pair and one negative pair involving each * data point in 'single'./*from www . java 2s. com*/ * @param rng * @param max_pairwise_instances * @param single * @param combiner * @return */ public static <S, X extends FactoredRepresentation<S>, A extends VirtualConstructor<A>> PairDataset makeBalancedPairDataset( final RandomGenerator rng, final int negative_per_instance, final int positive_per_instance, final Instances single, final InstanceCombiner combiner) { final int Nnegative = negative_per_instance * single.size(); final int Npositive = positive_per_instance * single.size(); // final int max_pairwise = config.getInt( "training.max_pairwise" ); final ReservoirSampleAccumulator<Pair<Instance, int[]>> negative = new ReservoirSampleAccumulator<Pair<Instance, int[]>>( rng, Nnegative); final ReservoirSampleAccumulator<Pair<Instance, int[]>> positive = new ReservoirSampleAccumulator<Pair<Instance, int[]>>( rng, Npositive); for (int i = 0; i < single.size(); ++i) { // if( i % 100 == 0 ) { // System.out.println( "i = " + i ); // } for (int j = i + 1; j < single.size(); ++j) { final Instance ii = single.get(i); final Instance ij = single.get(j); final int label; if (ii.classValue() == ij.classValue()) { label = 1; if (positive.acceptNext()) { final Instance pair_instance = combiner.apply(ii, ij, label); positive.addPending(Pair.makePair(pair_instance, new int[] { i, j })); } } else { label = 0; if (negative.acceptNext()) { final Instance pair_instance = combiner.apply(ii, ij, label); negative.addPending(Pair.makePair(pair_instance, new int[] { i, j })); } } } } final int N = Math.min(negative.samples().size(), positive.samples().size()); final String dataset_name = "train_" + combiner.keyword() + "_" + Nnegative + "x" + Npositive; final Instances x = new Instances(dataset_name, combiner.attributes(), Nnegative + Npositive); x.setClassIndex(x.numAttributes() - 1); final ArrayList<int[]> matches = new ArrayList<int[]>(); for (final Pair<Instance, int[]> ineg : negative.samples()) { WekaUtil.addInstance(x, ineg.first); matches.add(ineg.second); } for (final Pair<Instance, int[]> ipos : positive.samples()) { WekaUtil.addInstance(x, ipos.first); matches.add(ipos.second); } return new PairDataset(x, matches, combiner); }
From source file:edu.oregonstate.eecs.mcplan.abstraction.PairDataset.java
License:Open Source License
/** * Constructs one positive pair and one negative pair involving each * data point in 'single'.// w w w.ja v a2s. c om * @param rng * @param max_pairwise_instances * @param single * @param combiner * @return */ public static <S, X extends FactoredRepresentation<S>, A extends VirtualConstructor<A>> PairDataset makePlausiblePairDataset( final RandomGenerator rng, final int negative_per_instance, final int positive_per_instance, final Instances single, final InstanceCombiner combiner, final Fn.Function2<Boolean, Instance, Instance> plausible_p) { final int Nnegative = negative_per_instance * single.size(); final int Npositive = positive_per_instance * single.size(); // final int max_pairwise = config.getInt( "training.max_pairwise" ); final ReservoirSampleAccumulator<Pair<Instance, int[]>> negative = new ReservoirSampleAccumulator<Pair<Instance, int[]>>( rng, Nnegative); final ReservoirSampleAccumulator<Pair<Instance, int[]>> positive = new ReservoirSampleAccumulator<Pair<Instance, int[]>>( rng, Npositive); for (int i = 0; i < single.size(); ++i) { // if( i % 100 == 0 ) { // System.out.println( "i = " + i ); // } for (int j = i + 1; j < single.size(); ++j) { final Instance ii = single.get(i); final Instance ij = single.get(j); if (!plausible_p.apply(ii, ij)) { // System.out.println( "Not plausible: " + ii + " != " + ij ); continue; } // System.out.println( "! Plausible: " + ii + " == " + ij ); final int label; if (ii.classValue() == ij.classValue()) { label = 1; if (positive.acceptNext()) { final Instance pair_instance = combiner.apply(ii, ij, label); positive.addPending(Pair.makePair(pair_instance, new int[] { i, j })); } } else { label = 0; if (negative.acceptNext()) { final Instance pair_instance = combiner.apply(ii, ij, label); negative.addPending(Pair.makePair(pair_instance, new int[] { i, j })); } } } } final int N = Math.min(negative.samples().size(), positive.samples().size()); final String dataset_name = "train_" + combiner.keyword() + "_" + negative.samples().size() + "x" + positive.samples().size(); final Instances x = new Instances(dataset_name, combiner.attributes(), Nnegative + Npositive); x.setClassIndex(x.numAttributes() - 1); final ArrayList<int[]> matches = new ArrayList<int[]>(); for (final Pair<Instance, int[]> ineg : negative.samples()) { WekaUtil.addInstance(x, ineg.first); matches.add(ineg.second); } for (final Pair<Instance, int[]> ipos : positive.samples()) { WekaUtil.addInstance(x, ipos.first); matches.add(ipos.second); } return new PairDataset(x, matches, combiner); }
From source file:edu.oregonstate.eecs.mcplan.abstraction.WekaUtil.java
License:Open Source License
public static Pair<ArrayList<double[]>, int[]> splitLabels(final Instances train) { assert (train.classAttribute() != null); final ArrayList<double[]> X = new ArrayList<double[]>(); final int[] Y = new int[train.size()]; for (int i = 0; i < train.size(); ++i) { final Instance inst = train.get(i); final double[] x = new double[train.numAttributes() - 1]; int idx = 0; for (int j = 0; j < train.numAttributes(); ++j) { if (j == train.classIndex()) { Y[i] = (int) inst.classValue(); } else { x[idx++] = inst.value(j); }//from w w w. j a va2s .c o m } X.add(x); } return Pair.makePair(X, Y); }
From source file:edu.oregonstate.eecs.mcplan.abstraction.WekaUtil.java
License:Open Source License
public static Instances powerSet(final Instances D, final int n) { final Attribute class_attr = D.classAttribute(); final ImmutableSet.Builder<Integer> b = new ImmutableSet.Builder<Integer>(); final int Nattr = class_attr != null ? D.numAttributes() - 1 : D.numAttributes(); for (final int i : Fn.range(1, Nattr)) { b.add(i);/* www.j ava2s . co m*/ } final Set<Set<Integer>> index = Sets.powerSet(b.build()); final ArrayList<Attribute> attributes = new ArrayList<Attribute>(); for (final Set<Integer> subset : index) { if (subset.isEmpty() || subset.size() > n) { continue; } final StringBuilder attr_name = new StringBuilder(); int count = 0; for (final Integer i : subset) { if (count++ > 0) { attr_name.append("_x_"); } attr_name.append(D.attribute(i).name()); } attributes.add(new Attribute(attr_name.toString())); } if (class_attr != null) { assert (class_attr.isNominal()); attributes.add(WekaUtil.createNominalAttribute(class_attr.name(), class_attr.numValues())); } final String Pname = "P" + n + "_" + D.relationName(); final Instances P = new Instances(Pname, attributes, 0); if (class_attr != null) { P.setClassIndex(attributes.size() - 1); } for (final Instance inst : D) { final double[] xp = new double[attributes.size()]; int idx = 0; for (final Set<Integer> subset : index) { if (subset.isEmpty() || subset.size() > n) { continue; } double p = 1.0; for (final Integer i : subset) { p *= inst.value(i); } xp[idx++] = p; } if (class_attr != null) { xp[idx++] = inst.classValue(); } WekaUtil.addInstance(P, new DenseInstance(inst.weight(), xp)); } return P; }
From source file:edu.oregonstate.eecs.mcplan.domains.frogger.FroggerRepresentationConverter.java
License:Open Source License
public static Instances absoluteToRelative(final FroggerParameters params, final Instances src, final int vision) { final ArrayList<Attribute> attributes = new ArrayList<Attribute>(); attributes.add(new Attribute("x")); attributes.add(new Attribute("y")); for (int i = vision; i >= -vision; --i) { for (int j = -vision; j <= vision; ++j) { if (i == 0 && j == 0) { continue; }/*from w w w .j a v a2 s. co m*/ final String name = "car_x" + (j >= 0 ? "+" : "") + j + "_y" + (i >= 0 ? "+" : "") + i; attributes.add(new Attribute(name)); } } attributes.add(src.classAttribute()); final Instances dest = new Instances(src.relationName() + "_relative", attributes, src.size()); for (final Instance inst : src) { final double[] phi = new double[attributes.size()]; int idx = 0; final int x = (int) inst.value(0); final int y = (int) inst.value(1); phi[idx++] = x; phi[idx++] = y; for (int i = vision; i >= -vision; --i) { for (int j = -vision; j <= vision; ++j) { if (i == 0 && j == 0) { continue; } final int xoff = x + j; final int yoff = y + i; if (xoff >= 0 && xoff < params.road_length && yoff >= 1 && yoff <= params.lanes) { final int car = (int) inst.value(2 + (yoff - 1) * params.road_length + xoff); phi[idx] = car; // s.grid[dy][dx] == Tile.Car ? 1.0 : 0.0; // fv[2 + (dy-1)*road_length + dx] } idx += 1; } } phi[idx++] = inst.classValue(); assert (idx == phi.length); WekaUtil.addInstance(dest, new DenseInstance(inst.weight(), phi)); } return dest; }
From source file:edu.oregonstate.eecs.mcplan.ml.WekaGlue.java
License:Open Source License
public static SequentialProjectionHashLearner createSequentialProjectionHashLearner(final RandomGenerator rng, final Instances labeled, final Instances unlabeled, final int K, final double eta, final double alpha) { assert (labeled.classIndex() >= 0); final int Nfeatures = labeled.numAttributes() - 1; final RealMatrix X = new Array2DRowRealMatrix(Nfeatures, labeled.size() + unlabeled.size()); final RealMatrix XL = new Array2DRowRealMatrix(Nfeatures, labeled.size() * 2); final RealMatrix S = new Array2DRowRealMatrix(XL.getColumnDimension(), XL.getColumnDimension()); for (int j = 0; j < labeled.size(); ++j) { final Instance inst = labeled.get(j); for (int i = 0; i < XL.getRowDimension(); ++i) { X.setEntry(i, j, inst.value(i)); XL.setEntry(i, j, inst.value(i)); }//from w w w . jav a 2 s .co m int sj = -1; Instance s = null; do { sj = rng.nextInt(labeled.size()); s = labeled.get(sj); } while (s == inst || s.classValue() != inst.classValue()); S.setEntry(j, sj, 1); int dj = -1; Instance d = null; do { dj = rng.nextInt(labeled.size()); d = labeled.get(dj); } while (d == inst || d.classValue() == inst.classValue()); S.setEntry(j, dj, -1); } for (int j = 0; j < unlabeled.size(); ++j) { final Instance inst = unlabeled.get(j); for (int i = 0; i < X.getRowDimension(); ++i) { X.setEntry(i, labeled.size() + j, inst.value(i)); } } return new SequentialProjectionHashLearner(X, XL, S, K, eta, alpha); }
From source file:edu.umbc.cs.maple.utils.WekaUtils.java
License:Open Source License
/** Determines whether a data set has equal class priors. * @param data/*from w ww . j a v a2 s . c o m*/ * @return whether the data set has equal class priors */ public static boolean equalClassPriors(Instances data) { double[] counts = new double[data.numClasses()]; int numInstances = data.numInstances(); for (int i = 0; i < numInstances; i++) { Instance inst = data.instance(i); int classValueIdx = (int) Math.round(inst.classValue()); counts[classValueIdx] = counts[classValueIdx] + 1; } // compute the mean double meanCount = MathUtils.sum(counts) / counts.length; double[] meanArray = new double[counts.length]; for (int i = 0; i < meanArray.length; i++) { meanArray[i] = meanCount; } // compute the rmse double rmse = MathUtils.rmse(meanArray, counts); // compute 2.5% of the possible double deviationAllowed = Math.ceil(0.025 * meanCount); if (rmse <= deviationAllowed) return true; else return false; }
From source file:edu.umbc.cs.maple.utils.WekaUtils.java
License:Open Source License
/** Converts a set of instances to svm-light format * @param data the weka instances/*w w w .j av a2 s . co m*/ * @return the weka instances in svm-light format */ public static String arffToSVMLight(Instances data, SVMLightLabelFormat labelFormat) { if (labelFormat == SVMLightLabelFormat.CLASSIFICATION && data.numClasses() != 2) { throw new IllegalArgumentException( "SVM-light classification label format requires that the data contain only two classes."); } String str = ""; String endline = System.getProperty("line.separator"); int numInstances = data.numInstances(); int numAttributes = data.numAttributes(); int classAttIdx = data.classIndex(); for (int instIdx = 0; instIdx < numInstances; instIdx++) { Instance inst = data.instance(instIdx); // convert the instance label if (labelFormat == SVMLightLabelFormat.CLASSIFICATION) { str += (inst.classValue() == 0) ? "-1" : "1"; } else { str += inst.classValue(); } str += " "; // convert each feature for (int attIdx = 0; attIdx < numAttributes; attIdx++) { // skip the class attribute if (attIdx == classAttIdx) continue; str += (attIdx + 1) + ":" + inst.value(attIdx) + " "; } // append the instance info string str += "# " + instIdx; str += endline; } return str; }