DataSource source = new DataSource(new File("mycsvinputfile")); System.out.println(source.getStructure()); Instances data = source.getDataSet(); // setting class attribute if the data format does not provide this information // For example, the XRFF format saves the class attribute information as well if (data.classIndex() == -1) data.setClassIndex(data.numAttributes() - 1); //initialize svm classifier LibSVM svm = new LibSVM(); svm.buildClassifier(data);
private static ArrayList<String> getLabels(Instances data) { int numLabels = data.classIndex(); ArrayList<String> list = new ArrayList<String>(); for (int i = 0; i < numLabels; i++) { list.add(data.attribute(i).name()); } return list; } }
public static final String toDebugString(Instances D) { int L = D.classIndex(); StringBuilder sb = new StringBuilder(); sb.append("D="+D.numInstances()); sb.append(" L="+L+" {"); for(int j = 0; j < L; j++) { sb.append(D.attribute(j).name()+" "); } sb.append("}"); return sb.toString(); }
protected Instances convert(Instances D, int j, int k) { int L = D.classIndex(); D = new Instances(D); D.insertAttributeAt(classAttribute,0); D.setClassIndex(0); for(int i = 0; i < D.numInstances(); i++) { String c = (String)((int)Math.round(D.instance(i).value(j+1))+""+(int)Math.round(D.instance(i).value(k+1))); D.instance(i).setClassValue(c); } for (int i = 0; i < L; i++) D.deleteAttributeAt(1); m_InstancesTemplate = new Instances(D,0); return D; }
for (i = 0; i < data.numAttributes(); i++) { if (i == data.classIndex()) { atts.add((Attribute) data.attribute(i).copy()); } else { atts.add(data.attribute(i).copy(prefix + data.attribute(i).name())); result = new Instances(data.relationName(), atts, data.numInstances()); for (i = 0; i < data.numInstances(); i++) { result.add((Instance) data.instance(i).copy()); if (data.classIndex() > -1) { result.setClassIndex(data.classIndex());
/** * GetXfromD - Extract attributes as a double X[][] from Instances D. * TODO: getXfromInstances would be a better name. */ public static double[][] getXfromD(Instances D) { int N = D.numInstances(); int L = D.classIndex(); int d = D.numAttributes()-L; //System.out.println("d="+d); double X[][] = new double[N][d]; for(int i = 0; i < N; i++) { for(int k = 0; k < d; k++) { X[i][k] = D.instance(i).value(k+L); } } return X; }
@Override public void validate(Instances data) throws InvalidInputDataException { if (!((data.attribute(0).isString() && data.classIndex() == 1) || (data.attribute(1).isString() && data.classIndex() == 0))) { throw new InvalidInputDataException( "An ARFF is required with a string attribute and a class attribute"); } if (data.numAttributes() != 2) { throw new InvalidInputDataException( "There must be exactly two attributes: 1) Text 2) Label. " + "The given data consists of " + data.numAttributes() + " attributes."); } }
/** * SetLabelsMissing - Set all labels in D to missing. */ public static Instances setLabelsMissing(Instances D) { int L = D.classIndex(); for(int i = 0; i < D.numInstances(); i++) { for(int j = 0; j < L ; j++) { D.instance(i).setMissing(j); } } return D; }
@Override public void buildClassifier(Instances D) throws Exception { testCapabilities(D); int L = D.classIndex(); // Transform Instances if(getDebug()) System.out.print("Transforming Instances ..."); Instances D_ = PSUtils.LCTransformation(D,L); m_InstancesTemplate = new Instances(D_,0); // Set Info ; Build Classifier info = "K = "+m_InstancesTemplate.attribute(0).numValues() + ", N = "+D_.numInstances(); if(getDebug()) System.out.print("Building Classifier ("+info+"), ..."); m_Classifier.buildClassifier(D_); if(getDebug()) System.out.println("Done"); }
@Override public void buildClassifier(Instances D) throws Exception { int L = D.classIndex(); int N = D.numInstances(); // Get partition from dataset hierarchy kMap = SuperLabelUtils.getPartitionFromDatasetHierarchy(D); m_M = kMap.length; m_Classifiers = AbstractClassifier.makeCopies(m_Classifier,m_M); m_InstancesTemplates = new Instances[m_M]; for(int i = 0; i < m_M; i++) { if (getDebug()) System.out.println("Building model "+(i+1)+"/"+m_M+": "+Arrays.toString(kMap[i])); Instances D_i = SuperLabelUtils.makePartitionDataset(D,kMap[i]); m_Classifiers[i].buildClassifier(D_i); m_InstancesTemplates[i] = new Instances(D_i,0); } }
@Override public void buildClassifier(Instances D) throws Exception { testCapabilities(D); int L = D.classIndex(); if(getDebug()) System.out.print("Creating "+L+" models ("+m_Classifier.getClass().getName()+"): "); m_MultiClassifiers = AbstractClassifier.makeCopies(m_Classifier,L); m_Templates = new Instances[L]; for(int j = 0; j < L; j++) { //Select only class attribute 'j' m_Templates[j] = MLUtils.keepAttributesAt(new Instances(D),new int[]{j},L); m_Templates[j].setClassIndex(0); //Build the classifier for that class m_MultiClassifiers[j].buildClassifier(m_Templates[j]); if(getDebug()) System.out.print(" " + (m_Templates[j].classAttribute().name())); m_Templates[j] = new Instances(m_Templates[j], 0); } }
/** * Sets up the UI's attributes lists */ public void setupAttribLists() { String[] tempAttribNames = new String[m_data.numAttributes()]; String type; m_classAttrib.removeAllItems(); for (int i = 0; i < tempAttribNames.length; i++) { type = " (" + Attribute.typeToStringShort(m_data.attribute(i)) + ")"; tempAttribNames[i] = new String("Colour: " + m_data.attribute(i).name() + " " + type); m_classAttrib.addItem(tempAttribNames[i]); } if (m_data.classIndex() == -1) { m_classAttrib.setSelectedIndex(tempAttribNames.length - 1); } else { m_classAttrib.setSelectedIndex(m_data.classIndex()); } m_attribList.setListData(tempAttribNames); m_attribList.setSelectionInterval(0, tempAttribNames.length - 1); }
/** * generates a consequence of length 1 for a class association rule. * * @param instances the instances under consideration * @return FastVector with consequences of length 1 */ public static ArrayList<Object> singleConsequence(Instances instances) { ItemSet consequence; ArrayList<Object> consequences = new ArrayList<Object>(); for (int j = 0; j < (instances.classAttribute()).numValues(); j++) { consequence = new ItemSet(instances.numInstances()); int[] consequenceItems = new int[instances.numAttributes()]; consequence.setItem(consequenceItems); for (int k = 0; k < instances.numAttributes(); k++) { consequence.setItemAt(-1, k); } consequence.setItemAt(j, instances.classIndex()); consequences.add(consequence); } return consequences; }
/** * GetKs - return [K_1,K_2,...,K_L] where each Y_j \in {1,...,K_j}. * @param D a dataset */ private static int[] getKs(Instances D) { int L = D.classIndex(); int K[] = new int[L]; for(int k = 0; k < L; k++) { K[k] = D.attribute(k).numValues(); } return K; }
/** * * @param bayesNet * @param instances the instances to work with * @throws Exception if something goes wrong */ public void buildStructure (BayesNet bayesNet, Instances instances) throws Exception { for (int iAttribute = 0; iAttribute < instances.numAttributes(); iAttribute++) { if (iAttribute != instances.classIndex()) { bayesNet.getParentSet(iAttribute).addParent(instances.classIndex(), instances); } } } // buildStructure
@Override public Instances determineOutputFormat(Instances D) throws Exception { //System.out.println("DETERMINE OUTPUT FORMAT = "+D.numInstances()); Instances D_out = new Instances(D,0); int L = D.classIndex(); for(int i = 0; i < L-indices.length; i++) { D_out.deleteAttributeAt(0); } return D_out; }
protected Instances convert(Instances D, int j, int k) { int L = D.classIndex(); D = new Instances(D); D.insertAttributeAt(classAttribute,0); D.setClassIndex(0); for(int i = 0; i < D.numInstances(); i++) { String c = (String)((int)Math.round(D.instance(i).value(j+1))+""+(int)Math.round(D.instance(i).value(k+1))); D.instance(i).setClassValue(c); } for (int i = 0; i < L; i++) D.deleteAttributeAt(1); m_InstancesTemplate = new Instances(D,0); return D; }
for (i = 0; i < data.numAttributes(); i++) { if (i == data.classIndex()) { atts.add((Attribute) data.attribute(i).copy()); } else { atts.add(data.attribute(i).copy(prefix + data.attribute(i).name())); result = new Instances(data.relationName(), atts, data.numInstances()); for (i = 0; i < data.numInstances(); i++) { result.add((Instance) data.instance(i).copy()); if (data.classIndex() > -1) { result.setClassIndex(data.classIndex());
/** * GetXfromD - Extract attributes as a double X[][] from Instances D. * TODO: getXfromInstances would be a better name. */ public static double[][] getXfromD(Instances D) { int N = D.numInstances(); int L = D.classIndex(); int d = D.numAttributes()-L; //System.out.println("d="+d); double X[][] = new double[N][d]; for(int i = 0; i < N; i++) { for(int k = 0; k < d; k++) { X[i][k] = D.instance(i).value(k+L); } } return X; }
/** * Returns true if all attribute weights are the same and false otherwise. Returns true if there are no attributes. * The class attribute (if set) is skipped when this test is performed. */ public boolean allAttributeWeightsIdentical() { boolean foundOne = false; double weight = 0; for (int i = 0; i < numAttributes(); i++) { if (i != classIndex()) { if (foundOne && (attribute(i).weight() != weight)) { return false; } else if (!foundOne) { foundOne = true; weight = attribute(i).weight(); } } } return true; }