ELKI (также на GitHub ) - проект с открытым исходным кодом для интеллектуального анализа данных. Он уникален по своей модульной архитектуре: вы можете комбинировать алгоритмы, функции расстояния и индексы для ускорения с очень небольшими ограничениями (конечно, алгоритмы, которые не используют расстояния, нельзя комбинировать с расстояниями). Это не самый простой код из-за эффективности. Для интеллектуального анализа данных вы должны быть осторожны с памятью - использование ArrayList<Integer>
не требуется, если вам нужна масштабируемость.
Благодаря модульной архитектуре легко добавлять только небольшие модули, например, одну функцию расстояния или алгоритм.
Мы ведем список идей проектов по интеллектуальному анализу данных , сгруппированных по сложности. Большинство проектов являются реализацией некоторого варианта алгоритма. ELKI стремится разрешить сравнительное изучение алгоритмов, поэтому мы стараемся разрешить любую комбинацию, а также охватить варианты алгоритмов. Например, с помощью k-средних у нас есть не только алгоритм Lloyds, но и 10 вариантов общей темы k-средних. Более 220 статей были (по крайней мере, частично) переизданы в ELKI.
Реализуя все в одном инструменте, мы получаем гораздо более сопоставимые результаты. Если вы используете R для бенчмаркинга, вы обычно сравниваете яблоки и апельсины. k-means в самом R - на самом деле старая программа на Фортране, и очень быстрая. k-означает в R, но в пакете "flexclust" медленнее в 100 раз, потому что оно написано в реальном R-коде. Так что не доверяйте эталонному тесту в R ... также, R-модули, как правило, несовместимы, поэтому вы часто не можете использовать расстояние A от модулей A с алгоритмом B от модуля B. В ELKI мы пытаемся разделить столько кода, сколько В разных реализациях возможно уменьшить количество таких артефактов (конечно, никогда не удастся получить 100% справедливый эталон - всегда есть место для оптимизации), но также можно легко комбинировать модули.
Вы можете начать с чего-то небольшого, такого как вариант k-средних Хартигана и Вонга, а затем перейти к сферическому k-среднему (что предназначено для разреженных данных, где может потребоваться различная оптимизация производительности) и продолжить добавлять улучшенную поддержку категориальных данных; или добавление функции индексирования.
Я также хотел бы увидеть лучший интерфейс для ELKI , но это серьезное усилие.