/** Creates a specialized Add */ public Filter getFilter(int pos) { Add af = new Add(); af.setAttributeIndex("" + (pos + 1)); return af; }
/** Creates a specialized Add */ public Filter getFilter(int pos) { Add af = new Add(); af.setAttributeIndex("" + (pos + 1)); return af; }
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.setAttributeIndex("last"); String classifierName = classifier.getClass().getName(); classifierName =
addF.setAttributeIndex("last"); String classifierName = classifier.getClass().getName(); classifierName =
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(); } }
/** Creates a configured MultiFilter */ public Filter getConfiguredFilter() { MultiFilter result = new MultiFilter(); Filter[] filters = new Filter[2]; filters[0] = new Add(); ((Add) filters[0]).setAttributeIndex("last"); filters[1] = new AddExpression(); ((AddExpression) filters[1]).setExpression("a3+a6"); result.setFilters(filters); return result; }
/** Creates a configured MultiFilter */ public Filter getConfiguredFilter() { MultiFilter result = new MultiFilter(); Filter[] filters = new Filter[2]; filters[0] = new Add(); ((Add) filters[0]).setAttributeIndex("last"); filters[1] = new AddExpression(); ((AddExpression) filters[1]).setExpression("a3+a6"); result.setFilters(filters); return result; }
add.setAttributeIndex("last"); add.setAttributeIndex("first");
add.setAttributeIndex("last"); add.setAttributeIndex("first");
add.setAttributeIndex("first"); add.setAttributeName("instanceID"); add.setInputFormat(transformed);