Использование PyLucene в качестве классификатора K-NN

У меня есть набор данных, состоящий из миллионов примеров, где каждый пример содержит 128 непрерывных функций, классифицированных по имени. Я пытаюсь найти большую надежную базу данных / индекс для использования в качестве классификатора KNN для многомерных данных. Я попробовал классификатор IBk от Weka, но он забивает столько данных, и даже тогда он должен быть загружен в память. Будет ли Lucene, особенно через интерфейс PyLucene, возможной альтернативой?

Я нашел Lire, который, похоже, использует Lucene аналогичным образом, но после просмотра кода я не уверен, как они его реализуют, или, если это то же самое, что я пытаюсь сделать.

Я понимаю, что Lucene разработан как инструмент индексирования текста, а не как классификатор общего назначения, но возможно ли использовать его таким образом?

2 ответа

Решение

Lucene не кажется правильным выбором, учитывая то, что вы нам сказали. Lucene даст вам способ хранения данных, но с точки зрения поиска он не предназначен для выполнения каких-либо действий, кроме поиска по текстовым строкам.

Поскольку K-NN очень прост, вам лучше создать собственное хранилище данных в типичной СУБД или что-то вроде Berkeley DB. Вы можете создавать ключи / индикаторы на основе суб-гиперкубов различных измерений, чтобы ускорить процесс - начать с корзины предмета, который нужно классифицировать, и двигаться наружу...

Это сделано в Lucene уже с геопространственными поисками. Конечно, во встроенных геопространственных поисках используются только два измерения, поэтому вам придется немного его изменить. Но основная идея использования запросов с числовым диапазоном будет работать.

(Примечание: я не знаю никого, кто бы делал многомерный kNN с Lucene. Поэтому я не могу комментировать, как быстро это будет.)

Другие вопросы по тегам