Colocando clusters em um gráfico do Excel

Colocando clusters em um gráfico do Excel

Eu tenho um conjunto de dados gerado semelhante à tabela a seguir.

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

Este conjunto de dados será gerado usando o algoritmo de cluster k-mean. Então, quero mostrar minha saída em um gráfico, como clusters. Esses dados serão gerados utilizando outro programa em linguagem C. Depois de obter esses dados, quero plotá-los no Excel como clusters, conforme mostrado abaixo, em cores diferentes para cada cluster. Você pode me dizer como posso fazer isso

insira a descrição da imagem aqui

Responder1

Para cada cluster, crie uma coluna próxima aos dados de origem e use esta fórmula para obter o valor Y se o rótulo da linha for igual ao rótulo da coluna:

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

Copie para cima e para baixo. Construa um gráfico de dispersão com as três séries A, B e C, todas usando os mesmos valores de X.

insira a descrição da imagem aqui

Responder2

Eu proponho uma ferramenta chamadaDivertido, divertido que suporta análise de cluster no Excel.

Ele permite que as pessoas codifiquem JavaScript e Python (em vez de macros VBA clássicas) no Excel. Ele também oferece suporte a bibliotecas externas. Com esta ferramenta, você pode usar qualquer biblioteca JavaScript que desejar para fazer análise de dados (por exemplo, análise de cluster) ou para traçar gráficos.

Para responder à pergunta, a função recebe entradas no formato de array JSON (definido nas configurações) e as salva em uma variável JavaScript. E então cria um link entre eles e as planilhas.

Aqui eu usoCanvasJSe jQuery para traçar este gráfico.Clusterfck.jsé usado para o processo de cluster. O código principal:

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();

Aqui está a captura de tela:

captura de tela

Como você pode ver, ele usa cluster k-means com k=4. Você pode alterar os hiperparâmetros no código.

Olinkdesta função de playground online. A captura de tela é a seguinte:

captura de tela

O segundo painel é uma visualização do Excel. O terceiro painel é a área de codificação. O último painel é a saída do código.

Espero que ajude e divirta-se :)

PS: sou desenvolvedor do Funfun

informação relacionada