2017-06-12 24 views
0

我有一个相当大的数据集,其中包含纯粹的分类数据。 数据的行数(样本)超过30,000,000。 属性已减少到4(列),所有属性(属性)都是明确的,其中一个属性几乎有50,000个级别!Clara_具有R中许多级别的分类数据的大数据集的数据集

我想在进一步处理之前将我的数据集群。但是,由于数据量很大,因此不可能使用大多数聚类算法。 我选择使用ClusterR软件包中的Clara_Medoids来尝试集群。我面临的问题是运行代码给我一个我无法解决的错误。

代码:

Cmediods_5 <- ClusterR::Clara_Medoids(MyData, clusters = 5, samples = 3, sample_size = 0.0005, distance_metric = "simple_matching_coefficient") 

,这是错误我接收:

错误check_NaN_Inf(数据): 与请求的类型不兼容:[式=字符;目标=双]。

我有一种感觉,这个错误是由于我使用“simple_matching_coefficient”距离度量,但我没有看到任何其他可行的选项,因为我的数据是纯粹的分类。 有没有办法绕过数据类型问题来让这个算法正常工作?显然,我不想创建任何虚拟变量,因为正如我之前解释的,其中一个属性约有5万个关卡!

为Clara_Medoids函数距离度量的选项有: 欧几里德,曼哈顿,切比雪夫,堪培拉,braycurtis,pearson_correlation,simple_matching_coefficient,闵可夫斯基,汉明,jaccard_coefficient,Rao_coefficient,马氏

不幸的是,它没有高尔距离否则,那将是我的选择。

+0

首先处理* sample *,然后放大。处理拥抱数据只是为了找出不工作是浪费时间。 –

回答

1

包装小插曲(http://mlampros.github.io/2016/09/12/clusterR_package/)就是一个例子。

一个使用因子变量如从晕影使用mushroom数据,结果在相同的错误您有:

library(ClusterR) 


cl_f = Clara_Medoids(mushroom[-1], clusters = 2, distance_metric = 'hamming', 
    samples = 5, sample_size = 0.2, swap_phase = TRUE, verbose = F, threads = 1) 

# Error in check_NaN_Inf(data) : 
# Not compatible with requested type: [type=character; target=double]. 

晕影建议使用的汉明距离(其计数非匹配的数目变量)和转换列数字:

dta <- as.data.frame(lapply(mushroom[-1], as.integer)) 

cl_f = Clara_Medoids(dta, clusters = 2, distance_metric = 'hamming', 
    samples = 5, sample_size = 0.2, swap_phase = TRUE, verbose = F, threads = 1) 

的小插曲也让使用高尔距离的例子,但是这涉及到计算距离矩阵,这可能不是你的数据集的选项。

+0

谢谢@Jan van der Laan,这很有帮助。虽然我不确定Hamming不相似性度量是否与我的数据相关,但我会尝试一下,看看是否根据此度量标准找到相关的群集。 – Ankhnesmerira

+0

所以想到更新,我尝试了海明距离,并且遗憾的是聚类看起来不太相关。 – Ankhnesmerira

+0

@Ankhnesmerira这太糟糕了。正如Anony-Mousse建议的那样,尝试例如使用您的数据样本的投影距离。我怀疑这并没有什么帮助。你只有4个分类变量。两个记录的比较将导致四个0/1。任何距离度量可能只是1的一些加权和。 –

0

我没有足够的声望,否则我只会添加评论。

在我看来,给你的数据样本将有助于解决你的问题,而无需做出假设。

由于@Jan van der Laan提到您的数据必须是数字类型(距离矩阵需要),但情况并非如此,这就是为什么您会收到错误。

您也应该知道,simple_matching_coefficient仅适用于二进制数据。

如果您的数据仅包含分类变量,那么汉明距离是适当的。在数据是混合数据类型(数字,因子等)的情况下,高功率距离工作良好。看看gowdis function of the FD packagedaisy function of the cluster package

在包描述中,我还添加了link以防万一任何人遇到问题。