I have a distance matrix, which is symmetric. And I want to create Instances object to apply HierarchicalClusterer. I search for solutions and ended up 2 options but I am not sure if it is correct. Could you advise or point out what I might be doing wrong?
Code:
double[][] matrix;
String[] names;
......
int numDimensions = names.length;
int numInstances = names.length;
FastVector atts = new FastVector();
//this is one way....
List<Instance> instances = new ArrayList<Instance>();
for(int i = 0; i<numDimensions; i++){
Attribute current = new Attribute("Attribute"+i, i);
// Attribute current = new Attribute(names[i], i);
//create instances
if(i==0){
for(int obj = 0; obj < numInstances; obj++){
instances.add(new SparseInstance(numDimensions));
}
}
//fill the values
for(int j = 0; j < numInstances; j++){
instances.get(j).setValue(current, matrix[i][j]);
}
atts.addElement(current);
}
//create new dataset
Instances newDataset = new Instances("Dataset", atts, instances.size());
//fill in data objects
for(Instance inst:instances){
newDataset.add(inst);
}
//another way
//create new dataset
Instances newDataset = new Instances("Dataset", atts, instances.size());
//fill in data objects
for(Instance inst:instances){
newDataset.add(inst);
}
for(int i = 0; i<numInstances; i++){
atts.addElement(new Attribute(samples[i]));
}
Instances newDataset = new Instances("Dataset", atts, 0);
for(int i = 0; i<numInstances; i++){
double[] vals = matrix[i];
newDataset.add(new Instance(1.0, vals));
}