web-dev-qa-db-ja.com

クラスターを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でクラスターとしてプロットします。どうすればいいのか教えていただけますか

enter image description here

2
Don P.

Excelでのクラスター分析をサポートする Funfun という名前のツールを提案します。

これにより、JavaScriptとPython(従来のVBAマクロではなく)をExcelでコーディングできます。外部ライブラリもサポートされます。このツールを使用すると、データ分析を行うために任意の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();

スクリーンショットは次のとおりです。

screenshot

ご覧のとおり、k = 4のk-meansクラスターを使用しています。コード内のハイパーパラメータを変更できます。

オンライン遊び場のこの機能の リンク 。スクリーンショットは次のとおりです。

screenshot

2番目のペインはExcelのプレビューです。 3番目のペインはコーディング領域です。最後のペインはコードの出力です。

それがお役に立てば幸いです:)

P.S。私はFunfunの開発者です

1
yi liang

クラスターごとに、ソースデータの横に列を作成し、行ラベルが列ラベルと等しい場合は、次の式を使用してY値を取得します。

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

上下にコピーします。 3つのシリーズA、B、Cを使用して散布図を作成します。これらはすべて、同じX値を使用します。

enter image description here

1
teylyn