Код Java ниже без ошибок, но он работает с несколькими ошибками.Итак, чего не хватает или проблема? - PullRequest
0 голосов
/ 05 июля 2019
package cbr;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.Writer;
import weka.clusterers.ClusterEvaluation;
import weka.clusterers.FarthestFirst;
import weka.core.Instances;
import weka.filters.Filter;
import weka.filters.unsupervised.attribute.Remove;
public class Cluster {
protected int m_NumClusters;
protected Instances m_ClusterCentroids;
protected Instances m_instances;
protected int m_Seed;
public static void main(String[] args) throws Exception {
Instances data = new Instances(new 
BufferedReader(new  
FileReader("FinalDatasetforCBSAPDS.arff")));
data.setClassIndex(data.numAttributes() -1);
Remove filter = new Remove();
filter.setAttributeIndices("" +(data.classIndex() + 1));
filter.setInputFormat(data);
Instances dataClusterer = Filter.useFilter(data, filter);
FarthestFirst clusterer = new FarthestFirst();
clusterer.setNumClusters(5);
clusterer.setSeed(5127); // set the seed size
String[] options = new String[2];
int nClusters = 5;
int seed = 5127;
options[0] = String.valueOf(nClusters);
options[1] = String.valueOf(seed);
clusterer.setOptions(options);           
ClusterEvaluation eval= new ClusterEvaluation();
eval.setClusterer(clusterer);
eval.evaluateClusterer(data);
System.out.println("# of clusters: " + 
eval.getNumClusters());
clusterer.buildClusterer(dataClusterer);
eval.setClusterer(clusterer);
eval.evaluateClusterer(data);
System.out.println(eval.clusterResultsToString());
Instances centroids = clusterer.getClusterCentroids();
int numclusters = clusterer.getNumClusters();
String filename = "Final_Dataset";
filename += "for_CBSAPDS";
filename += ".txt";
File file = new File(filename);
try (Writer writer = new BufferedWriter(new 
FileWriter(file))) {
for (int i= 0; i<=5127; i++) {
for (int j= 0; j<numclusters; j++) {
String centroidsStr= centroids.instance(i).toString();
String[] to = centroidsStr.split(",");
writer.write(Integer.toString(i));
writer.write(",");
writer.write(data.instance(j) + "," + "case" + i + "," + (to[0]));
writer.write("\n");
}

}

System.out.println("\nInformation:");
}

}

}

Это Java-код для самого первого алгоритма кластеризации, который я написал для интеграции самого дальнего алгоритма кластеризации с CBR.Но он запускается с сообщениями типа: Исключение в потоке '' main '' java.lang.Exception: недопустимые параметры: 5 527 на weka.core.Utils.checkForRemainingOptions (Utils.java:505) на weka.clusterers.FarthesFirst.setOptions(FarthestFirst.java:568) на cbr.Cluster.main (Cluster.java). Так что мне нужна помощь по этим вопросам.Проблема со строкой: clusterer.setOptions (options);Спасибо за вашу помощь.

...