private Instances makeClusterDataSetClass(Instances format, weka.clusterers.Clusterer clusterer, String relationNameModifier) throws Exception { weka.filters.unsupervised.attribute.Add addF = new weka.filters.unsupervised.attribute.Add(); addF.setAttributeIndex("last"); String clustererName = clusterer.getClass().getName(); clustererName = clustererName.substring(clustererName.lastIndexOf('.') + 1, clustererName.length()); addF.setAttributeName("assigned_cluster: " + clustererName); // if (format.classAttribute().isNominal()) { String clusterLabels = "0"; /* * Enumeration enu = format.classAttribute().enumerateValues(); * clusterLabels += (String)enu.nextElement(); while (enu.hasMoreElements()) * { clusterLabels += ","+(String)enu.nextElement(); } */ for (int i = 1; i <= clusterer.numberOfClusters() - 1; i++) { clusterLabels += "," + i; } addF.setNominalLabels(clusterLabels); // } addF.setInputFormat(format); Instances newInstances = weka.filters.Filter.useFilter(format, addF); newInstances.setRelationName(format.relationName() + relationNameModifier); return newInstances; }
private Instances makeClusterDataSetClass(Instances format, weka.clusterers.Clusterer clusterer, String relationNameModifier) throws Exception { weka.filters.unsupervised.attribute.Add addF = new weka.filters.unsupervised.attribute.Add(); addF.setAttributeIndex("last"); String clustererName = clusterer.getClass().getName(); clustererName = clustererName.substring(clustererName.lastIndexOf('.') + 1, clustererName.length()); addF.setAttributeName("assigned_cluster: " + clustererName); // if (format.classAttribute().isNominal()) { String clusterLabels = "0"; /* * Enumeration enu = format.classAttribute().enumerateValues(); * clusterLabels += (String)enu.nextElement(); while (enu.hasMoreElements()) * { clusterLabels += ","+(String)enu.nextElement(); } */ for (int i = 1; i <= clusterer.numberOfClusters() - 1; i++) { clusterLabels += "," + i; } addF.setNominalLabels(clusterLabels); // } addF.setInputFormat(format); Instances newInstances = weka.filters.Filter.useFilter(format, addF); newInstances.setRelationName(format.relationName() + relationNameModifier); return newInstances; }
addF.setInputFormat(insts);
public Instances getPredictionInstancesSingleLabel(Instances testData, Classifier cl) throws Exception { StringBuffer classVals = new StringBuffer(); for (int i = 0; i < testData.classAttribute().numValues(); i++) { if (classVals.length() > 0) { classVals.append(","); } classVals.append(testData.classAttribute().value(i)); } // get predictions List<Double> labelPredictionList = new ArrayList<Double>(); for (int i = 0; i < testData.size(); i++) { labelPredictionList.add(cl.classifyInstance(testData.instance(i))); } // add an attribute with the predicted values at the end off the attributes Add filter = new Add(); filter.setAttributeName(WekaTestTask.PREDICTION_CLASS_LABEL_NAME); if (classVals.length() > 0) { filter.setAttributeType(new SelectedTag(Attribute.NOMINAL, Add.TAGS_TYPE)); filter.setNominalLabels(classVals.toString()); } filter.setInputFormat(testData); testData = Filter.useFilter(testData, filter); // fill predicted values for each instance for (int i = 0; i < labelPredictionList.size(); i++) { testData.instance(i).setValue(testData.classIndex() + 1, labelPredictionList.get(i)); } return testData; }
public Instances getPredictionInstancesSingleLabel(Instances testData, Classifier cl) throws Exception { StringBuffer classVals = new StringBuffer(); for (int i = 0; i < testData.classAttribute().numValues(); i++) { if (classVals.length() > 0) { classVals.append(","); } classVals.append(testData.classAttribute().value(i)); } // get predictions List<Double> labelPredictionList = new ArrayList<Double>(); for (int i = 0; i < testData.size(); i++) { labelPredictionList.add(cl.classifyInstance(testData.instance(i))); } // add an attribute with the predicted values at the end off the attributes Add filter = new Add(); filter.setAttributeName(WekaTestTask.PREDICTION_CLASS_LABEL_NAME); if (classVals.length() > 0) { filter.setAttributeType(new SelectedTag(Attribute.NOMINAL, Add.TAGS_TYPE)); filter.setNominalLabels(classVals.toString()); } filter.setInputFormat(testData); testData = Filter.useFilter(testData, filter); // fill predicted values for each instance for (int i = 0; i < labelPredictionList.size(); i++) { testData.instance(i).setValue(testData.classIndex() + 1, labelPredictionList.get(i)); } return testData; }
filter.setNominalLabels(classVals.toString()); filter.setInputFormat(testData); testData = Filter.useFilter(testData, filter);
private Instances makeDataSetProbabilities(Instances insts, Instances format, weka.classifiers.Classifier classifier, String relationNameModifier) throws Exception { // adjust structure for InputMappedClassifier (if necessary) if (classifier instanceof weka.classifiers.misc.InputMappedClassifier) { format = ((weka.classifiers.misc.InputMappedClassifier) classifier) .getModelHeader(new Instances(format, 0)); } String classifierName = classifier.getClass().getName(); classifierName = classifierName.substring(classifierName.lastIndexOf('.') + 1, classifierName.length()); Instances newInstances = new Instances(insts); for (int i = 0; i < format.classAttribute().numValues(); i++) { weka.filters.unsupervised.attribute.Add addF = new weka.filters.unsupervised.attribute.Add(); addF.setAttributeIndex("last"); addF.setAttributeName(classifierName + "_prob_" + format.classAttribute().value(i)); addF.setInputFormat(newInstances); newInstances = weka.filters.Filter.useFilter(newInstances, addF); } newInstances.setRelationName(insts.relationName() + relationNameModifier); return newInstances; }
private Instances getPredictionInstancesMultiLabel(Instances testData, Classifier cl, double[] thresholdArray) throws Exception { int numLabels = testData.classIndex(); // get predictions List<double[]> labelPredictionList = new ArrayList<double[]>(); for (int i = 0; i < testData.numInstances(); i++) { labelPredictionList.add(cl.distributionForInstance(testData.instance(i))); } // add attributes to store predictions in test data Add filter = new Add(); for (int i = 0; i < numLabels; i++) { filter.setAttributeIndex(Integer.toString(numLabels + i + 1)); filter.setNominalLabels("0,1"); filter.setAttributeName( testData.attribute(i).name() + "_" + WekaTestTask.PREDICTION_CLASS_LABEL_NAME); filter.setInputFormat(testData); testData = Filter.useFilter(testData, filter); } // fill predicted values for each instance for (int i = 0; i < labelPredictionList.size(); i++) { for (int j = 0; j < labelPredictionList.get(i).length; j++) { testData.instance(i).setValue(j + numLabels, labelPredictionList.get(i)[j] >= thresholdArray[j] ? 1. : 0.); } } return testData; }
private Instances getPredictionInstancesMultiLabel(Instances testData, Classifier cl, double[] thresholdArray) throws Exception { int numLabels = testData.classIndex(); // get predictions List<double[]> labelPredictionList = new ArrayList<double[]>(); for (int i = 0; i < testData.numInstances(); i++) { labelPredictionList.add(cl.distributionForInstance(testData.instance(i))); } // add attributes to store predictions in test data Add filter = new Add(); for (int i = 0; i < numLabels; i++) { filter.setAttributeIndex(Integer.toString(numLabels + i + 1)); filter.setNominalLabels("0,1"); filter.setAttributeName( testData.attribute(i).name() + "_" + WekaTestTask.PREDICTION_CLASS_LABEL_NAME); filter.setInputFormat(testData); testData = Filter.useFilter(testData, filter); } // fill predicted values for each instance for (int i = 0; i < labelPredictionList.size(); i++) { for (int j = 0; j < labelPredictionList.get(i).length; j++) { testData.instance(i).setValue(j + numLabels, labelPredictionList.get(i)[j] >= thresholdArray[j] ? 1. : 0.); } } return testData; }
private Instances makeDataSetProbabilities(Instances insts, Instances format, weka.classifiers.Classifier classifier, String relationNameModifier) throws Exception { // adjust structure for InputMappedClassifier (if necessary) if (classifier instanceof weka.classifiers.misc.InputMappedClassifier) { format = ((weka.classifiers.misc.InputMappedClassifier) classifier) .getModelHeader(new Instances(format, 0)); } String classifierName = classifier.getClass().getName(); classifierName = classifierName.substring(classifierName.lastIndexOf('.') + 1, classifierName.length()); Instances newInstances = new Instances(insts); for (int i = 0; i < format.classAttribute().numValues(); i++) { weka.filters.unsupervised.attribute.Add addF = new weka.filters.unsupervised.attribute.Add(); addF.setAttributeIndex("last"); addF.setAttributeName(classifierName + "_prob_" + format.classAttribute().value(i)); addF.setInputFormat(newInstances); newInstances = weka.filters.Filter.useFilter(newInstances, addF); } newInstances.setRelationName(insts.relationName() + relationNameModifier); return newInstances; }
private Instances makeClusterDataSetProbabilities(Instances format, weka.clusterers.Clusterer clusterer, String relationNameModifier) throws Exception { Instances newInstances = new Instances(format); for (int i = 0; i < clusterer.numberOfClusters(); i++) { weka.filters.unsupervised.attribute.Add addF = new weka.filters.unsupervised.attribute.Add(); addF.setAttributeIndex("last"); addF.setAttributeName("prob_cluster" + i); addF.setInputFormat(newInstances); newInstances = weka.filters.Filter.useFilter(newInstances, addF); } newInstances.setRelationName(format.relationName() + relationNameModifier); return newInstances; }
/** * Constructor * * @param data a multi-label dataset */ public BinaryRelevanceTransformation(MultiLabelInstances data) { try { this.data = data; remove = new Remove(); int[] labelIndices = data.getLabelIndices(); int[] indices = new int[labelIndices.length]; System.arraycopy(labelIndices, 0, indices, 0, labelIndices.length); remove.setAttributeIndicesArray(indices); remove.setInvertSelection(false); remove.setInputFormat(data.getDataSet()); shell = Filter.useFilter(data.getDataSet(), remove); add = new Add(); add.setAttributeIndex("last"); add.setNominalLabels("0,1"); add.setAttributeName("BinaryRelevanceLabel"); add.setInputFormat(shell); shell = Filter.useFilter(shell, add); shell.setClassIndex(shell.numAttributes() - 1); } catch (Exception ex) { Logger.getLogger(BinaryRelevanceTransformation.class.getName()).log(Level.SEVERE, null, ex); } }
private Instances makeClusterDataSetProbabilities(Instances format, weka.clusterers.Clusterer clusterer, String relationNameModifier) throws Exception { Instances newInstances = new Instances(format); for (int i = 0; i < clusterer.numberOfClusters(); i++) { weka.filters.unsupervised.attribute.Add addF = new weka.filters.unsupervised.attribute.Add(); addF.setAttributeIndex("last"); addF.setAttributeName("prob_cluster" + i); addF.setInputFormat(newInstances); newInstances = weka.filters.Filter.useFilter(newInstances, addF); } newInstances.setRelationName(format.relationName() + relationNameModifier); return newInstances; }
/** * Adds an instance number attribute to the plottable instances, */ public void addInstanceNumberAttribute() { String originalRelationName = m_plotInstances.relationName(); int originalClassIndex = m_plotInstances.classIndex(); try { Add addF = new Add(); addF.setAttributeName("Instance_number"); addF.setAttributeIndex("first"); addF.setInputFormat(m_plotInstances); m_plotInstances = Filter.useFilter(m_plotInstances, addF); m_plotInstances.setClassIndex(originalClassIndex + 1); for (int i = 0; i < m_plotInstances.numInstances(); i++) { m_plotInstances.instance(i).setValue(0, i); } m_plotInstances.setRelationName(originalRelationName); } catch (Exception ex) { ex.printStackTrace(); } }
/** * Adds an instance number attribute to the plottable instances, */ public void addInstanceNumberAttribute() { String originalRelationName = m_plotInstances.relationName(); int originalClassIndex = m_plotInstances.classIndex(); try { Add addF = new Add(); addF.setAttributeName("Instance_number"); addF.setAttributeIndex("first"); addF.setInputFormat(m_plotInstances); m_plotInstances = Filter.useFilter(m_plotInstances, addF); m_plotInstances.setClassIndex(originalClassIndex + 1); for (int i = 0; i < m_plotInstances.numInstances(); i++) { m_plotInstances.instance(i).setValue(0, i); } m_plotInstances.setRelationName(originalRelationName); } catch (Exception ex) { ex.printStackTrace(); } }
add.setAttributeIndex("first"); add.setAttributeName("instanceID"); add.setInputFormat(transformed); transformed = Filter.useFilter(transformed, add); for (int i=0; i<transformed.numInstances(); i++) {
add.setInputFormat(newData); filteredData = Filter.useFilter(newData, add); int j = isMultilabel ? filteredData.numAttributes() - 1 : 0;
add.setInputFormat(newData); filteredData = Filter.useFilter(newData, add); int j = isMultilabel ? filteredData.numAttributes() - 1 : 0;
add.setInputFormat(newData); filteredData = Filter.useFilter(newData, add); int j = isMultilabel ? filteredData.numAttributes() - 1 : 0;