2017-10-18 9 views
0

J'applique l'algorithme d'Aprioiri sur mes données. Les données ont près de 700 enregistrements avec près de 81 attributs. Je veux générer des règles d'association pour ces données. Ce est le code de mon programme:java heap erreur d'espace dans weka.apriori

public class Aprioritest { 

/** 
* @param args the command line arguments 
*/ 
public static void main(String[] args) throws Exception { 
String dataset = "C:/Users/pc-4/Desktop/CasebaseWithDiseasenamesCSV_1.arff"; 
DataSource source = new DataSource(dataset); 
Instances newData = source.getDataSet(); 

NumericToNominal filter = new NumericToNominal(); 
    filter.setInputFormat(newData); 
    newData = Filter.useFilter(newData, filter); 

     for(int i=0; i<5; i=i+1) 
    { 
     System.out.println("Nominal? "+newData .attribute(i).isNominal()); 
    } 

    Apriori model = new Apriori(); 

model.buildAssociations(newData); 
System.out.println(model); 
} 

} 

Mais après avoir couru pendant quinze minutes, il donne l'erreur suivante:

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space 
    at java.util.Arrays.copyOf(Arrays.java:3181) 
    at java.util.ArrayList.grow(ArrayList.java:261) 
    at java.util.ArrayList.ensureExplicitCapacity(ArrayList.java:235) 
    at java.util.ArrayList.ensureCapacityInternal(ArrayList.java:227) 
    at java.util.ArrayList.add(ArrayList.java:458) 
    at weka.associations.AprioriItemSet.mergeAllItemSets(AprioriItemSet.java:587) 
    at weka.associations.Apriori.findLargeItemSets(Apriori.java:1677) 
    at weka.associations.Apriori.buildAssociations(Apriori.java:518) 
    at aprioritest.Aprioritest.main(Aprioritest.java:43) 
C:\Users\pc-4\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53:   
Java returned: 1 
BUILD FAILED (total time: 15 minutes 27 seconds) 

Les données sont au format .arff et chaque attribut a 1 ou 0 Seul le dernier attribut représente la classe résultante. Voici les 5 exemples de données:

0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,A 0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,A 0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,A 0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,A 0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,A

pouvez-vous s'il vous plaît trouver le problème?

Répondre

0

Au lieu de 0, utilisez undefined pour indiquer l'absence.

En outre, vous devrez augmenter la limite de mémoire et préférer utiliser des algorithmes plus efficaces tels que FPGrowth et des outils plus efficaces en mémoire que Weka.