等深度分级 - 是否只是将数据分组为k组

时间:2015-12-14 10:07:07

标签: data-mining binning

对等深度或相等频率分级的小混淆

等深度分级表示 - 它将范围分为N个区间,每个区间包含大致相同数量的样本

让我们拿一小部分虹膜数据

 res <- do.call(rbind,lapply(strsplit(mydf[,2], ','), 
             function(x) {
    x1 <- unique(x)
    data.frame(new.freq=length(x1), uniq.customer_sample_id=toString(x1))}))


 res
  #new.freq                                                                                #                             uniq.customer_sample_id
#1        5 AMLM12001KP ( chr2 : chr9 ), 1028701 ( chr2 : chr9 ), 1220901 ( chr2 : chr9 ), AMLM12015WPS ( chr2 : chr9 ), AML203 ( chr2 : chr9 )
#2        3                                               AMLM12001KP ( chr2 : chr20 ), 1123801 ( chr2 : chr20 ), AMLM12020M-B ( chr2 : chr20 )
#3        2                                                                              #AMLM12001KP ( chr4 : chr17 ), 1031901 ( chr4 : chr17 )

如果我需要收集第一列,结果会是什么? 它是仅仅对数据进行分组还是包括一些计算,如等宽度分级。

如果要分箱的元素数量是奇数,会发生什么。我将如何平等地装箱?

2 个答案:

答案 0 :(得分:1)

像@ Anony-Mousse提到的那样,完全并不总是能够在bin中获得相同数量的样本,大约是所需的。

我将引导您完成unique(N)/bins > 0的案例,其中N表示要 binned 的数组中的值。假设

N = [1, 1, 1, 1, 1, 1, 2, 3, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6] bins = 4

此处length(N) = 20length(unique(N)) = 6unique(N)/bins = 1.5 > 0。这意味着每个bin都会有大约1.5个样本。因此,您将1放入 bin1 中,将0.5个残基转移到下一个bin,使该bin中的元素数量为1.5 + 0.5 = 2,因此2并且3将位于 bin2 中。推断这个逻辑,最终的箱子将进行以下拆分。当然[1], [2,3], [4], [5,6] 1重复6次,6重复10次。 我不希望 tie 坐在单独的箱子中,这通常是有箱子的点(分组值彼此接近)。

对于unique(N)/bins < 0的情况,可以应用相同的逻辑。希望这能回答你的问题。

答案 1 :(得分:0)

有时你不能制作完全相同尺寸的垃圾箱。

例如,如果您的数据是

1,1,1,2,99

你需要4个箱子,那么最直观的结果应该是

[1,1,1], [2], [], [99]

大多数工具都会产生以下答案之一:

[1,1,1], [], [2], [99]
[1,1], [1], [2], [99]
[1], [1], [1], [2,99]

他们中没有一个在每个bin中都有1.25个元素。最后两个解决方案最接近,但也最不直观。这就是为什么人们只要求“大约相同的数字”。有时,没有一个好的解决方案确实具有这个频率。