Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Número de Cluster

No meu código apesar do gráfico mostrar 3 cluster quando executo cluster_media.T só mostra o cluster 0 e 1.

após

cluster_media = cluster_media.transpose()

cluster_media.columns = [0,1,2]

dá erro

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
Cell In[40], line 3
      1 cluster_media = cluster_media.transpose()
----> 3 cluster_media.columns = [0,1,2]

File d:\Python312\Lib\site-packages\pandas\core\generic.py:6313, in NDFrame.__setattr__(self, name, value)
   6311 try:
   6312     object.__getattribute__(self, name)
-> 6313     return object.__setattr__(self, name, value)
   6314 except AttributeError:
   6315     pass

File properties.pyx:69, in pandas._libs.properties.AxisProperty.__set__()

File d:\Python312\Lib\site-packages\pandas\core\generic.py:814, in NDFrame._set_axis(self, axis, labels)
    809 """
    810 This is called from the cython code when we set the `index` attribute
    811 directly, e.g. `series.index = [1, 2, 3]`.
    812 """
    813 labels = ensure_index(labels)
--> 814 self._mgr.set_axis(axis, labels)
    815 self._clear_item_cache()

File d:\Python312\Lib\site-packages\pandas\core\internals\managers.py:238, in BaseBlockManager.set_axis(self, axis, new_labels)
    236 def set_axis(self, axis: AxisInt, new_labels: Index) -> None:
    237     # Caller is responsible for ensuring we have an Index object.
--> 238     self._validate_set_axis(axis, new_labels)
    239     self.axes[axis] = new_labels

File d:\Python312\Lib\site-packages\pandas\core\internals\base.py:98, in DataManager._validate_set_axis(self, axis, new_labels)
     95     pass
     97 elif new_len != old_len:
---> 98     raise ValueError(
     99         f"Length mismatch: Expected axis has {old_len} elements, new "
    100         f"values have {new_len} elements"
    101     )

ValueError: Length mismatch: Expected axis has 2 elements, new values have 3 elements

mas se executar

cluster_media = cluster_media.transpose()

cluster_media.columns = [0,1]

não dá erro. Porque não está considerando o cluster 3?

Garanta sua matrícula hoje e ganhe + 2 meses grátis

Continue sua jornada tech com ainda mais tempo para aprender e evoluir

Quero aproveitar agora
1 resposta
solução!

Oi Marco, tudo bem?

O erro "Length mismatch: Expected axis has 2 elements, new values have 3 elements" indica que o DataFrame cluster_media possui apenas duas colunas, mas você está tentando renomeá-las para três (0, 1, 2). Isso sugere que o modelo KMeans encontrou apenas dois clusters, em vez dos três esperados.

Peço que verifique se o modelo KMeans foi configurado corretamente para gerar três clusters. O trecho abaixo deve estar presente e executado sem erros:

modelo_kmeans = KMeans(n_clusters=3, random_state=45, n_init='auto')

Além disso, recomendo revisar o código que foi rodado antes da ocorrência do erro. Você pode usar o notebook abaixo como referência para comparação:

Outra dica é reiniciar a sessão do Google Colab e executar todo o código novamente. Para isso:

  1. No menu superior, clique em “Ambiente de execução”.
  2. Selecione a opção “Reiniciar sessão e executar tudo”.

A imagem abaixo mostra exatamente onde encontrar essa opção:

Reiniciar sessão e executar tudo no Google Colaboratory

Espero ter ajudado!

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!