我想使用K最近邻方法从数据集中检索最接近树的输入树。树中的节点具有值,但每棵树中的分支没有标签。
例如:
树1:(S(V c) (N(P y)) (V(V o) (N(D t)(N d))))
树2 :( S. (V(V p) (P(R o)) (N(D t)(N d))))
我想使用k最近邻居来解决这个问题。您是否有任何想法将此方法用于此问题?
答案 0 :(得分:2)
您必须为树应用KNN
算法定义距离度量。树可以使用许多可能的矩阵,其中一个最受欢迎的选择是树编辑距离
(How do I calculate tree edit distance?)
KNN 不是搜索算法。它不用于查找最近的对象,而是 - 将对象分类到预定义标签之一。它只搜索给定点X的K个最近邻居,并返回具有大多数邻居的标签。
为了找到最近的树,假设您已经定义了TED
(树编辑距离),只需遍历tree
中的所有trees
并选择最小化TED(tree,X)
的树{} {1}}。
有关树编辑距离的非常好的资源也位于此处: http://www.inf.unibz.it/dis/projects/tree-edit-distance/tree-edit-distance.php