2013-09-19 5 views
0

В настоящее время я работаю над кластеризацией некоторых больших данных, около 30 тыс. Строк, матрица различий, слишком большая для обработки R, я думаю, что это не проблема с размером памяти. Может быть, есть какой-то умный способ сделать это?Как вычислить массивную матрицу несходства в R

+3

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

+0

Возможно, вы захотите изучить другие приложения и алгоритмы. Я часто использую ELKI с 110k до 2m объектов. –

ответ

1

Если данные настолько велико, что основание R не может легко справиться, то у вас есть несколько вариантов:

  • Работа на машине с большим количеством оперативной памяти.
  • Использовать коммерческий продукт, например. Revolution Analytics, которая поддерживает работу с большими данными с R.

Вот пример использования RevoScaleR коммерческого пакета от Revolution. Я использую набор данных diamonds, часть ggplot2, так как он содержит строки 53K, то есть немного больше ваших данных. Пример не имеет большой аналитический смысл, так как я наивно преобразовать факторы в числовые значения, но она иллюстрирует вычисление на ноутбуке:

library(ggplot2) 
library(RevoScaleR) 
artificial <- as.data.frame(sapply(diamonds, as.numeric)) 
clusters <- rxKmeans(~carat + cut + color + clarity + price, 
        data=artificial, numClusters=6) 
clusters$centers 

Это приводит к:

 carat  cut color clarity  price 
1 0.3873094 4.073170 3.294146 4.553910 932.6134 
2 1.9338503 3.873151 4.285970 3.623935 16171.7006 
3 1.0529018 3.655348 3.866056 3.135403 4897.1073 
4 0.7298475 3.794888 3.486457 3.899821 2653.7674 
5 1.2653675 3.879387 4.025984 4.065154 7777.0613 
6 1.5808225 3.904489 4.066285 4.066285 11562.5788 
+0

Спасибо, мне нужно заплатить лицензионный сбор, если я его использую? Может быть, я должен попробовать сделать кластеризацию на Hadoop. – linus

Смежные вопросы