如何在R中创建簇图?

如何在R中创建簇图?,r,plot,cluster-analysis,R,Plot,Cluster Analysis,如何在R中创建簇图而不使用 我试图掌握一些集群(使用R)和可视化(使用HTML5画布) 基本上,我想创建一个图形,但不是绘制数据,我想得到一组二维点或坐标,我可以把它们拉到画布上,然后做一些可能非常有用的事情(但我不确定如何做)。我可以想象我: 为整个数据集创建相似性矩阵(使用dist) 使用kmeans或类似的方法(使用kmeans)对相似性矩阵进行聚类 使用MDS或PCA绘制结果-但我不确定步骤2和步骤3之间的关系(cmdscale) 我已经检查了问题,并且(最后一个是最有用的) 你的意思是

如何在R中创建簇图而不使用

我试图掌握一些集群(使用R)和可视化(使用HTML5画布)

基本上,我想创建一个图形,但不是绘制数据,我想得到一组二维点或坐标,我可以把它们拉到画布上,然后做一些可能非常有用的事情(但我不确定如何做)。我可以想象我:

  • 为整个数据集创建相似性矩阵(使用dist)
  • 使用kmeans或类似的方法(使用kmeans)对相似性矩阵进行聚类
  • 使用MDS或PCA绘制结果-但我不确定步骤2和步骤3之间的关系(cmdscale)
    我已经检查了问题,并且(最后一个是最有用的)

    你的意思是这样的吗? 对不起,我对HTML5画布一无所知,只知道R。。。但我希望它能帮助

    首先,我使用kmeans对数据进行聚类(注意,我没有对距离矩阵进行聚类),然后计算距离matix并使用cmdscale绘制它。然后,我将颜色添加到MDS图中,这些颜色对应于kmeans标识的组。加上一些漂亮的附加图形功能

    可以从cmdscale创建的对象访问坐标

    ### some sample data
    require(vegan)
    data(dune)
    
    # kmeans
    kclus <- kmeans(dune,centers= 4, iter.max=1000, nstart=10000)
    
    # distance matrix
    dune_dist <- dist(dune)
    
    # Multidimensional scaling
    cmd <- cmdscale(dune_dist)
    
    # plot MDS, with colors by groups from kmeans
    groups <- levels(factor(kclus$cluster))
    ordiplot(cmd, type = "n")
    cols <- c("steelblue", "darkred", "darkgreen", "pink")
    for(i in seq_along(groups)){
      points(cmd[factor(kclus$cluster) == groups[i], ], col = cols[i], pch = 16)
    }
    
    # add spider and hull
    ordispider(cmd, factor(kclus$cluster), label = TRUE)
    ordihull(cmd, factor(kclus$cluster), lty = "dotted")
    
    ###一些示例数据
    要求(素食主义者)
    数据(沙丘)
    #kmeans
    
    kclus在这里,您可以在“clusplot”包中找到一个用于分析聚类结果的图形“坐标图”

    它不是基于主成分分析的。它使用function scale将所有变量的平均值设置在0到1的范围内,因此您可以比较哪个集群拥有每个变量的最大/最小平均值

    install.packages("devtools") ## To be able to download packages from github
    library(devtools)
    install_github("pablo14/clusplus")
    library(clusplus)
    
    ## Create k-means model with 3 clusters
    fit_mtcars=kmeans(mtcars,3)
    
    ## Call the function
    plot_clus_coord(fit_mtcars, mtcars)
    

    解释如何使用它。

    谢谢@EDi,这真是太棒了。所以,为了澄清这一点,您需要进行聚类,然后构建一个相似的matirx。然后使用MDS在二维中定位点,然后根据点与簇的关系为点着色。明亮的如果你有机会,你能解释一下这是做什么的吗:小组看我的编辑。groups只是一个包含组名称的对象,仅用于for-loop。好的,我看到您的编辑。最后一个问题,你能对距离矩阵进行聚类吗?还是这是一个疯狂的举动?对不起,我现在正在学习,只是在工作。