首先,我们来看看mydata
:
head(mydata,10)
LONGITUDE LATITUDE
1 121.7779 39.0476
2 121.5210 38.8771
3 121.6259 38.9224
4 121.5907 38.8980
5 121.5865 38.8816
6 121.5808 38.9121
7 121.5806 38.8843
8 121.5907 38.8992
9 121.7586 39.0380
10 121.6061 38.9035
dim(mydata)
[1] 716213 2
summary(mydata)
LONGITUDE LATITUDE
Min. :121.1 Min. :38.72
1st Qu.:121.6 1st Qu.:38.91
Median :121.6 Median :38.93
Mean :121.6 Mean :38.95
3rd Qu.:121.6 3rd Qu.:38.99
Max. :122.2 Max. :39.40
mydata的整体尺寸小于20Mb。
现在,我想用mydata进行集群,我在包Mclust()
中使用mclust
,这被称为EM(期望最大化)。
fit_em <- Mclust(mydata)
令我惊讶的是,在我输入代码后,我等了1个多小时才得到结果,是一个错误。详细信息如下:
Error: cannot allocate vector of size 1910.9 Gb
In addition: Warning messages:
1: In hcVVV(data = c(121.7779, 121.521, 121.6259, 121.5907, 121.5865, :
NAs introduced by coercion to integer range
2: In double(ld) :
Reached total allocation of 8191Mb: see help(memory.size)
3: In double(ld) :
Reached total allocation of 8191Mb: see help(memory.size)
4: In double(ld) :
Reached total allocation of 8191Mb: see help(memory.size)
5: In double(ld) :
Reached total allocation of 8191Mb: see help(memory.size)
mydata和我的代码出了什么问题,如果我想用mydata进行集群,该怎么办?
答案 0 :(得分:0)
实现Mclust
的方式,它将使用二次内存。
算一算。 716213 * 716213 *每双8字节。
这不是必需的,而是默认操作。您可以使用initialization
选择较便宜的初始化。但是要聚类大型地理数据集,您也应该看看ELKI。如果我没弄错的话,它的EM实现应该只需要线性内存。