將聚類放入 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 均值聚類演算法產生。所以我想在圖表中以集群的形式顯示我的輸出。這些數據將使用另一個 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-means 群集。您可以變更程式碼中的超參數。

關聯網上遊樂場的這個功能。截圖如下:

螢幕截圖

第二個窗格是 Excel 的預覽。第三個窗格是編碼區域。最後一個窗格是程式碼的輸出。

希望它有所幫助並玩得開心:)

PS我是Funfun的開發者

相關內容