Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 查找解释数据的最像树的层次结构_Python_Algorithm_Numpy_Pandas_Machine Learning - Fatal编程技术网

Python 查找解释数据的最像树的层次结构

Python 查找解释数据的最像树的层次结构,python,algorithm,numpy,pandas,machine-learning,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 其中A,B和C表示属性。我希望能推断出A、B和C之间最有可能的层次结构。这里,我的意思是找到{A,B,C}的顺序,该顺序产生一个层次结构,该层次结构具有最少数量的节点和多个父节点 例如,让我们考虑一个层次的可能性: A->B->C 我们注意到它有多个父节点。为了看到这一

考虑以下数据帧:

      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
其中
A
B
C
表示属性。我希望能推断出
A
B
C
之间最有可能的层次结构。这里,我的意思是找到
{A,B,C}
的顺序,该顺序产生一个层次结构,该层次结构具有最少数量的节点和多个父节点

例如,让我们考虑一个层次的可能性:

A->B->C
我们注意到它有多个父节点。为了看到这一点,我们观察到
A1
B1
B4
在组合
A1 B1 C1
A1 B4 C1
中同时出现。但是,
A3
也与
B1
一起出现在
3
行中,与
A3 B1 C1
一起出现

换句话说,仅关注图的这一部分,如果我们假设层次结构
A->B->C
,我们将有一个节点
B1
,有两个父节点:

因此,问题是,给定一个像上面这样的任意数据帧,如何才能找到列的层次顺序,从而产生具有多个父节点的节点数最少

笔记: 此问题有更多变体,例如

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

  • 解决这些变体中的任何一个都会很好。

    这是带有数据帧的无向图。Edge(x,y)表示存在一些数据线,因此x,y都被提及

    例如,最后一行“A1,B4,C2”添加了边(A1,B4),(B4,C2),(A1,C2)

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

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

    我们可以强行执行所有的安排(对我们来说很快),然后找到最便宜(最小、最短)的。这种树(下图)中的边缘成本可以通过上图计算


    Mb可能有一些贪婪的方法,比如“选择当前步骤上最便宜的”,我现在不确定,但我很确定这个问题的表示是前瞻性的。

    这些不是周期。它只是一个节点
    B1
    ,有多个父节点。@cheper很公平。“最树状”问题当然有几种变体可以表述(例如,
    具有多个父节点的节点数最少
    ,或
    父到子边数最少
    )。我重新编写了这篇文章来纠正这一点,并选择了一篇我认为最能抓住我手头问题的文章。谢谢。你是如何从第一张图中得到第二张图的?(即算法)。@user815423426我没有。第二张图只是问题“强行执行所有可能的安排(ABC、ACB、BAC、BCA、CAB、CBA)”的表示。但边的成本(多父边的数量)应该由第一个图计算(以选择最佳排列)。