包 mclust 中的函数 Mclust() 出错
Error in function Mclust() in package mclust
先来看看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做集群怎么办?
Mclust
的实现方式,会使用quadratic内存。
计算一下。 716213 * 716213 * 每个双精度 8 个字节。
这个不是必须的,但是默认操作。您可以使用 initialization
来选择成本较低的初始化。但是要对大型地理数据集进行聚类,您也应该看看 ELKI。如果我没记错的话,它的EM实现应该只需要线性内存。
先来看看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做集群怎么办?
Mclust
的实现方式,会使用quadratic内存。
计算一下。 716213 * 716213 * 每个双精度 8 个字节。
这个不是必须的,但是默认操作。您可以使用 initialization
来选择成本较低的初始化。但是要对大型地理数据集进行聚类,您也应该看看 ELKI。如果我没记错的话,它的EM实现应该只需要线性内存。