Auf der Suche nach einer C ++ - Implementierung des C4.5-Algorithmus

Ich habe nach einer C ++ - Implementierung der gesuchtC4.5-Algorithmus, aber ich konnte noch keinen finden. Ich habe Quinlan gefundenC4.5 Release 8, aber es ist in C geschrieben ... hat jemand eine Open-Source-C ++ - Implementierung des C4.5-Algorithmus gesehen?

Ich denke darüber nach, das zu portierenJ48-Quellcode (oder einfach einen Wrapper um die C-Version schreiben), wenn ich dort draußen keine Open-Source-C ++ -Implementierung finden kann, aber ich hoffe, dass ich das nicht tun muss! Bitte lassen Sie mich wissen, wenn Sie auf eine C ++ - Implementierung des Algorithmus gestoßen sind.

Aktualisieren

Ich habe überlegt, ob ich einedünner C ++ - Wrapper rund um die C-Implementierung des C5.0-Algorithmus (C5.0 ist die verbesserte Version von C4.5). Ich habe die C-Implementierung des C5.0-Algorithmus heruntergeladen und kompiliert, aber es sieht nicht so aus, als wäre sie leicht auf C ++ übertragbar. Die C-Implementierung verwendet viele globale Variablen und das einfache Schreiben eines dünnen C ++ - Wrappers um die C-Funktionen führt nicht zu einem objektorientierten Entwurf, da jede Klasseninstanz dieselben globalen Parameter ändert. Mit anderen Worten:Ich werde keine Kapselung haben und das ist eine ziemlich grundlegende Sache, die ich brauche.

Um die Kapselung zu erhalten, muss ein vollständiger Port des C-Codes in C ++ erstellt werden. Dies entspricht in etwa der Portierung der Java-Version (J48) in C ++.

Update 2.0

Hier sind einige spezifische Anforderungen:

Jede Klassifikatorinstanz muss ihre eigenen Daten einkapseln (d. H. Keine globalen Variablen außer konstanten).Unterstützen Sie das gleichzeitige Training von Klassifikatoren und die gleichzeitige Auswertung der Klassifikatoren.

Hier ist ein gutes Szenario: Angenommen, ich mache eine 10-fache Kreuzvalidierung und möchte gleichzeitig 10 Entscheidungsbäume mit ihrem jeweiligen Teil des Trainingssatzes trainieren. Wenn ich nur das C-Programm für jedes Segment ausführen würde, müsste ich 10 Prozesse ausführen, was nicht schrecklich ist. Wenn ich jedoch Tausende von Datenproben in Echtzeit klassifizieren muss, muss ich für jede Probe, die ich klassifizieren möchte, einen neuen Prozess starten, und das ist nicht sehr effizient.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage