找到解释数据的最类似树的层次结构

时间:2014-11-18 16:36:30

标签: python algorithm numpy pandas machine-learning

考虑以下数据框:

      A  B  C
1    A1 B1 C1
2    A2 B2 C2
3    A3 B1 C1
4    A1 B1 C2
5    A2 B1 C1
6    A1 B4 C2

其中ABC代表属性。我希望推断ABC之间的最可能的层次结构。通过这个,我的意思是找到{A,B,C}的排序,它产生的层次结构具有多个具有多个父节点的节点。

例如,让我们考虑一种分层可能性:

A->B->C

我们注意到它有几个父节点。为了看到这一点,我们发现A1B1B4中的A1 B1 C1 A1 B4 C1共同发生A3。但是,B1 与行3中的A3 B1 C1同时发生A->B->C

换句话说,只关注图的这一部分,如果我们假设层次结构B1,我们就会有一个带有两个父节点的节点{{1}}:

enter image description here

因此,问题是,如果给出如上所述的任意数据帧,我如何找到产生具有多个父节点的最少节点数的列的层次排序?

说明:

此问题有更多变体,例如

  1. 查找具有最少(额外)多父边数的层次结构
  2. 查找边数最少的层次结构
  3. 解决任何这些变种都会很棒。

1 个答案:

答案 0 :(得分:2)

这是您的数据框架的无向图。 Edge(x,y)表示存在一些数据线,以便提到x,y。

例如 - 最后一行" A1,B4,C2和#34;添加边(A1,B4),(B4,C2),(A1,C2)

现在可以根据您的意愿对A,B,C进行排序。

  

查找具有最少(额外)多父边数的层次结构

我们可以强制执行所有安排(N = 8..10非常快)并找到最便宜(最小,最短)的安排。这种树(下面)中的边缘成本可以通过上面显示的图表来计算。

Mb可能会有一些贪婪的方法,喜欢"选择最便宜的当前步骤",我现在不确定,但我很确定这个问题的表现是有前途的。