【发布时间】:2018-06-15 13:03:07
【问题描述】:
我正在尝试对数据集进行一些聚类分析。我正在使用多种不同的方法来估计集群的数量,然后我将每种方法给出的(集群的数量)放在一个列表中,如下所示:
total_pred = [0, 0, 1, 1, 0, 1, 1]
现在我想估计真实的聚类数,所以我让上面的方法投票,例如上面,找到1个聚类的模型多于0个,所以我取1作为真实的聚类数。
我这样做:
counts = np.bincount(np.array(total_pred))
real_nr_of_clusters = np.argmax(counts))
但是,这种方法存在问题。如果上面的列表包含类似:
[2, 0, 1, 0, 1, 0, 1, 0, 1]
我将得到 0 个集群作为平均值,因为 0 重复的频率更高。但是,如果一个模型找到 2 个集群,则可以安全地假设它认为至少存在 1 个集群,因此实数将为 1。
如何通过修改上面的sn-p来做到这一点?
为了让问题更清楚,这里还有几个例子:
[1, 1, 1, 0, 0, 0, 3]
应该返回 1,
[0, 0, 0, 1, 1, 3, 4]
也应该返回 1(因为他们中的大多数人都同意至少有 1 个集群)。
【问题讨论】:
-
我迷路了:
I will get 0 clusters as the average, since 0 is repeated more often. However, if one model found 2 clusters, it's safe to assume it considers at least 1 cluster is there, hence the real number would be 1.,特别是第二句话。澄清一下? -
我们有一篮苹果。我们带了 20 个人,让他们数苹果。有些人会说 1,有些人会说 2(数量相等),两个人说 6 和 9。说 6 和 9 的人,即使他们相距甚远,都同意那里至少有 2 个苹果(因为他们相信还有更多),所以这里的正确投票平均值是 2。
-
您的情况存在逻辑问题。您的条件=>(有多少个集群有 x 或更多)。最后一个列表是 {0:7, 1:4, 3:2, 4:1},所以 0 个集群是最好的。这种逻辑总是产生最少数量的集群。
-
说有 2 个苹果的人,也同意至少有一个苹果。那么,为什么输出不应该是 1? 平均是怎么进来的?
-
[0, 0, 0, 0, 0, 1, 1]的输出是什么?
标签: python-3.x list numpy