List of usage examples for weka.core Instance value
public double value(Attribute att);
From source file:fantail.algorithms.BinaryART.java
License:Open Source License
private Instances[] splitData(Instances data, int attIndex, double splitPoint) throws Exception { Instances[] subsets = new Instances[2]; subsets[0] = new Instances(data, 0); subsets[1] = new Instances(data, 0); // changed on 7 Feb 2013, because for some LR datasets, the Alpo returns NaN int halfPoint = (int) (data.numInstances() * 0.50); for (int i = 0; i < data.numInstances(); i++) { Instance inst = data.instance(i); if (inst.value(attIndex) <= splitPoint && subsets[0].numInstances() < halfPoint) { subsets[0].add(inst);/*from w w w.j a va 2 s . co m*/ } else { subsets[1].add(inst); } } if (subsets[1].numInstances() == 0) { subsets[1].add(subsets[0].instance(0)); } if (subsets[0].numInstances() == 0) { subsets[0].add(subsets[1].instance(0)); } return subsets; // following were used before 7 Feb 2013 // for (int i = 0; i < data.numInstances(); i++) { // Instance inst = data.instance(i); // if (inst.value(attIndex) <= splitPoint) { // subsets[0].add(inst); // } else { // subsets[1].add(inst); // } // } // // if (subsets[1].numInstances() == 0) { // subsets[1].add(subsets[0].instance(0)); // } // // if (subsets[0].numInstances() == 0) { // subsets[0].add(subsets[1].instance(0)); // } // return subsets; }
From source file:fantail.algorithms.BinaryART.java
License:Open Source License
private double getMedian2(Instances data, int attIndex) throws Exception { double[] numArray = new double[data.numInstances()]; for (int i = 0; i < data.numInstances(); i++) { Instance inst = data.instance(i); numArray[i] = inst.value(attIndex); }//from w w w .j a v a 2s.c om Arrays.sort(numArray); double median; if (numArray.length % 2 == 0) { median = ((double) numArray[numArray.length / 2] + (double) numArray[numArray.length / 2 + 1]) / 2; } else { median = (double) numArray[numArray.length / 2]; } return median; }
From source file:fantail.algorithms.BinaryART.java
License:Open Source License
private double getMedian(Instances data, int attIndex) throws Exception { if (false) {/*from w w w.j ava2 s. com*/ return getMedian2(data, attIndex); // added 07-july 2013; actually they are the same // removed 17/07/2013 } DescriptiveStatistics stats = new DescriptiveStatistics(); for (int i = 0; i < data.numInstances(); i++) { Instance inst = (Instance) data.instance(i); stats.addValue(inst.value(attIndex)); } double median = stats.getPercentile(50); return median; }
From source file:fantail.algorithms.BinaryART.java
License:Open Source License
@Override public double[] recommendRanking(Instance metaInst) throws Exception { if (m_Attribute == null) { return Tools.doubleArrayToRanking(m_Prototype); } else {//w w w. ja v a 2s . c o m if (metaInst.value(m_Attribute) <= m_SplitPoint) { return m_Successors[0].recommendRanking(metaInst); } else { return m_Successors[1].recommendRanking(metaInst); } } }
From source file:fantail.algorithms.RankingViaRegression.java
License:Open Source License
@Override public void buildRanker(Instances data) throws Exception { Instances workingData = new Instances(data); //Instance instTemp = workingData.instance(0); //m_LastFeatureIndex = workingData.numAttributes() - 1; m_NumFeatures = workingData.numAttributes() - 1; m_NumTargets = Tools.getNumberTargets(data); m_Classifiers = new AbstractClassifier[m_NumTargets]; for (int i = 0; i < m_NumTargets; i++) { weka.classifiers.functions.LinearRegression lr = new weka.classifiers.functions.LinearRegression(); m_Classifiers[i] = AbstractClassifier.makeCopy(lr); }/*from ww w . ja v a 2 s . c om*/ Instances[] trainingSets = new Instances[m_NumTargets]; for (int t = 0; t < m_NumTargets; t++) { ArrayList attributes = new ArrayList(); for (int i = 0; i < m_NumFeatures; i++) { attributes.add(new Attribute(workingData.attribute(i).name())); } String targetName = "att-" + (t + 1); attributes.add(new Attribute(targetName)); trainingSets[t] = new Instances("data-" + targetName, attributes, 0); for (int j = 0; j < workingData.numInstances(); j++) { Instance metaInst = workingData.instance(j); double[] ranking = Tools.getTargetVector(metaInst); double[] values = new double[trainingSets[t].numAttributes()]; for (int m = 0; m < (trainingSets[t].numAttributes() - 1); m++) { values[m] = metaInst.value(m); } values[values.length - 1] = ranking[t]; trainingSets[t].add(new DenseInstance(1.0, values)); } trainingSets[t].setClassIndex(trainingSets[t].numAttributes() - 1); m_Classifiers[t].buildClassifier(trainingSets[t]); } m_TempHeader = new Instances(trainingSets[0], 0); }
From source file:fantail.algorithms.RankingViaRegression.java
License:Open Source License
@Override public double[] recommendRanking(Instance metaInst) throws Exception { double[] values = new double[m_NumFeatures + 1]; for (int i = 0; i < values.length - 1; i++) { values[i] = metaInst.value(i); }//from ww w . j a va 2 s.c o m values[values.length - 1] = 0; Instance inst = new DenseInstance(1.0, values); inst.setDataset(m_TempHeader); // double[] preds = new double[m_NumTargets]; for (int t = 0; t < m_NumTargets; t++) { double pred = m_Classifiers[t].classifyInstance(inst); if (pred <= 0) { pred = 0; } if (pred >= m_NumTargets) { pred = m_NumTargets; } preds[t] = pred; } return Tools.doubleArrayToRanking(preds); }
From source file:fantail.algorithms.RankingWithBinaryPCT.java
License:Open Source License
private Instances[] splitData(Instances data, int attIndex, double splitPoint) throws Exception { Instances[] subsets = new Instances[2]; subsets[0] = new Instances(data, 0); subsets[1] = new Instances(data, 0); for (int i = 0; i < data.numInstances(); i++) { Instance inst = data.instance(i); if (inst.value(attIndex) <= splitPoint && (subsets[0].numInstances() <= 0.5 * data.numInstances())) { subsets[0].add(inst);/*from w ww. j ava 2 s. c om*/ } else { subsets[1].add(inst); } } // TODO: if (subsets[1].numInstances() == 0) { subsets[1].add(subsets[0].instance(0)); } if (subsets[0].numInstances() == 0) { subsets[0].add(subsets[1].instance(0)); } return subsets; }
From source file:fantail.algorithms.RankingWithBinaryPCT.java
License:Open Source License
private Instances[] splitData2(Instances data, int attIndex, double splitPoint) throws Exception { Instances[] subsets = new Instances[2]; subsets[0] = new Instances(data, 0); subsets[1] = new Instances(data, 0); for (int i = 0; i < data.numInstances(); i++) { Instance inst = data.instance(i); if (inst.value(attIndex) <= splitPoint) { subsets[0].add(inst);/*from w w w . j a v a 2s . c o m*/ } else { subsets[1].add(inst); } } // TODO: if (subsets[1].numInstances() == 0) { subsets[1].add(subsets[0].instance(0)); } if (subsets[0].numInstances() == 0) { subsets[0].add(subsets[1].instance(0)); } return subsets; }
From source file:fantail.algorithms.RankingWithBinaryPCT.java
License:Open Source License
private double getMedian(Instances data, int attIndex) throws Exception { DescriptiveStatistics stats = new DescriptiveStatistics(); for (int i = 0; i < data.numInstances(); i++) { Instance inst = (Instance) data.instance(i); stats.addValue(inst.value(attIndex)); }/*from w w w.j av a 2 s . c o m*/ double median = stats.getPercentile(50); return median; }
From source file:fantail.algorithms.RankingWithBinaryPCT.java
License:Open Source License
@Override public double[] recommendRanking(Instance metaInst) throws Exception { if (m_Attribute == null) { return m_Prototype; } else {/*from w w w. j a v a2 s . c om*/ if (metaInst.value(m_Attribute) <= m_SplitPoint) { return m_Successors[0].recommendRanking(metaInst); } else { return m_Successors[1].recommendRanking(metaInst); } } }