将群集放入 Excel 图表中

将群集放入 Excel 图表中

我生成的数据集类似于下表。

Label | X | Y | A | 1 | 1 | B | 2 | 2 | B | 3 | 2 | A | 4 | 3 | C | 5 | 4 | A | 4 | 3 | C | 2 | 1 | This list will expand to 1000 of items

此数据集将使用 k-mean 聚类算法生成。因此,我想以聚类的形式在图表中显示我的输出。这些数据将使用另一个 C 语言程序生成。一旦我获得这些数据,我想在 Excel 中将它们绘制为聚类,如下所示,每个聚类使用不同的颜色。你能告诉我我该怎么做吗

在此处输入图片描述

答案1

对于每个集群,在源数据旁边创建一列,并使用此公式在行标签等于列标签时获取 Y 值:

=IF($A2=D$1,$C2,NA())

横向和纵向复制。构建包含三个系列 A、B 和 C 的散点图,所有系列均使用相同的 X 值。

在此处输入图片描述

答案2

我建议使用一个名为好玩 支持Excel中的聚类分析。

它允许人们在 Excel 中编写 JavaScript 和 Python(而不是传统的 VBA 宏)。它还支持外部库。使用此工具,您可以使用任何您喜欢的 JavaScript 库进行数据分析(例如聚类分析)或绘制图表。

为了回答这个问题,该函数以 JSON 数组格式(在设置中定义)接收输入并将其保存到 JavaScript 变量中。然后在它们和电子表格之间创建链接。

在这里我使用CanvasJS和 jQuery 来绘制该图表。Clusterfck.js用于集群进程,核心代码:

var nb_clusters = 4;
// Calculate clusters.
var clusters = clusterfck.kmeans(data, nb_clusters); // data, nb_clusters
var chart = new CanvasJS.Chart("chartContainer", {
  title: {
    text: "Birth and death rate"
  },
  width:500,
  axisX: {
    title: "Birth rate",
    minimum: 0,
    maximum: 60
  },
  axisY: {
    title: "Death rate",
    titleFontSize: 16
  },
  data: [
    {
      type: "scatter",
      markerType: "circle", 
      dataPoints: process(clusters[0])
    },
    {
      type: "scatter",
      markerType: "square", 
      dataPoints: process(clusters[1])
    },
    {
      type: "scatter",
      markerType: "square", 
      dataPoints: process(clusters[2])
    },
    {
      type: "scatter",
      markerType: "cross", 
      dataPoints: process(clusters[3])
    }
  ]
});
chart.render();

以下是截图:

截屏

如您所见,它使用 k=4 的 k 均值聚类。您可以在代码中更改超参数。

关联在线游乐场此功能的使用。截图如下:

截屏

第二个窗格是 Excel 的预览。第三个窗格是编码区域。最后一个窗格是代码的输出。

希望对你有帮助并且玩得开心:)

PS 我是 Funfun 的开发者

相关内容