кластеризация на очень большой разреженной матрице?

Я пытаюсь сделать некоторую (k-средних) кластеризацию на очень большой матрице.

Матрица составляет приблизительно 500000 строк x 4000 столбцов, но очень разреженная (только пара значений «1» на строку). Я хочу получить около 2000 кластеров.

У меня есть два вопроса: - Может ли кто-нибудь порекомендовать платформу с открытым исходным кодом или инструмент для этого (возможно, с использованием k-means, может быть, с чем-то лучше)? - Как я могу наилучшим образом оценить время, которое потребуется алгоритму для завершения? Однажды я попробовал weka, но через пару дней прервал работу, потому что не мог сказать, сколько времени это займет.

Спасибо!