首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Elki创建Dendrogram

用Elki创建Dendrogram
EN

Stack Overflow用户
提问于 2019-08-21 13:21:57
回答 1查看 231关注 0票数 0

我想绘制一个聚类结果的树状图。现在,我正在使用Elki0.7.5中的ElkiBuilder进行集群。

在最好的情况下,我想直接绘制一个树状图。

如果不可能,我想从集群中提取信息(距离),以便与另一个库创建树状图(例如。使用newick格式)

因此,我的问题是:

  • 有可能用ELKI创建树状图吗?
  • 是否可以访问群集期间计算的距离?(两个集群合并时使用的距离)

现在,我正在使用以下代码进行集群:

代码语言:javascript
复制
public Clustering<?> createClustering() {
    double[][] distanceMatrix = new double[][]{
            {0.0, 1.0, 3.0},
            {1.0, 0.0, 4.0},
            {3.0, 4.0, 0.0}
    };
    int noOfClusters = 2;
    // Adapter to load data from an existing array.
    DatabaseConnection dbc = new ArrayAdapterDatabaseConnection(distanceMatrix);
    // Create a database (which may contain multiple relations!)
    Database db = new StaticArrayDatabase(dbc, null);
    // Load the data into the database (do NOT forget to initialize...)
    db.initialize();

    Clustering<?> clustering = new ELKIBuilder<>(CutDendrogramByNumberOfClusters.class) //
            .with(CutDendrogramByNumberOfClusters.Parameterizer.MINCLUSTERS_ID, noOfClusters) //
            .with(AbstractAlgorithm.ALGORITHM_ID, AnderbergHierarchicalClustering.class) //
            .with(AGNES.Parameterizer.LINKAGE_ID, WardLinkage.class)
            .build().run(db);
    return clustering;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-22 09:01:10

AGNES类(相反,我建议使用AnderbergHierarchicalClustering,它要快得多,但给出完全相同的结果)以一个名为“指针层次结构”(PointerHierarchyRepresentationResult)的标准形式返回集群。高度h处的i和j的合并表示为从i到j的指针,其中h是高度。之后,j表示合并的集群。这种基本形式是由Sibson等人介绍的。1973年的SLINK算法。

特别是,它包含y信息(getParentDistanceStore),即合并(由getParentStore提供),它可以计算出排列点的顺序,以便进行可视化getPositions

您可能想看看DendrogramVisualization的代码,它负责在GUI中创建SVG树状图。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57592693

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档