У меня есть большой набор двоичных данных, которые мне нужно кластеризовать.Например,
[[0 1 1 0 ... 0 1 0 1 ],
[1 0 1 1 ... 0 0 1 1 ],
...
[0 0 1 0 ... 1 0 1 1 ]]
Из того, что я прочитал, лучшие алгоритмы кластеризации для двоичных данных являются иерархическими, такими как агломерационная кластеризация.Так что я реализовал это с помощью scikit.
У меня очень большой набор данных с новыми данными, поступающими все время, которые я хотел бы объединить в ранее кластеризованную группу.Поэтому я подумал о том, чтобы взять случайную выборку существующих данных, запустить AgglomerativeClustering и сохранить результаты в файл с помощью joblib.
Затем, когда прибудет новый набор данных, загрузите ранее кластер и вызовите предикат (), чтобы выяснить, где он упадет.Как будто я тренирую кластер, похожий на классификатор, но без меток.Проблема в том, что AgglomerativeClustering не имеет метода предиката ().Другие алгоритмы кластеризации в Scikit действительно имеют функцию предиката (), например KMeans, но, основываясь на моих исследованиях, этот алгоритм не годится для работы с двоичными данными.
Так что я застрял.Я не хочу запускать кластеризацию каждый раз, когда поступают новые данные, потому что иерархические алгоритмы хорошо масштабируются с большим количеством данных, но я не уверен, какой алгоритм использовать, который будет работать с двоичными данными, а также обеспечивать прогноз() функциональность.
Есть ли способ, которым я могу преобразовать двоичные данные, чтобы другие алгоритмы, такие как KMeans, могли обеспечить полезные выходные данные?Или в scikit не реализован совершенно другой алгоритм, который бы работал?Я не привязан к scikit, поэтому переключение не является проблемой.