Equal - depth binning - 是不是只是将数据分组到 k 组
Posted
技术标签:
【中文标题】Equal - depth binning - 是不是只是将数据分组到 k 组【英文标题】:Equal - depth binning- whether it is just grouping data into k groupsEqual - depth binning - 是否只是将数据分组到 k 组 【发布时间】:2015-12-14 10:07:07 【问题描述】:等深或等频分箱的一个小困惑
等深分箱表示 - 它将范围划分为 N 个区间,每个区间包含大致相同数量的样本
让我们获取一小部分虹膜数据
5.1,3.5,1.4,0.2,Iris-setosa
4.9,3.0,1.4,0.2,Iris-setosa
4.7,3.2,1.3,0.2,Iris-setosa
4.6,3.1,1.5,0.2,Iris-setosa
5.0,3.6,1.4,0.2,Iris-setosa
如果我需要对我的第一列进行装箱,结果会是什么? 无论是只是对数据进行分组,还是包含一些计算,例如等宽分箱。
如果要分箱的元素数量是奇数,会发生什么情况。我将如何平等地分箱?
【问题讨论】:
【参考方案1】:就像@Anony-Mousse 提到的那样,并不总是能够完全在一个 bin 中获得相同数量的样本,大约才是我们想要的。
我将带您了解unique(N)/bins > 0
的情况,其中N
表示要分箱 的数组中的值。假设
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) = 20
和 length(unique(N)) = 6
,生成 unique(N)/bins = 1.5 > 0
。这意味着每个 bin 将大约有 1.5
个样本。所以你将把1
放在bin1中,把0.5个残差带到下一个bin,使那个bin中的元素数量为1.5 + 0.5 = 2
,所以2
和3
将是在 bin2 中。推断这个逻辑,最终的 bin 将具有以下拆分。 [1], [2,3], [4], [5,6]
当然 1
重复 6 次,6
重复 10 次。
我不希望 ties 放在单独的垃圾箱中,这通常是拥有垃圾箱的关键(将值分组彼此接近)。
对于unique(N)/bins < 0
的情况,可以应用相同的逻辑。希望这能回答你的问题。
【讨论】:
【参考方案2】:有时您无法制作完全相同大小的垃圾箱。
例如,如果您的数据是
1,1,1,2,99
而你想要 4 个 bin,那么最直观的结果应该是
[1,1,1], [2], [], [99]
大多数工具都会产生以下答案之一:
[1,1,1], [], [2], [99]
[1,1], [1], [2], [99]
[1], [1], [1], [2,99]
没有一个在每个 bin 中正好有 1.25 个元素。最后两个解决方案最接近,但也是最不直观的。这就是为什么一个人只要求“大约相同的数字”。有时,没有好的解决方案恰好具有这种频率。
【讨论】:
假设我有 4 个垃圾箱。从您提到的答案来看,数据是这样的“[1,1,1],[2],[],[99]”,那么我们如何将元素放入这些垃圾箱中?有什么方程式吗? 好的。如果我有 8 个元素要分箱到 4 个箱中。然后我需要对数据进行排序并删除元素。不是吗?例如:4,2,1,8,0,9,5,5 排序--> 0,1,2,4,5,5,8,9 ;所以垃圾箱就像 [0,1] [2,4] [5,5] [8,9] 。对吗? 分位数分箱是一种方法,但在处理 ties 的方式上仍然会有所不同。解决方案 [0,1,2][4,5,5][][8,9] 也同样好,只是使用了不同的逻辑。以上是关于Equal - depth binning - 是不是只是将数据分组到 k 组的主要内容,如果未能解决你的问题,请参考以下文章
外显子分析报错解决方案bin field of BAM record does not equal value computed based on alignment start and end, a
关于在2.7中出现 "UnicodeWarning: Unicode equal comparison failed to convert both arguments to Unicode
Linux shell :两字符串比较。 输入两不同字符串,结果确显示:the two string are equal!! 郁闷。。。。