Я искал реализацию C++ алгоритма C4.5, но не нашел еще не смог найти. Я нашел C4.5 Release 8 от Quinlan, но он написан на C... кто-нибудь видел открытые исходные C++ реализации алгоритма C4.5?
Я думаю о портировании исходного кода J48 (или просто написание оболочки вокруг версии C), если я не могу найти реализацию C++ с открытым исходным кодом, но я надеюсь, что мне не придется этого делать! Пожалуйста, дайте мне знать, если вы столкнулись с реализацией алгоритма на C++.
Обновлять
Я рассматривал вариант написания тонкой оболочки C++ вокруг реализации C алгоритма C5.0 (C5.0 — улучшенная версия C4.5). Я скачал и скомпилировал реализацию алгоритма C5.0 на языке C, но не похоже, чтобы его было легко перенести на C++. Реализация C использует множество глобальных переменных, и простое написание тонкой оболочки C++ вокруг функций C не приведет к объектно-ориентированному дизайну, поскольку каждый экземпляр класса будет изменять одни и те же глобальные параметры. Другими словами: У меня не будет инкапсуляции, а это довольно простая вещь, которая мне нужна.
Чтобы получить инкапсуляцию, мне нужно будет полностью портировать код C на C++, что примерно так же, как портировать версию Java (J48) на C++.
Обновление 2.0
Вот некоторые конкретные требования:
- Каждый экземпляр классификатора должен инкапсулировать свои собственные данные (т. е. никаких глобальных переменных, кроме постоянных).
- Поддержка одновременного обучения классификаторов и одновременной оценки классификаторов.
Вот хороший сценарий: предположим, я выполняю 10-кратную перекрестную проверку, я хотел бы одновременно обучить 10 деревьев решений с их соответствующим фрагментом обучающего набора. Если бы я просто запускал программу C для каждого слайса, мне пришлось бы запускать 10 процессов, что не так уж и ужасно. Однако, если мне нужно классифицировать тысячи выборок данных в режиме реального времени, мне придется начинать новый процесс для каждой выборки, которую я хочу классифицировать, а это не очень эффективно.