Я использую javaml для обучения классификатора. Теперь экземпляры в моих данных содержат векторы в формате, как этотjavaml java.lang.OutOfMemoryError: Java heap space
1 0: 5 1: 9 24: 2 ......
поэтому, когда я прочитал это из файла я использую строку. Трещина. Затем добавьте значения в sparseinstance, которые затем добавляются в классификатор.
Однако я получаю пустое место из памяти. Я читал о том, что string.split() вызывает утечку памяти, поэтому я использовал новую строку, чтобы избежать утечки памяти. Однако я по-прежнему сталкивается с проблемой кучи пространства
Код выглядит следующим образом
/////////////////////////// /////////////
BufferedReader br = new BufferedReader(new FileReader("Repository\\IMDB Data\\Train.feat"));
Dataset data=new DefaultDataset();
String TrainLine;
int j=0;
while((TrainLine = br.readLine()) != null && j < 20000){
//TrainLine.replaceAll(":", " ");
String[] arr = TrainLine.split("\\D+");
double[] nums = new double[arr.length];
for (int i = 0; i < nums.length; i++) {
nums[i] = Double.parseDouble(new String(arr[i]));
}
//vector has one less element than arr 85527
String label;
if(nums[0] == 1){
label = "positive";
}else{
label = "negative";
}
System.out.println(label);
Instance instance = new SparseInstance(85527,label);
int i;
for(i=1;i<arr.length;i=i+2){
instance.put((int)nums[i],nums[i+1]);
//Strings have been converted to new strings to overcome memory leak
}
data.add(instance);
j++;
}
knn = new KNearestNeighbors(5);
knn.buildClassifier(data);
svm = new LibSVM();
svm.buildClassifier(data);
////////////////////////////// //////////
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
at java.util.TreeMap.put(Unknown Source)
at java.util.TreeSet.add(Unknown Source)
at java.util.AbstractCollection.addAll(Unknown Source)
at java.util.TreeSet.addAll(Unknown Source)
at net.sf.javaml.core.SparseInstance.keySet(SparseInstance.java:144)
at net.sf.javaml.core.SparseInstance.keySet(SparseInstance.java:27)
at libsvm.LibSVM.transformDataset(LibSVM.java:80)
at libsvm.LibSVM.buildClassifier(LibSVM.java:127)
at backend.ShubhamKNN.<init>(ShubhamKNN.java:55)
http://stackoverflow.com/questions/37335/how-to-deal-with-java-lang-outofmemoryerror-java-heap- space-error-64mb-heap – Pratik
что-то не так с вашим объектом DataSet. это может быть неудачным в 'knn.buildClassifier (data);' – Prashant
@Prashant набор данных прекрасен, и он не терпит неудачу в knn.buildClassifier (данные). –