Предсказать новые данные на основе ранее кластеризованного набора - PullRequest
0 голосов
/ 04 мая 2019

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

[[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, поэтому переключение не является проблемой.

1 Ответ

0 голосов
/ 06 мая 2019

Когда вы хотите прогнозировать, используйте классификатор, а не кластеризацию.

Здесь наиболее подходящим классификатором, вероятно, будет классификатор 1NN.Из соображений производительности я бы выбрал DT или SVM.

...