2009-12-15 1 views
5

Hat jemand jemals ein Training für CI-Bayes beibehalten? Ich habe Beispielcode von dieser Seite: http://www.theserverside.com/news/thread.tss?thread_id=49773Persistenz auf Java CI-Bayes-Objekt

hier ist der Code:

FisherClassifier fc=new FisherClassifierImpl(); 
fc.train("The quick brown fox jumps over the lazy dog's tail","good"); 
fc.train("Make money fast!", "bad"); 
String classification=fc.getClassification("money", "unknown"); // should be "bad" 

so muß ich in die Lage, den Trainingssatz in einer lokalen Datei zu speichern.

Hat jemand das schon mal gemacht?

Antwort

0

Um ein Java-Objekt in einer lokalen Datei beizubehalten, muss das Objekt zuerst die Serializable-Schnittstelle implementieren.

import java.io.Serializable; 
public class MyClass implements Serializable {... 

Dann wird die Klasse, von dem Sie mögen, dass dieser Trainingssatz bestehen bleiben, sollte ein Verfahren umfassen wie:

public void persistTrainingSet(FisherClassifier fc) { 
    String outputFile = <path/to/output/file>; 

    try { 
     FileOutputStream fos = new FileOutputStream(outputFile); 
     ObjectOutputStream oos = new ObjectOutputStream(fos); 
     oos.writeObject(fc); 
     oos.close(); 
    } 
    catch (IOException e) { 
     //handle exception 
    } 
    finally { 
     //do any cleaning up 
    } 
} 
0

ich habe. Nachdem ich ein paar Projekte mit CI-Bayes gemacht habe, würde ich Ihnen empfehlen, sich woanders umzusehen (natürlich war das schon lange her). Es ist eine sehr schlechte Idee, eine Inferenz-Engine zu verwenden, die vor jeder Verwendung trainiert werden muss, und wenn Sie wirklich das Problem der Zustandsverwaltung betrachten, ist es kompliziert (zB wollen Sie nur die Trainingsdaten speichern oder vielleicht die trainierten Distributionen? Ketten?).

CI-Bayes ist auch eine Art verschachtelte Codebasis. Es wurde aus Python-Code modelliert, der in einem Buch über Intelligenz erschien. Die Java-Version ist nicht sehr gut gestaltet. Es verwendet auch nicht TDD, JavaDoc hat nicht wirklich zu sprechen.

Das heißt, Sie können einen einfachen Klassifikator ziemlich schnell gehen. Das längerfristige Ziel ist das, wonach Sie gefragt haben.